@santi020k/lumen-react 1.6.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -11,12 +11,23 @@ Lumen stylesheet.
11
11
  pnpm add @santi020k/lumen-react
12
12
  ```
13
13
 
14
+ The adapter also exposes Lumen's discovery and diagnostics CLI:
15
+
16
+ ```bash
17
+ pnpm exec lumen show Tabs
18
+ pnpm exec lumen doctor
19
+ ```
20
+
14
21
  Load the shared stylesheet once from your app entry or global CSS.
15
22
 
16
23
  ```tsx
17
- import '@santi020k/lumen-react/styles.css'
24
+ import "@santi020k/lumen-react/styles.css";
18
25
  ```
19
26
 
27
+ For an essential application shell using forms, feedback, tabs, dialogs, calendar, and DataTable,
28
+ import `@santi020k/lumen-react/styles/critical.css` instead. It is generated from the canonical
29
+ stylesheet and remains materially smaller than the complete catalog.
30
+
20
31
  The stylesheet defaults `--ui-font` to `"Montserrat", "Avenir Next", "Segoe UI", sans-serif`.
21
32
  It declares the family stack but does not bundle or load font files. Load Montserrat once through
22
33
  your preferred delivery path, or override `--ui-font` in application CSS.
@@ -24,7 +35,7 @@ your preferred delivery path, or override `--ui-font` in application CSS.
24
35
  ## Usage
25
36
 
26
37
  ```tsx
27
- import { Button, Card, Input } from '@santi020k/lumen-react'
38
+ import { Button, Card, Input } from "@santi020k/lumen-react";
28
39
 
29
40
  export function SubscribeForm() {
30
41
  return (
@@ -33,10 +44,22 @@ export function SubscribeForm() {
33
44
  <Input id="email" type="email" placeholder="you@example.com" />
34
45
  <Button>Subscribe</Button>
35
46
  </Card>
36
- )
47
+ );
37
48
  }
38
49
  ```
39
50
 
51
+ `PhoneInput` supports a controlled international phone model while preserving the legacy custom
52
+ country-option API:
53
+
54
+ ```tsx
55
+ const colombia = getLumenPhoneCountry('CO', { locale: 'en-US' })
56
+ if (!colombia) throw new Error('Missing Colombia metadata')
57
+
58
+ const [phone, setPhone] = useState(() => createEmptyLumenPhoneNumber(colombia))
59
+
60
+ <PhoneInput value={phone} onValueChange={setPhone} locale="en-US" />
61
+ ```
62
+
40
63
  ## Dropdown menus
41
64
 
42
65
  Compose dropdown menus from the public trigger, content, item, and separator parts. Items close the
@@ -49,8 +72,8 @@ import {
49
72
  DropdownMenuContent,
50
73
  DropdownMenuItem,
51
74
  DropdownMenuSeparator,
52
- DropdownMenuTrigger
53
- } from '@santi020k/lumen-react'
75
+ DropdownMenuTrigger,
76
+ } from "@santi020k/lumen-react";
54
77
 
55
78
  <DropdownMenu>
56
79
  <DropdownMenuTrigger>Download</DropdownMenuTrigger>
@@ -58,9 +81,11 @@ import {
58
81
  <DropdownMenuItem>macOS</DropdownMenuItem>
59
82
  <DropdownMenuItem>Windows</DropdownMenuItem>
60
83
  <DropdownMenuSeparator />
61
- <DropdownMenuItem disabled status="Soon">Android</DropdownMenuItem>
84
+ <DropdownMenuItem disabled status="Soon">
85
+ Android
86
+ </DropdownMenuItem>
62
87
  </DropdownMenuContent>
63
- </DropdownMenu>
88
+ </DropdownMenu>;
64
89
  ```
65
90
 
66
91
  ## Language selection
@@ -113,6 +138,23 @@ without wrapping or changing the resolver contract.
113
138
 
114
139
  See the [forms guide](https://lumen.santi020k.com/docs/forms/react-hook-form) for typed examples.
115
140
 
141
+ ## Error states
142
+
143
+ Use `ErrorState` as a visible fallback when a page or region cannot show its primary content. It can
144
+ be rendered by an application or router error boundary, but Lumen does not catch exceptions, log
145
+ diagnostics, or decide whether retrying is safe.
146
+
147
+ ```tsx
148
+ <ErrorState
149
+ actions={<Button onClick={reload}>Try again</Button>}
150
+ description="Check your connection and try again."
151
+ title="Could not load projects"
152
+ />
153
+ ```
154
+
155
+ See the repository [React error-handling guide](../../docs/error-handling.md#react) for the complete
156
+ example, error-boundary ownership, announcement behavior, and verification guidance.
157
+
116
158
  For long articles, `Anchor` accepts optional `depth`, `index`, and `description` metadata plus an
117
159
  `activationOffset`. It synchronizes the current link on click and scroll. `ScrollProgress` tracks
118
160
  the document without requiring a separate hook.
@@ -131,15 +173,22 @@ Use `CopyButton` for clipboard actions on generated names, descriptions, message
131
173
  either a `value` or a `target` selector; `toast` opts into Lumen Toast feedback.
132
174
 
133
175
  ```tsx
134
- <CopyButton value="https://lumen.santi020k.com" toast>Copy link</CopyButton>
176
+ <CopyButton value="https://lumen.santi020k.com" toast>
177
+ Copy link
178
+ </CopyButton>
135
179
  ```
136
180
 
137
181
  ## Data visualization
138
182
 
139
- `Sparkline`, `BarChart`, `LineChart`, and `PieChart` use the shared `LumenChartSeries` contract and
183
+ `Sparkline`, `BarChart`, `LineChart`, `PieChart`, `ScatterChart`, `Heatmap`, `RangeChart`, and
184
+ `ComboChart` use the shared chart contracts and
140
185
  render without an external charting dependency. Data charts expose a revealable semantic table by
141
186
  default. `PieChart` accepts one series and defaults to a donut presentation.
142
187
 
188
+ Every chart includes a factual screen-reader summary by default and accepts `summary` for more
189
+ useful domain context. See [data visualization](../../docs/data-visualization.md) for selection,
190
+ missing-data, live-data, and accessibility guidance.
191
+
143
192
  ```tsx
144
193
  import { LineChart } from '@santi020k/lumen-react'
145
194
 
@@ -161,7 +210,7 @@ the server runtime.
161
210
 
162
211
  ```tsx
163
212
  // app/page.tsx — this file remains a Server Component.
164
- import { Badge, Card } from '@santi020k/lumen-react'
213
+ import { Badge, Card } from "@santi020k/lumen-react";
165
214
 
166
215
  export default function Page() {
167
216
  return (
@@ -169,13 +218,37 @@ export default function Page() {
169
218
  <Badge>Ready</Badge>
170
219
  Server-rendered page content
171
220
  </Card>
172
- )
221
+ );
173
222
  }
174
223
  ```
175
224
 
176
225
  This boundary is specific to React environments that recognize the `"use client"` directive.
177
226
  Other React applications continue to consume the same package and exports normally.
178
227
 
228
+ For stateless primitives that should execute directly in a React Server Component, use the
229
+ server-safe entrypoint:
230
+
231
+ ```tsx
232
+ import { Badge, Progress, Skeleton } from "@santi020k/lumen-react/server";
233
+
234
+ export default function Status() {
235
+ return (
236
+ <section>
237
+ <Badge variant="success">Ready</Badge>
238
+ <Progress aria-label="Migration progress" value={72} />
239
+ <Skeleton aria-label="Loading activity" />
240
+ </section>
241
+ );
242
+ }
243
+ ```
244
+
245
+ The server entrypoint contains Badge, Card and its compound parts, Container, Direction, Grid,
246
+ Input, Label, Progress, Separator, Skeleton, Spinner, Stack, Textarea, Typography, and
247
+ VisuallyHidden plus the component-name metadata. The package root reuses those exact
248
+ implementations and remains the full client catalog. Import interactive primitives, hooks, or
249
+ stateless primitives that receive event handlers from the root entrypoint inside a Client
250
+ Component.
251
+
179
252
  ## Compatibility wrappers
180
253
 
181
254
  The common wrapper primitives preserve their underlying DOM handles with React 19's ref-as-prop
@@ -211,29 +284,35 @@ product, or workspace. Pass the stable selector or identity through `context` an
211
284
  related links with one independently named `NavigationMenu`. Long link sets scroll horizontally.
212
285
 
213
286
  ```tsx
214
- import { ContextNavigation, NativeSelect, NavigationMenu } from '@santi020k/lumen-react'
287
+ import {
288
+ ContextNavigation,
289
+ NativeSelect,
290
+ NavigationMenu,
291
+ } from "@santi020k/lumen-react";
215
292
 
216
293
  <ContextNavigation
217
- context={(
294
+ context={
218
295
  <NativeSelect aria-label="Documentation platform" visualSize="sm">
219
296
  <option>Web</option>
220
297
  <option>Apple</option>
221
298
  <option>Android</option>
222
299
  </NativeSelect>
223
- )}
300
+ }
224
301
  >
225
302
  <NavigationMenu aria-label="Web documentation" variant="unstyled">
226
- <a href="/docs/web" aria-current="page">Overview</a>
303
+ <a href="/docs/web" aria-current="page">
304
+ Overview
305
+ </a>
227
306
  <a href="/docs/components">Components</a>
228
307
  <a href="/docs/web/playground">Playground</a>
229
308
  </NavigationMenu>
230
- </ContextNavigation>
309
+ </ContextNavigation>;
231
310
  ```
232
311
 
233
312
  Use `Icon` for Lucide icons by name across framework adapters.
234
313
 
235
314
  ```tsx
236
- import { Button, Icon } from '@santi020k/lumen-react'
315
+ import { Button, Icon } from "@santi020k/lumen-react";
237
316
 
238
317
  export function SettingsButton() {
239
318
  return (
@@ -241,7 +320,7 @@ export function SettingsButton() {
241
320
  <Icon name="wand-sparkles" decorative />
242
321
  Generate
243
322
  </Button>
244
- )
323
+ );
245
324
  }
246
325
  ```
247
326
 
@@ -252,8 +331,8 @@ Next keeps control of image sizing, format negotiation, caching, placeholders, a
252
331
  Lumen supplies its presentation class.
253
332
 
254
333
  ```tsx
255
- import NextImage from 'next/image'
256
- import { Image as LumenImage } from '@santi020k/lumen-react'
334
+ import NextImage from "next/image";
335
+ import { Image as LumenImage } from "@santi020k/lumen-react";
257
336
 
258
337
  <LumenImage
259
338
  alt="Team collaborating around a table"
@@ -262,7 +341,7 @@ import { Image as LumenImage } from '@santi020k/lumen-react'
262
341
  sizes="(max-width: 768px) 100vw, 50vw"
263
342
  src="/team.jpg"
264
343
  width={1200}
265
- />
344
+ />;
266
345
  ```
267
346
 
268
347
  Keep the default lazy loading for images below the fold. For the single likely LCP image, follow
@@ -273,13 +352,13 @@ artwork authored for light surfaces; leave it off for photos and colorful illust
273
352
  name on the SVG itself.
274
353
 
275
354
  ```tsx
276
- import { AnimatedLogo } from '@santi020k/lumen-react'
355
+ import { AnimatedLogo } from "@santi020k/lumen-react";
277
356
 
278
- <AnimatedLogo style={{ height: '3rem' }}>
357
+ <AnimatedLogo style={{ height: "3rem" }}>
279
358
  <svg aria-label="Acme" role="img" viewBox="0 0 120 32">
280
359
  {/* Your logo artwork */}
281
360
  </svg>
282
- </AnimatedLogo>
361
+ </AnimatedLogo>;
283
362
  ```
284
363
 
285
364
  For a choreographed logo, set `animation="sequence"` and mark individual SVG layers with
@@ -290,15 +369,20 @@ React is Lumen's visual adapter layer plus headless behavior hooks. The componen
290
369
  `ui-*` classes and `data-ui-*` attributes as Astro, while hooks such as `useDialog`, `usePopover`,
291
370
  `useDropdownMenu`, `useContextMenu`, `useTabs`, `useSelect`, `useFormValidation`, `useCalendar`,
292
371
  `useInputOTP`, `useDateRangePicker`, `useRichTextEditor`, `useSchedule`, `useThemeBuilder`,
293
- `useResizable`, `useToast`, and
294
- `useTooltip` track the Astro runtime's ARIA, keyboard, Escape, dismissal, context menu, form
372
+ `useKanban`, `useResizable`, `useThemeToggle`, `useToast`, and `useTooltip` track the Astro runtime's
373
+ ARIA, keyboard, Escape, dismissal, context menu, form
295
374
  validation, calendar grids, OTP segmentation, date range syncing, rich text command, schedule
296
- drag/drop, theme export, resizable pane sizing, and toast controller semantics for React
297
- applications.
375
+ drag/drop, controlled Kanban move requests, theme export and switching, resizable pane sizing, and
376
+ toast controller semantics for React applications.
298
377
  `useRichTextEditor` also provides `getEditableProps`, value-bearing commands, common formatting
299
378
  shortcuts, active toolbar state, and `{ html, text }` change details.
300
- `DataTable` can render structured `columns` and `rows` with the same selectable/sortable data
301
- attributes, and `VirtualList` exposes the shared range sizing attributes for app-level adapters.
379
+ `DataTable` can render structured `columns` and `rows`; sortable columns use native header buttons,
380
+ update `aria-sort`, and order string or numeric values without mutating the supplied rows. The
381
+ shared selectable/sortable data attributes remain available for app-level adapters, and
382
+ `VirtualList` exposes the shared range sizing attributes.
383
+ `useTabs` keeps the selected trigger visible when a narrow horizontal list scrolls. The package
384
+ also exports `LumenTabsChangeDetail` and `LumenTabsChangeEvent` for integrations that consume the
385
+ shared `ui:tabs-change` contract.
302
386
 
303
387
  ## Kanban boards
304
388
 
package/bin/lumen.mjs ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import '@santi020k/lumen/cli'
@@ -0,0 +1,2 @@
1
+ export declare const formatReactChartTableValue: (value: number | null | undefined, formatValue: (value: number) => string) => string;
2
+ //# sourceMappingURL=chart-recipes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart-recipes.d.ts","sourceRoot":"","sources":["../src/chart-recipes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,GACrC,OAAO,MAAM,GAAG,IAAI,GAAG,SAAS,EAChC,aAAa,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,KACrC,MAEiB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export const formatReactChartTableValue = (value, formatValue) => value === null || value === undefined || !Number.isFinite(value) ?
2
+ 'Not available' :
3
+ formatValue(value);
@@ -1,12 +1,12 @@
1
1
  import type { ComponentPropsWithoutRef, ComponentPropsWithRef, CSSProperties, ElementType, HTMLAttributes, ReactNode, Ref } from 'react';
2
- import { type LumenBarChartLayout, type LumenChartOrientation, type LumenChartSeries, type LumenChartTone, type LumenFormErrorInput, type LumenFormStatus, type LumenIconName, type LumenPieChartVariant } from '@santi020k/lumen-core';
3
- import { type DialogOptions, type DropdownMenuOptions, type LanguageToggleOptions, type PopoverOptions, type ResizableDirection, type SelectOptions, type TabsOptions, type TooltipOptions } from './hooks.js';
2
+ import { type LumenBarChartLayout, type LumenChartOrientation, type LumenChartScaleType, type LumenChartSeries, type LumenChartTone, type LumenComboSeries, type LumenErrorStateAnnouncement, type LumenErrorStateKind, type LumenErrorStateLayout, type LumenFormErrorInput, type LumenFormStatus, type LumenHeatmapDatum, type LumenIconName, type LumenPhoneCountry, type LumenPhoneCountryOptions, type LumenPhoneNumber, type LumenPieChartVariant, type LumenRangeDatum } from '@santi020k/lumen-core';
3
+ import { type DialogOptions, type DropdownMenuOptions, type LanguageToggleOptions, type PopoverOptions, type ResizableDirection, type SelectOptions, type TabsOptions, type ToastPlacement, type TooltipOptions } from './hooks.js';
4
+ import { type InputProps } from './server-components.js';
5
+ export { Badge, type BadgeProps, Card, CardContent, type CardContentProps, CardDescription, type CardDescriptionProps, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, type CardProps, CardTitle, type CardTitleProps, Container, type ContainerProps, Direction, type DirectionProps, Grid, type GridProps, Input, type InputProps, Label, type LabelProps, Progress, type ProgressProps, Separator, type SeparatorProps, Skeleton, type SkeletonProps, Spinner, type SpinnerProps, Stack, type StackProps, Textarea, type TextareaProps, Typography, type TypographyProps, VisuallyHidden, type VisuallyHiddenProps } from './server-components.js';
4
6
  type AlertVariant = 'default' | 'destructive' | 'success' | 'warning';
5
7
  type AccordionVariant = 'default' | 'flush';
6
- type BadgeVariant = AlertVariant | 'outline' | 'secondary';
7
8
  type ButtonSize = 'default' | 'icon' | 'lg' | 'sm';
8
9
  type ButtonVariant = 'default' | 'destructive' | 'ghost' | 'link' | 'outline' | 'secondary';
9
- type CardVariant = 'default' | 'glass' | 'interactive' | 'muted' | 'unstyled';
10
10
  type CodeTheme = 'auto' | 'lumen' | 'santi020k';
11
11
  type CodeVariant = 'block' | 'inline';
12
12
  type IconSize = 'default' | 'lg' | 'sm' | 'xl';
@@ -80,10 +80,6 @@ export interface AvatarProps extends ComponentPropsWithRef<'span'> {
80
80
  src?: string;
81
81
  }
82
82
  export declare const Avatar: ({ alt, children, className, fallback, src, ...props }: AvatarProps) => import("react").JSX.Element;
83
- export interface BadgeProps extends ComponentPropsWithRef<'span'> {
84
- variant?: BadgeVariant;
85
- }
86
- export declare const Badge: ({ className, variant, ...props }: BadgeProps) => import("react").JSX.Element;
87
83
  export type BreadcrumbProps = ComponentPropsWithoutRef<'nav'>;
88
84
  export declare const Breadcrumb: ({ "aria-label": ariaLabel, className, ...props }: BreadcrumbProps) => import("react").JSX.Element;
89
85
  export interface BubbleProps extends ComponentPropsWithoutRef<'article'> {
@@ -113,22 +109,6 @@ export interface CalendarProps extends ComponentPropsWithoutRef<'div'> {
113
109
  value?: string | undefined;
114
110
  }
115
111
  export declare const Calendar: ({ className, defaultValue, disabled, glass, locale, max, min, month, name, onValueChange, value, ...props }: CalendarProps) => import("react").JSX.Element;
116
- export type CardProps<T extends ElementType = 'div'> = LumenPrimitiveProps<T> & {
117
- 'data-variant'?: CardVariant;
118
- glass?: LumenGlassProp;
119
- variant?: CardVariant;
120
- };
121
- export declare const Card: <T extends ElementType = "div">({ as, className, glass, variant, ...props }: CardProps<T>) => import("react").JSX.Element;
122
- export type CardHeaderProps<T extends ElementType = 'div'> = LumenPrimitiveProps<T>;
123
- export declare const CardHeader: <T extends ElementType = "div">({ as, ...props }: CardHeaderProps<T>) => import("react").JSX.Element;
124
- export type CardTitleProps<T extends ElementType = 'div'> = LumenPrimitiveProps<T>;
125
- export declare const CardTitle: <T extends ElementType = "div">({ as, ...props }: CardTitleProps<T>) => import("react").JSX.Element;
126
- export type CardDescriptionProps<T extends ElementType = 'div'> = LumenPrimitiveProps<T>;
127
- export declare const CardDescription: <T extends ElementType = "div">({ as, ...props }: CardDescriptionProps<T>) => import("react").JSX.Element;
128
- export type CardContentProps<T extends ElementType = 'div'> = LumenPrimitiveProps<T>;
129
- export declare const CardContent: <T extends ElementType = "div">({ as, ...props }: CardContentProps<T>) => import("react").JSX.Element;
130
- export type CardFooterProps<T extends ElementType = 'div'> = LumenPrimitiveProps<T>;
131
- export declare const CardFooter: <T extends ElementType = "div">({ as, ...props }: CardFooterProps<T>) => import("react").JSX.Element;
132
112
  export interface CarouselProps extends ComponentPropsWithoutRef<'section'> {
133
113
  glass?: LumenGlassProp;
134
114
  }
@@ -139,9 +119,10 @@ export interface ChartProps extends ComponentPropsWithoutRef<'figure'> {
139
119
  glass?: LumenGlassProp;
140
120
  heading?: ReactNode;
141
121
  presentation?: 'bare' | 'default';
122
+ summary?: ReactNode;
142
123
  value?: ReactNode;
143
124
  }
144
- export declare const Chart: ({ caption, children, className, description, glass, heading, presentation, value, ...props }: ChartProps) => import("react").JSX.Element;
125
+ export declare const Chart: ({ caption, children, className, description, glass, heading, presentation, summary, value, ...props }: ChartProps) => import("react").JSX.Element;
145
126
  export interface SparklineProps extends Omit<ComponentPropsWithoutRef<'span'>, 'children'> {
146
127
  area?: boolean;
147
128
  label?: string;
@@ -161,7 +142,7 @@ export interface BarChartProps extends Omit<ChartProps, 'children'> {
161
142
  showLegend?: boolean;
162
143
  showTable?: boolean;
163
144
  }
164
- export declare const BarChart: ({ categoryWidth, className, emptyLabel, formatCategory, formatValue, layout, orientation, series, showLegend, showTable, ...props }: BarChartProps) => import("react").JSX.Element;
145
+ export declare const BarChart: ({ categoryWidth, className, emptyLabel, formatCategory, formatValue, layout, orientation, series, showLegend, showTable, summary, ...props }: BarChartProps) => import("react").JSX.Element;
165
146
  export interface LineChartProps extends Omit<ChartProps, 'children'> {
166
147
  area?: boolean;
167
148
  emptyLabel?: ReactNode;
@@ -173,7 +154,7 @@ export interface LineChartProps extends Omit<ChartProps, 'children'> {
173
154
  showLegend?: boolean;
174
155
  showTable?: boolean;
175
156
  }
176
- export declare const LineChart: ({ area, className, emptyLabel, formatCategory, formatValue, markers, referenceValue, series, showLegend, showTable, ...props }: LineChartProps) => import("react").JSX.Element;
157
+ export declare const LineChart: ({ area, className, emptyLabel, formatCategory, formatValue, markers, referenceValue, series, showLegend, showTable, summary, ...props }: LineChartProps) => import("react").JSX.Element;
177
158
  export interface PieChartProps extends Omit<ChartProps, 'children'> {
178
159
  centerLabel?: ReactNode;
179
160
  centerValue?: ReactNode;
@@ -183,7 +164,35 @@ export interface PieChartProps extends Omit<ChartProps, 'children'> {
183
164
  valueFormatter?: (value: number) => string;
184
165
  variant?: LumenPieChartVariant;
185
166
  }
186
- export declare const PieChart: ({ centerLabel, centerValue, className, series, showLegend, showTable, valueFormatter, variant, ...props }: PieChartProps) => import("react").JSX.Element;
167
+ export declare const PieChart: ({ centerLabel, centerValue, className, series, showLegend, showTable, summary, valueFormatter, variant, ...props }: PieChartProps) => import("react").JSX.Element;
168
+ export interface ScatterChartProps extends Omit<ChartProps, 'children'> {
169
+ formatValue?: (value: number) => string;
170
+ series?: readonly LumenChartSeries[];
171
+ showLegend?: boolean;
172
+ showTable?: boolean;
173
+ xScale?: Exclude<LumenChartScaleType, 'categorical'>;
174
+ }
175
+ export declare const ScatterChart: ({ className, formatValue, series, showLegend, showTable, summary, xScale, ...props }: ScatterChartProps) => import("react").JSX.Element;
176
+ export interface HeatmapProps extends Omit<ChartProps, 'children'> {
177
+ data?: readonly LumenHeatmapDatum[];
178
+ formatValue?: (value: number) => string;
179
+ showTable?: boolean;
180
+ }
181
+ export declare const Heatmap: ({ className, data, formatValue, showTable, summary, ...props }: HeatmapProps) => import("react").JSX.Element;
182
+ export interface RangeChartProps extends Omit<ChartProps, 'children'> {
183
+ data?: readonly LumenRangeDatum[];
184
+ formatValue?: (value: number) => string;
185
+ showTable?: boolean;
186
+ tone?: LumenChartTone;
187
+ }
188
+ export declare const RangeChart: ({ className, data, formatValue, showTable, summary, tone, ...props }: RangeChartProps) => import("react").JSX.Element;
189
+ export interface ComboChartProps extends Omit<ChartProps, 'children'> {
190
+ formatValue?: (value: number) => string;
191
+ series?: readonly LumenComboSeries[];
192
+ showLegend?: boolean;
193
+ showTable?: boolean;
194
+ }
195
+ export declare const ComboChart: ({ className, formatValue, series, showLegend, showTable, summary, ...props }: ComboChartProps) => import("react").JSX.Element;
187
196
  export type CheckboxProps = Omit<ComponentPropsWithRef<'input'>, 'type'>;
188
197
  export declare const Checkbox: ({ className, ref, ...props }: CheckboxProps) => import("react").JSX.Element;
189
198
  export interface CheckboxGroupProps extends ComponentPropsWithRef<'fieldset'> {
@@ -273,33 +282,6 @@ export type DialogProps = Omit<ComponentPropsWithoutRef<'dialog'>, 'open'> & Sur
273
282
  layout?: 'centered' | 'fullscreen';
274
283
  };
275
284
  export declare const Dialog: ({ className, defaultOpen, glass, layout, onClick, onClose, onOpenChange, open, ...props }: DialogProps) => import("react").JSX.Element;
276
- export type DirectionProps = ComponentPropsWithoutRef<'div'>;
277
- export declare const Direction: ({ className, dir, ...props }: DirectionProps) => import("react").JSX.Element;
278
- export interface ContainerProps extends ComponentPropsWithRef<'div'> {
279
- as?: ElementType;
280
- size?: 'full' | 'lg' | 'md' | 'sm';
281
- }
282
- export declare const Container: ({ as, className, size, ...props }: ContainerProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
283
- export interface GridProps extends ComponentPropsWithRef<'div'> {
284
- as?: ElementType;
285
- columns?: 1 | 2 | 3 | 4 | 6 | 12 | 'auto';
286
- gap?: 'lg' | 'md' | 'none' | 'sm' | 'xl';
287
- minItemWidth?: string;
288
- }
289
- export declare const Grid: ({ as, className, columns, gap, minItemWidth, style, ...props }: GridProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
290
- export interface StackProps extends ComponentPropsWithRef<'div'> {
291
- align?: 'center' | 'end' | 'start' | 'stretch';
292
- as?: ElementType;
293
- direction?: Orientation;
294
- gap?: 'lg' | 'md' | 'none' | 'sm' | 'xl';
295
- justify?: 'between' | 'center' | 'end' | 'start';
296
- wrap?: boolean;
297
- }
298
- export declare const Stack: ({ align, as, className, direction, gap, justify, wrap, ...props }: StackProps) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
299
- export interface VisuallyHiddenProps extends ComponentPropsWithRef<'span'> {
300
- focusable?: boolean;
301
- }
302
- export declare const VisuallyHidden: ({ className, focusable, ...props }: VisuallyHiddenProps) => import("react").JSX.Element;
303
285
  export interface DrawerProps extends ComponentPropsWithoutRef<'dialog'>, SurfaceProps {
304
286
  }
305
287
  export declare const Drawer: ({ className, glass, ...props }: DrawerProps) => import("react").JSX.Element;
@@ -320,6 +302,27 @@ export interface EmptyProps extends ComponentPropsWithoutRef<'section'> {
320
302
  variant?: 'compact' | 'default';
321
303
  }
322
304
  export declare const Empty: ({ className, glass, variant, ...props }: EmptyProps) => import("react").JSX.Element;
305
+ export interface IllustrationProps extends ComponentPropsWithoutRef<'span'> {
306
+ label?: string;
307
+ size?: 'lg' | 'md' | 'sm';
308
+ tone?: 'accent' | 'auto' | 'brand' | 'neutral';
309
+ variant?: 'empty' | 'error' | 'offline' | 'success';
310
+ }
311
+ export declare const Illustration: ({ className, label, size, tone, variant, ...props }: IllustrationProps) => import("react").JSX.Element;
312
+ type ErrorStateHeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
313
+ export interface ErrorStateProps extends Omit<ComponentPropsWithoutRef<'section'>, 'title'> {
314
+ actions?: ReactNode;
315
+ announce?: LumenErrorStateAnnouncement;
316
+ description?: string;
317
+ graphic?: false | ReactNode;
318
+ headingLevel?: ErrorStateHeadingLevel;
319
+ kind?: LumenErrorStateKind;
320
+ layout?: LumenErrorStateLayout;
321
+ reference?: string;
322
+ referenceLabel?: string;
323
+ title: string;
324
+ }
325
+ export declare const ErrorState: ({ "aria-live": ariaLive, actions, announce, children, className, description, graphic, headingLevel, id, kind, layout, reference, referenceLabel, role, title, ...props }: ErrorStateProps) => import("react").JSX.Element;
323
326
  export type KanbanBoardProps = ComponentPropsWithoutRef<'section'>;
324
327
  export declare const KanbanBoard: ({ className, tabIndex, ...props }: KanbanBoardProps) => import("react").JSX.Element;
325
328
  export interface KanbanColumnProps extends ComponentPropsWithoutRef<'section'> {
@@ -357,12 +360,6 @@ export interface IconProps extends ComponentPropsWithoutRef<'span'> {
357
360
  size?: IconSize;
358
361
  }
359
362
  export declare const Icon: ({ "aria-hidden": ariaHidden, "aria-label": ariaLabel, children, className, decorative, label, name, role, size, ...props }: IconProps) => import("react").JSX.Element;
360
- export interface InputProps extends ComponentPropsWithRef<'input'> {
361
- visualSize?: 'default' | 'lg' | 'sm';
362
- }
363
- export declare const Input: ({ className, ref, type, visualSize, ...props }: InputProps) => import("react").JSX.Element;
364
- export type LabelProps = ComponentPropsWithRef<'label'>;
365
- export declare const Label: ({ className, ...props }: LabelProps) => import("react").JSX.Element;
366
363
  export interface PasswordFieldProps extends Omit<InputProps, 'type' | 'visualSize'> {
367
364
  error?: ReactNode;
368
365
  hideLabel?: string;
@@ -694,15 +691,21 @@ export interface NativeSelectProps extends ComponentPropsWithRef<'select'> {
694
691
  export declare const NativeSelect: ({ children, className, defaultValue, options, placeholder, ref, value, visualSize, ...props }: NativeSelectProps) => import("react").JSX.Element;
695
692
  export interface PhoneInputProps extends Omit<ComponentPropsWithoutRef<'div'>, 'defaultValue'> {
696
693
  countries?: SelectOption[];
694
+ countryOptions?: readonly LumenPhoneCountry[];
697
695
  countryLabel?: string;
698
696
  countryName?: string;
699
697
  defaultCountryValue?: string;
700
698
  defaultValue?: string;
699
+ invalidNumberMessage?: string;
700
+ locale?: LumenPhoneCountryOptions['locale'];
701
701
  name?: string;
702
+ onValueChange?: (value: LumenPhoneNumber) => void;
702
703
  placeholder?: string;
704
+ showValidationError?: boolean;
703
705
  size?: 'default' | 'lg' | 'sm';
706
+ value?: LumenPhoneNumber;
704
707
  }
705
- export declare const PhoneInput: ({ className, countries, countryLabel, countryName, defaultCountryValue, defaultValue, name, placeholder, size, ...props }: PhoneInputProps) => import("react").JSX.Element;
708
+ export declare const PhoneInput: (props: PhoneInputProps) => import("react").JSX.Element;
706
709
  export interface NavigationMenuProps extends ComponentPropsWithoutRef<'nav'>, SurfaceProps {
707
710
  variant?: 'default' | 'unstyled';
708
711
  }
@@ -720,11 +723,6 @@ export type PopoverTriggerProps = ComponentPropsWithoutRef<'button'>;
720
723
  export declare const PopoverTrigger: ({ onClick, onKeyDown, ...props }: PopoverTriggerProps) => import("react").JSX.Element;
721
724
  export type PopoverPanelProps = ComponentPropsWithoutRef<'div'>;
722
725
  export declare const PopoverPanel: ({ onKeyDown, ...props }: PopoverPanelProps) => import("react").JSX.Element;
723
- export interface ProgressProps extends ComponentPropsWithoutRef<'div'> {
724
- max?: number;
725
- value?: number;
726
- }
727
- export declare const Progress: ({ className, max, value, ...props }: ProgressProps) => import("react").JSX.Element;
728
726
  export type RadioGroupProps = ComponentPropsWithoutRef<'fieldset'>;
729
727
  export declare const RadioGroup: ({ className, ...props }: RadioGroupProps) => import("react").JSX.Element;
730
728
  export interface ResizableProps extends ComponentPropsWithoutRef<'div'> {
@@ -772,10 +770,6 @@ export interface ListBoxProps extends Omit<ComponentPropsWithRef<'select'>, 'chi
772
770
  value?: string | string[];
773
771
  }
774
772
  export declare const ListBox: (inputProps: ListBoxProps) => import("react").JSX.Element;
775
- export interface SeparatorProps extends ComponentPropsWithRef<'hr'> {
776
- orientation?: Orientation;
777
- }
778
- export declare const Separator: ({ className, orientation, ...props }: SeparatorProps) => import("react").JSX.Element;
779
773
  export interface SheetProps extends ComponentPropsWithoutRef<'dialog'>, SurfaceProps {
780
774
  }
781
775
  export declare const Sheet: ({ className, glass, ...props }: SheetProps) => import("react").JSX.Element;
@@ -783,14 +777,17 @@ export interface SidebarProps extends ComponentPropsWithoutRef<'aside'>, Surface
783
777
  variant?: 'default' | 'unstyled';
784
778
  }
785
779
  export declare const Sidebar: ({ className, glass, variant, ...props }: SidebarProps) => import("react").JSX.Element;
786
- export type SkeletonProps = ComponentPropsWithRef<'div'>;
787
- export declare const Skeleton: ({ className, ...props }: SkeletonProps) => import("react").JSX.Element;
788
780
  export type SliderProps = ComponentPropsWithRef<'input'>;
789
781
  export declare const Slider: ({ className, ref, type, ...props }: SliderProps) => import("react").JSX.Element;
790
- export type SonnerProps = ComponentPropsWithoutRef<'div'>;
791
- export declare const Sonner: ({ className, ...props }: SonnerProps) => import("react").JSX.Element;
792
- export type SpinnerProps = ComponentPropsWithoutRef<'span'>;
793
- export declare const Spinner: ({ "aria-hidden": ariaHidden, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, className, role, ...props }: SpinnerProps) => import("react").JSX.Element;
782
+ export interface ToastViewportProps extends ComponentPropsWithoutRef<'div'> {
783
+ maxCount?: number;
784
+ placement?: ToastPlacement;
785
+ }
786
+ export declare const ToastViewport: ({ "aria-atomic": ariaAtomic, "aria-label": ariaLabel, "aria-live": ariaLive, className, maxCount, placement, ...props }: ToastViewportProps) => import("react").JSX.Element;
787
+ /** @deprecated Use ToastViewportProps instead. */
788
+ export type SonnerProps = ToastViewportProps;
789
+ /** @deprecated Use ToastViewport instead. */
790
+ export declare const Sonner: ({ className, ...props }: ToastViewportProps) => import("react").JSX.Element;
794
791
  export type SwitchProps = Omit<ComponentPropsWithRef<'input'>, 'type'>;
795
792
  export declare const Switch: ({ className, ref, role, ...props }: SwitchProps) => import("react").JSX.Element;
796
793
  export interface TableProps extends ComponentPropsWithoutRef<'div'> {
@@ -814,8 +811,6 @@ export declare const TabsPanel: ({ value, ...props }: TabsPanelProps) => import(
814
811
  export declare const CodeTabs: ({ ariaLabel, className, copy, initialValue, items, storageKey, theme, wrap, ...props }: CodeTabsProps) => import("react").JSX.Element;
815
812
  export type TagGroupProps = ComponentPropsWithoutRef<'div'>;
816
813
  export declare const TagGroup: ({ className, role, ...props }: TagGroupProps) => import("react").JSX.Element;
817
- export type TextareaProps = ComponentPropsWithRef<'textarea'>;
818
- export declare const Textarea: ({ className, ref, rows, ...props }: TextareaProps) => import("react").JSX.Element;
819
814
  export interface ThemeBuilderProps extends ComponentPropsWithoutRef<'section'> {
820
815
  glass?: LumenGlassProp;
821
816
  }
@@ -845,8 +840,6 @@ export interface TreeGridProps extends ComponentPropsWithoutRef<'div'> {
845
840
  glass?: LumenGlassProp;
846
841
  }
847
842
  export declare const TreeGrid: ({ className, glass, role, ...props }: TreeGridProps) => import("react").JSX.Element;
848
- export type TypographyProps = ComponentPropsWithoutRef<'div'>;
849
- export declare const Typography: ({ className, ...props }: TypographyProps) => import("react").JSX.Element;
850
843
  export interface VirtualListProps extends ComponentPropsWithoutRef<'div'> {
851
844
  glass?: LumenGlassProp;
852
845
  itemSize?: number | string;
@@ -866,10 +859,12 @@ export declare const FormattedDate: ({ className, ...props }: FormattedDateProps
866
859
  export type ImageProps<T extends ElementType = 'img'> = {
867
860
  as?: T;
868
861
  className?: string;
862
+ fit?: 'contain' | 'cover';
869
863
  invertOnDark?: boolean;
870
864
  loading?: 'eager' | 'lazy';
871
- } & Omit<ComponentPropsWithoutRef<T>, 'as' | 'className' | 'loading'>;
872
- export declare const Image: <T extends ElementType = "img">({ as, className, invertOnDark, loading, ...props }: ImageProps<T>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
865
+ radius?: 'full' | 'lg' | 'md' | 'none' | 'sm';
866
+ } & Omit<ComponentPropsWithoutRef<T>, 'as' | 'className' | 'fit' | 'loading' | 'radius'>;
867
+ export declare const Image: <T extends ElementType = "img">({ as, className, fit, invertOnDark, loading, radius, ...props }: ImageProps<T>) => import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
873
868
  export type LinkProps = ComponentPropsWithRef<'a'> & {
874
869
  newTab?: boolean;
875
870
  variant?: 'default' | 'inherit';
@@ -979,13 +974,6 @@ export interface BackdropProps extends ComponentPropsWithoutRef<'div'> {
979
974
  variant?: 'aurora' | 'dots' | 'grid' | 'rays';
980
975
  }
981
976
  export declare const Backdrop: ({ children, className, intensity, tone, variant, ...props }: BackdropProps) => import("react").JSX.Element;
982
- export interface IllustrationProps extends ComponentPropsWithoutRef<'span'> {
983
- label?: string;
984
- size?: 'lg' | 'md' | 'sm';
985
- tone?: 'accent' | 'auto' | 'brand' | 'neutral';
986
- variant?: 'empty' | 'error' | 'offline' | 'success';
987
- }
988
- export declare const Illustration: ({ className, label, size, tone, variant, ...props }: IllustrationProps) => import("react").JSX.Element;
989
977
  export type AnimatedPortraitProps = ComponentPropsWithoutRef<'div'>;
990
978
  export declare const AnimatedPortrait: ({ className, ...props }: AnimatedPortraitProps) => import("react").JSX.Element;
991
979
  export type ButtonLinkProps = ComponentPropsWithRef<'a'> & {
@@ -1145,5 +1133,4 @@ export interface SpeedDialProps extends ComponentPropsWithoutRef<'div'> {
1145
1133
  label?: string;
1146
1134
  }
1147
1135
  export declare const SpeedDial: ({ actions, children, className, defaultOpen, direction, label, onBlur, ...props }: SpeedDialProps) => import("react").JSX.Element;
1148
- export {};
1149
1136
  //# sourceMappingURL=components.d.ts.map