@the12company/ui 0.1.2 → 0.1.5
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 +37 -7
- package/dist/index.d.ts +250 -16
- package/dist/index.js +1439 -268
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
- package/src/tokens/utilities.css +32 -0
package/README.md
CHANGED
|
@@ -96,15 +96,26 @@ Floating glass header and sidebar shells — pass product UI as slots:
|
|
|
96
96
|
|
|
97
97
|
```tsx
|
|
98
98
|
import {
|
|
99
|
+
AppChromeBrand,
|
|
99
100
|
AppChromeHeader,
|
|
100
101
|
AppChromeSidebar,
|
|
102
|
+
PageHeader,
|
|
103
|
+
ChartCard,
|
|
104
|
+
ListingPagination,
|
|
105
|
+
SearchableSelect,
|
|
101
106
|
SidebarProvider,
|
|
102
107
|
SidebarTrigger,
|
|
103
108
|
} from "@the12company/ui";
|
|
104
109
|
|
|
105
110
|
<SidebarProvider>
|
|
106
111
|
<AppChromeSidebar
|
|
107
|
-
header={
|
|
112
|
+
header={
|
|
113
|
+
<AppChromeBrand
|
|
114
|
+
logo={<img src="/logo.svg" alt="" className="h-4.5 w-4.5" />}
|
|
115
|
+
title="Your Product"
|
|
116
|
+
subtitle="Tagline"
|
|
117
|
+
/>
|
|
118
|
+
}
|
|
108
119
|
footer={<YourAccountMenu />}
|
|
109
120
|
>
|
|
110
121
|
<YourNavLinks />
|
|
@@ -119,6 +130,15 @@ import {
|
|
|
119
130
|
</SidebarProvider>
|
|
120
131
|
```
|
|
121
132
|
|
|
133
|
+
Also available:
|
|
134
|
+
|
|
135
|
+
| Component | Role |
|
|
136
|
+
| --------- | ---- |
|
|
137
|
+
| `PageHeader` | Title block (label, badge, meta, back, actions) |
|
|
138
|
+
| `ChartCard` | Section / chart surface |
|
|
139
|
+
| `ListingPagination` | List paging (default + minimal) |
|
|
140
|
+
| `SearchableSelect` | Async combobox — inject `loadItems` |
|
|
141
|
+
|
|
122
142
|
Primitives (`Sidebar`, `SidebarMenu`, `SidebarTrigger`, …) are also exported for custom layouts.
|
|
123
143
|
|
|
124
144
|
No routing or business logic inside the kit — only structure and look.
|
|
@@ -162,18 +182,28 @@ Requires `npm login` (or a local auth token). The GitHub `NPM_TOKEN` secret is o
|
|
|
162
182
|
```
|
|
163
183
|
packages/ui/
|
|
164
184
|
├── src/
|
|
165
|
-
│ ├── components/ #
|
|
166
|
-
│
|
|
167
|
-
│ ├──
|
|
185
|
+
│ ├── components/ # primitives + chrome + PageHeader, ChartCard, …
|
|
186
|
+
│ │ └── auth/ # AuthShell, AuthCard, Aurora, EmailInput, PasswordInput, …
|
|
187
|
+
│ ├── hooks/
|
|
188
|
+
│ ├── lib/ # cn, pagination helpers
|
|
168
189
|
│ ├── tokens/
|
|
169
|
-
│ │ ├── theme.css # Capivara / QA brand
|
|
170
|
-
│ │ ├── theme-contract.css # token names + neutrals
|
|
171
|
-
│ │ └── utilities.css # bg-content-glass, …
|
|
172
190
|
│ └── index.ts
|
|
173
191
|
├── package.json
|
|
174
192
|
└── README.md
|
|
175
193
|
```
|
|
176
194
|
|
|
195
|
+
You can group related components in folders (e.g. `components/auth/`). Export them from a folder `index.ts` and from the package root `src/index.ts` so consumers can still do:
|
|
196
|
+
|
|
197
|
+
```tsx
|
|
198
|
+
import { EmailInput, PasswordInput } from "@the12company/ui";
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
In this monorepo (Vite/TS aliases), deep imports also work:
|
|
202
|
+
|
|
203
|
+
```tsx
|
|
204
|
+
import { EmailInput } from "@the12company/ui/components/auth";
|
|
205
|
+
```
|
|
206
|
+
|
|
177
207
|
---
|
|
178
208
|
|
|
179
209
|
## Tips
|
package/dist/index.d.ts
CHANGED
|
@@ -20,7 +20,6 @@ import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
|
|
|
20
20
|
import * as DialogPrimitive from '@radix-ui/react-dialog';
|
|
21
21
|
import { DialogProps } from '@radix-ui/react-dialog';
|
|
22
22
|
import * as ContextMenuPrimitive from '@radix-ui/react-context-menu';
|
|
23
|
-
import * as vaul from 'vaul';
|
|
24
23
|
import { Drawer as Drawer$1 } from 'vaul';
|
|
25
24
|
import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
|
|
26
25
|
import * as react_hook_form from 'react-hook-form';
|
|
@@ -110,6 +109,23 @@ declare const AlertDialogDescription: React$1.ForwardRefExoticComponent<Omit<Ale
|
|
|
110
109
|
declare const AlertDialogAction: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogActionProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
111
110
|
declare const AlertDialogCancel: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogCancelProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
112
111
|
|
|
112
|
+
type AppChromeBrandProps = {
|
|
113
|
+
/** Brand mark (img, svg, or custom node). */
|
|
114
|
+
logo?: React$1.ReactNode;
|
|
115
|
+
title?: React$1.ReactNode;
|
|
116
|
+
subtitle?: React$1.ReactNode;
|
|
117
|
+
className?: string;
|
|
118
|
+
/**
|
|
119
|
+
* Override collapse detection. When omitted, uses sidebar state
|
|
120
|
+
* (hidden on mobile drawer).
|
|
121
|
+
*/
|
|
122
|
+
collapsed?: boolean;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Sidebar brand row: logo + title/subtitle that collapse with the sidebar.
|
|
126
|
+
*/
|
|
127
|
+
declare function AppChromeBrand({ logo, title, subtitle, className, collapsed: collapsedProp, }: AppChromeBrandProps): React$1.JSX.Element;
|
|
128
|
+
|
|
113
129
|
type AppChromeHeaderProps = {
|
|
114
130
|
/** Ref on the outer `<header>` (e.g. for measuring chrome height). */
|
|
115
131
|
headerRef?: React$1.Ref<HTMLElement>;
|
|
@@ -152,6 +168,103 @@ declare function AppChromeSidebar({ header, children, footer, collapsible, class
|
|
|
152
168
|
|
|
153
169
|
declare const AspectRatio: React$1.ForwardRefExoticComponent<AspectRatioPrimitive.AspectRatioProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
154
170
|
|
|
171
|
+
type AuroraProps = {
|
|
172
|
+
/** Exactly three hex colors for the horizontal ramp (fewer/more are normalized). */
|
|
173
|
+
colorStops?: [string, string, string] | string[];
|
|
174
|
+
amplitude?: number;
|
|
175
|
+
blend?: number;
|
|
176
|
+
/** Override animation clock (ms); default uses `requestAnimationFrame` time. */
|
|
177
|
+
time?: number;
|
|
178
|
+
speed?: number;
|
|
179
|
+
};
|
|
180
|
+
/** Full-bleed WebGL aurora background (requires peer `ogl`). */
|
|
181
|
+
declare function Aurora(props: AuroraProps): React$1.JSX.Element;
|
|
182
|
+
|
|
183
|
+
declare const authBannerVariants: (props?: ({
|
|
184
|
+
variant?: "destructive" | "success" | null | undefined;
|
|
185
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
186
|
+
type AuthBannerProps = React$1.HTMLAttributes<HTMLDivElement> & VariantProps<typeof authBannerVariants> & {
|
|
187
|
+
/** Override the default status icon. */
|
|
188
|
+
icon?: React$1.ReactNode;
|
|
189
|
+
};
|
|
190
|
+
declare const AuthBanner: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & VariantProps<(props?: ({
|
|
191
|
+
variant?: "destructive" | "success" | null | undefined;
|
|
192
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string> & {
|
|
193
|
+
/** Override the default status icon. */
|
|
194
|
+
icon?: React$1.ReactNode;
|
|
195
|
+
} & React$1.RefAttributes<HTMLDivElement>>;
|
|
196
|
+
|
|
197
|
+
type AuthBrandProps = React$1.HTMLAttributes<HTMLElement> & {
|
|
198
|
+
/** Product mark (e.g. `<img />` or logo component). */
|
|
199
|
+
logo: React$1.ReactNode;
|
|
200
|
+
title: React$1.ReactNode;
|
|
201
|
+
description?: React$1.ReactNode;
|
|
202
|
+
};
|
|
203
|
+
/**
|
|
204
|
+
* Centered product brand block above the auth card.
|
|
205
|
+
*/
|
|
206
|
+
declare const AuthBrand: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLElement> & {
|
|
207
|
+
/** Product mark (e.g. `<img />` or logo component). */
|
|
208
|
+
logo: React$1.ReactNode;
|
|
209
|
+
title: React$1.ReactNode;
|
|
210
|
+
description?: React$1.ReactNode;
|
|
211
|
+
} & React$1.RefAttributes<HTMLElement>>;
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Glass auth surface. Prefer this over `Card` for login/register —
|
|
215
|
+
* stock `Card` uses border + `bg-card` and different radius/padding.
|
|
216
|
+
*/
|
|
217
|
+
declare const AuthCard: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
218
|
+
declare const AuthCardHeader: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & React$1.RefAttributes<HTMLDivElement>>;
|
|
219
|
+
declare const AuthCardTitle: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLHeadingElement> & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
220
|
+
declare const AuthCardDescription: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLParagraphElement> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
221
|
+
|
|
222
|
+
type AuthFieldErrorProps = React$1.HTMLAttributes<HTMLParagraphElement>;
|
|
223
|
+
/** Inline field validation message under auth inputs. */
|
|
224
|
+
declare const AuthFieldError: React$1.ForwardRefExoticComponent<AuthFieldErrorProps & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
225
|
+
|
|
226
|
+
type AuthFooterProps = React$1.HTMLAttributes<HTMLParagraphElement>;
|
|
227
|
+
/** Muted footer line under the auth card (e.g. “Já tem conta? Entrar”). */
|
|
228
|
+
declare const AuthFooter: React$1.ForwardRefExoticComponent<AuthFooterProps & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
229
|
+
type AuthFooterLinkProps = React$1.AnchorHTMLAttributes<HTMLAnchorElement> & {
|
|
230
|
+
asChild?: boolean;
|
|
231
|
+
};
|
|
232
|
+
/** Link style for auth footer CTAs — needs `.hover-underline` from utilities.css. */
|
|
233
|
+
declare const AuthFooterLink: React$1.ForwardRefExoticComponent<React$1.AnchorHTMLAttributes<HTMLAnchorElement> & {
|
|
234
|
+
asChild?: boolean;
|
|
235
|
+
} & React$1.RefAttributes<HTMLAnchorElement>>;
|
|
236
|
+
|
|
237
|
+
type AuthShellProps = React$1.HTMLAttributes<HTMLDivElement> & {
|
|
238
|
+
/** Full-bleed background (e.g. `<Aurora />`). */
|
|
239
|
+
background?: React$1.ReactNode;
|
|
240
|
+
/** Classes for the background layer (opacity, etc.). */
|
|
241
|
+
backgroundClassName?: string;
|
|
242
|
+
};
|
|
243
|
+
/**
|
|
244
|
+
* Full-viewport auth page shell: centered column over an optional animated background.
|
|
245
|
+
*/
|
|
246
|
+
declare const AuthShell: React$1.ForwardRefExoticComponent<React$1.HTMLAttributes<HTMLDivElement> & {
|
|
247
|
+
/** Full-bleed background (e.g. `<Aurora />`). */
|
|
248
|
+
background?: React$1.ReactNode;
|
|
249
|
+
/** Classes for the background layer (opacity, etc.). */
|
|
250
|
+
backgroundClassName?: string;
|
|
251
|
+
} & React$1.RefAttributes<HTMLDivElement>>;
|
|
252
|
+
|
|
253
|
+
declare const inputVariants: (props?: ({
|
|
254
|
+
variant?: "default" | "outline" | null | undefined;
|
|
255
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
256
|
+
type InputProps = React$1.ComponentProps<"input"> & VariantProps<typeof inputVariants>;
|
|
257
|
+
declare const Input: React$1.ForwardRefExoticComponent<Omit<InputProps, "ref"> & React$1.RefAttributes<HTMLInputElement>>;
|
|
258
|
+
|
|
259
|
+
type EmailInputProps = Omit<InputProps, "type">;
|
|
260
|
+
declare const EmailInput: React$1.ForwardRefExoticComponent<Omit<EmailInputProps, "ref"> & React$1.RefAttributes<HTMLInputElement>>;
|
|
261
|
+
|
|
262
|
+
type PasswordInputProps = Omit<InputProps, "type"> & {
|
|
263
|
+
/** Initial visibility of the password text. */
|
|
264
|
+
defaultVisible?: boolean;
|
|
265
|
+
};
|
|
266
|
+
declare const PasswordInput: React$1.ForwardRefExoticComponent<Omit<PasswordInputProps, "ref"> & React$1.RefAttributes<HTMLInputElement>>;
|
|
267
|
+
|
|
155
268
|
declare const Avatar: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
|
|
156
269
|
declare const AvatarImage: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarImageProps & React$1.RefAttributes<HTMLImageElement>, "ref"> & React$1.RefAttributes<HTMLImageElement>>;
|
|
157
270
|
declare const AvatarFallback: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarFallbackProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
|
|
@@ -279,6 +392,22 @@ declare const ChartLegendContent: React$1.ForwardRefExoticComponent<Omit<React$1
|
|
|
279
392
|
nameKey?: string;
|
|
280
393
|
}, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
281
394
|
|
|
395
|
+
type ChartCardProps = {
|
|
396
|
+
title: React$1.ReactNode;
|
|
397
|
+
subtitle?: React$1.ReactNode;
|
|
398
|
+
children: React$1.ReactNode;
|
|
399
|
+
action?: React$1.ReactNode;
|
|
400
|
+
titleInfo?: React$1.ReactNode;
|
|
401
|
+
titleClassName?: string;
|
|
402
|
+
/** Use glass surface (`bg-content-glass`) instead of solid card. */
|
|
403
|
+
glass?: boolean;
|
|
404
|
+
className?: string;
|
|
405
|
+
};
|
|
406
|
+
/**
|
|
407
|
+
* Section / chart surface with title row, optional subtitle, and action slot.
|
|
408
|
+
*/
|
|
409
|
+
declare function ChartCard({ title, subtitle, children, action, titleInfo, titleClassName, glass, className, }: ChartCardProps): React$1.JSX.Element;
|
|
410
|
+
|
|
282
411
|
declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
283
412
|
|
|
284
413
|
declare const Collapsible: React$1.ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
@@ -407,14 +536,25 @@ declare const DialogTitle: React$1.ForwardRefExoticComponent<Omit<DialogPrimitiv
|
|
|
407
536
|
declare const DialogDescription: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>, "ref"> & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
408
537
|
|
|
409
538
|
declare const Drawer: {
|
|
410
|
-
({ shouldScaleBackground, ...props }: React$1.
|
|
539
|
+
({ shouldScaleBackground, ...props }: React$1.ComponentPropsWithoutRef<typeof Drawer$1.Root>): React$1.JSX.Element;
|
|
411
540
|
displayName: string;
|
|
412
541
|
};
|
|
413
|
-
declare
|
|
414
|
-
declare
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
declare
|
|
542
|
+
declare function DrawerTrigger({ ...props }: React$1.ComponentPropsWithoutRef<typeof Drawer$1.Trigger>): React$1.JSX.Element;
|
|
543
|
+
declare namespace DrawerTrigger {
|
|
544
|
+
var displayName: string;
|
|
545
|
+
}
|
|
546
|
+
declare function DrawerPortal({ ...props }: React$1.ComponentPropsWithoutRef<typeof Drawer$1.Portal>): React$1.JSX.Element;
|
|
547
|
+
declare namespace DrawerPortal {
|
|
548
|
+
var displayName: string;
|
|
549
|
+
}
|
|
550
|
+
declare function DrawerClose({ ...props }: React$1.ComponentPropsWithoutRef<typeof Drawer$1.Close>): React$1.JSX.Element;
|
|
551
|
+
declare namespace DrawerClose {
|
|
552
|
+
var displayName: string;
|
|
553
|
+
}
|
|
554
|
+
type DrawerOverlayProps = React$1.HTMLAttributes<HTMLDivElement>;
|
|
555
|
+
declare const DrawerOverlay: React$1.ForwardRefExoticComponent<DrawerOverlayProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
556
|
+
type DrawerContentProps = React$1.HTMLAttributes<HTMLDivElement>;
|
|
557
|
+
declare const DrawerContent: React$1.ForwardRefExoticComponent<DrawerContentProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
418
558
|
declare const DrawerHeader: {
|
|
419
559
|
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
|
|
420
560
|
displayName: string;
|
|
@@ -423,8 +563,10 @@ declare const DrawerFooter: {
|
|
|
423
563
|
({ className, ...props }: React$1.HTMLAttributes<HTMLDivElement>): React$1.JSX.Element;
|
|
424
564
|
displayName: string;
|
|
425
565
|
};
|
|
426
|
-
|
|
427
|
-
declare const
|
|
566
|
+
type DrawerTitleProps = React$1.HTMLAttributes<HTMLHeadingElement>;
|
|
567
|
+
declare const DrawerTitle: React$1.ForwardRefExoticComponent<DrawerTitleProps & React$1.RefAttributes<HTMLHeadingElement>>;
|
|
568
|
+
type DrawerDescriptionProps = React$1.HTMLAttributes<HTMLParagraphElement>;
|
|
569
|
+
declare const DrawerDescription: React$1.ForwardRefExoticComponent<DrawerDescriptionProps & React$1.RefAttributes<HTMLParagraphElement>>;
|
|
428
570
|
|
|
429
571
|
type DropdownTriggerProps = Omit<ComponentProps<typeof Button>, "variant"> & {
|
|
430
572
|
open: boolean;
|
|
@@ -482,12 +624,6 @@ declare const HoverCard: React$1.FC<HoverCardPrimitive.HoverCardProps>;
|
|
|
482
624
|
declare const HoverCardTrigger: React$1.ForwardRefExoticComponent<HoverCardPrimitive.HoverCardTriggerProps & React$1.RefAttributes<HTMLAnchorElement>>;
|
|
483
625
|
declare const HoverCardContent: React$1.ForwardRefExoticComponent<Omit<HoverCardPrimitive.HoverCardContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
484
626
|
|
|
485
|
-
declare const inputVariants: (props?: ({
|
|
486
|
-
variant?: "default" | "outline" | null | undefined;
|
|
487
|
-
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
488
|
-
type InputProps = React$1.ComponentProps<"input"> & VariantProps<typeof inputVariants>;
|
|
489
|
-
declare const Input: React$1.ForwardRefExoticComponent<Omit<InputProps, "ref"> & React$1.RefAttributes<HTMLInputElement>>;
|
|
490
|
-
|
|
491
627
|
declare const InputOTP: React$1.ForwardRefExoticComponent<(Omit<Omit<React$1.InputHTMLAttributes<HTMLInputElement>, "onChange" | "value" | "maxLength" | "textAlign" | "onComplete" | "pushPasswordManagerStrategy" | "pasteTransformer" | "containerClassName" | "noScriptCSSFallback"> & {
|
|
492
628
|
value?: string;
|
|
493
629
|
onChange?: (newValue: string) => unknown;
|
|
@@ -523,6 +659,28 @@ declare const InputOTPSeparator: React$1.ForwardRefExoticComponent<Omit<React$1.
|
|
|
523
659
|
|
|
524
660
|
declare const Label: React$1.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React$1.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: class_variance_authority_types.ClassProp | undefined) => string> & React$1.RefAttributes<HTMLLabelElement>>;
|
|
525
661
|
|
|
662
|
+
type ListingPaginationProps = {
|
|
663
|
+
page: number;
|
|
664
|
+
totalPages: number;
|
|
665
|
+
total?: number;
|
|
666
|
+
pageSize?: number;
|
|
667
|
+
itemLabel?: string;
|
|
668
|
+
disabled?: boolean;
|
|
669
|
+
variant?: "default" | "minimal";
|
|
670
|
+
className?: string;
|
|
671
|
+
onPageChange: (page: number) => void;
|
|
672
|
+
/** Override total formatting in the range label (e.g. capped counts). */
|
|
673
|
+
formatTotal?: (n: number) => string;
|
|
674
|
+
labels?: {
|
|
675
|
+
previous?: string;
|
|
676
|
+
next?: string;
|
|
677
|
+
previousAria?: string;
|
|
678
|
+
nextAria?: string;
|
|
679
|
+
pageAria?: (page: number) => string;
|
|
680
|
+
};
|
|
681
|
+
};
|
|
682
|
+
declare function ListingPagination({ page, totalPages, total, pageSize, itemLabel, disabled, variant, className, onPageChange, formatTotal, labels, }: ListingPaginationProps): React$1.JSX.Element | null;
|
|
683
|
+
|
|
526
684
|
declare const MenubarMenu: (props: MenubarPrimitive.MenubarMenuProps & {
|
|
527
685
|
__scopeMenubar?: _radix_ui_react_context.Scope;
|
|
528
686
|
}) => React$1.JSX.Element;
|
|
@@ -561,6 +719,33 @@ declare const NavigationMenuLink: React$1.ForwardRefExoticComponent<NavigationMe
|
|
|
561
719
|
declare const NavigationMenuViewport: React$1.ForwardRefExoticComponent<Omit<NavigationMenuPrimitive.NavigationMenuViewportProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
562
720
|
declare const NavigationMenuIndicator: React$1.ForwardRefExoticComponent<Omit<NavigationMenuPrimitive.NavigationMenuIndicatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
563
721
|
|
|
722
|
+
type PageHeaderProps = {
|
|
723
|
+
/** Optional eyebrow above the title. */
|
|
724
|
+
label?: React$1.ReactNode;
|
|
725
|
+
title: React$1.ReactNode;
|
|
726
|
+
description?: React$1.ReactNode;
|
|
727
|
+
/** Shown while the title is resolving (e.g. async folder name). */
|
|
728
|
+
titleLoading?: boolean;
|
|
729
|
+
/** Badge or chips next to the title. */
|
|
730
|
+
badge?: React$1.ReactNode;
|
|
731
|
+
/** Right-side meta (e.g. “Updated at …”). */
|
|
732
|
+
meta?: React$1.ReactNode;
|
|
733
|
+
/** Back control (link/button) — fully owned by the consumer. */
|
|
734
|
+
back?: React$1.ReactNode;
|
|
735
|
+
/** Actions aligned to the end (buttons, menus). */
|
|
736
|
+
children?: React$1.ReactNode;
|
|
737
|
+
className?: string;
|
|
738
|
+
titleClassName?: string;
|
|
739
|
+
descriptionClassName?: string;
|
|
740
|
+
/** Skeleton width hint when `titleLoading`. */
|
|
741
|
+
titleSkeletonClassName?: string;
|
|
742
|
+
};
|
|
743
|
+
/**
|
|
744
|
+
* Shared page title block: optional back, label, title (+ badge),
|
|
745
|
+
* description, meta, and trailing actions.
|
|
746
|
+
*/
|
|
747
|
+
declare function PageHeader({ label, title, description, titleLoading, badge, meta, back, children, className, titleClassName, descriptionClassName, titleSkeletonClassName, }: PageHeaderProps): React$1.JSX.Element;
|
|
748
|
+
|
|
564
749
|
declare const Pagination: {
|
|
565
750
|
({ className, ...props }: React$1.ComponentProps<"nav">): React$1.JSX.Element;
|
|
566
751
|
displayName: string;
|
|
@@ -623,6 +808,51 @@ declare const ResizableHandle: ({ withHandle, className, ...props }: React.Compo
|
|
|
623
808
|
declare const ScrollArea: React$1.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
624
809
|
declare const ScrollBar: React$1.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaScrollbarProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
625
810
|
|
|
811
|
+
type SearchableSelectItem = {
|
|
812
|
+
id: string;
|
|
813
|
+
label: string;
|
|
814
|
+
/** Optional secondary text (e.g. id shown beside the name). */
|
|
815
|
+
secondary?: string;
|
|
816
|
+
};
|
|
817
|
+
type SearchableSelectLoadResult = {
|
|
818
|
+
items: SearchableSelectItem[];
|
|
819
|
+
hasMore: boolean;
|
|
820
|
+
};
|
|
821
|
+
type SearchableSelectProps = {
|
|
822
|
+
value: string;
|
|
823
|
+
onChange: (id: string) => void;
|
|
824
|
+
/** Sentinel value meaning “no filter / all”. @default "all" */
|
|
825
|
+
allValue?: string;
|
|
826
|
+
allLabel: string;
|
|
827
|
+
searchPlaceholder: string;
|
|
828
|
+
loadItems: (args: {
|
|
829
|
+
query: string;
|
|
830
|
+
limit: number;
|
|
831
|
+
offset: number;
|
|
832
|
+
}) => Promise<SearchableSelectLoadResult>;
|
|
833
|
+
/**
|
|
834
|
+
* Resolve a label when the selected id is not yet in the loaded list.
|
|
835
|
+
* Return null to fall back to showing the raw id.
|
|
836
|
+
*/
|
|
837
|
+
resolveLabel?: (id: string) => Promise<string | null>;
|
|
838
|
+
pageSize?: number;
|
|
839
|
+
triggerClassName?: string;
|
|
840
|
+
icon?: React$1.ReactNode;
|
|
841
|
+
nestedInPopover?: boolean;
|
|
842
|
+
disabled?: boolean;
|
|
843
|
+
/** When this changes, cached items/labels are cleared. */
|
|
844
|
+
resetKey?: string | number;
|
|
845
|
+
emptyLabel?: string;
|
|
846
|
+
loadingLabel?: string;
|
|
847
|
+
loadingMoreLabel?: string;
|
|
848
|
+
debounceMs?: number;
|
|
849
|
+
};
|
|
850
|
+
/**
|
|
851
|
+
* Async searchable combobox with infinite scroll.
|
|
852
|
+
* Data loading is injected via `loadItems` — no product API coupling.
|
|
853
|
+
*/
|
|
854
|
+
declare function SearchableSelect({ value, onChange, allValue, allLabel, searchPlaceholder, loadItems, resolveLabel, pageSize, triggerClassName, icon, nestedInPopover, disabled, resetKey, emptyLabel, loadingLabel, loadingMoreLabel, debounceMs, }: SearchableSelectProps): React$1.JSX.Element;
|
|
855
|
+
|
|
626
856
|
declare const Select: React$1.FC<SelectPrimitive.SelectProps>;
|
|
627
857
|
declare const SelectGroup: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
628
858
|
declare const SelectValue: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
@@ -796,4 +1026,8 @@ declare const ToggleGroupItem: React$1.ForwardRefExoticComponent<Omit<ToggleGrou
|
|
|
796
1026
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
797
1027
|
} & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
798
1028
|
|
|
799
|
-
|
|
1029
|
+
type VisiblePage = number | "ellipsis";
|
|
1030
|
+
declare function buildVisiblePages(current: number, totalPages: number): VisiblePage[];
|
|
1031
|
+
declare function buildRangeLabel(page: number, pageSize: number, total: number, itemLabel?: string, formatTotal?: (n: number) => string): string;
|
|
1032
|
+
|
|
1033
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppChromeBrand, type AppChromeBrandProps, AppChromeHeader, type AppChromeHeaderProps, AppChromeSidebar, type AppChromeSidebarProps, AspectRatio, Aurora, type AuroraProps, AuthBanner, type AuthBannerProps, AuthBrand, type AuthBrandProps, AuthCard, AuthCardDescription, AuthCardHeader, AuthCardTitle, AuthFieldError, type AuthFieldErrorProps, AuthFooter, AuthFooterLink, type AuthFooterLinkProps, type AuthFooterProps, AuthShell, type AuthShellProps, Avatar, AvatarFallback, AvatarImage, Badge, type BadgeProps, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, Button, type ButtonProps, Calendar, type CalendarProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartCard, type ChartCardProps, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, Dropdown, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmailInput, type EmailInputProps, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HoverCard, HoverCardContent, HoverCardTrigger, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, type InputProps, Label, ListingPagination, type ListingPaginationProps, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, PageHeader, type PageHeaderProps, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PasswordInput, type PasswordInputProps, Popover, PopoverContent, PopoverTrigger, Progress, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, ScrollBar, SearchableSelect, type SearchableSelectItem, type SearchableSelectLoadResult, type SearchableSelectProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, Toaster$1 as SonnerToaster, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, type TableProps, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, type TextareaProps, Toast$1 as Toast, ToastAction, type ToastActionElement, ToastClose, ToastDescription, type ToastProps, ToastProvider, ToastTitle, ToastViewport, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type VisiblePage, authBannerVariants, badgeVariants, buildRangeLabel, buildVisiblePages, buttonVariants, cn, inputVariants, navigationMenuTriggerStyle, toast, toggleVariants, useFormField, useIsMobile, useSidebar, useToast };
|