@the12company/ui 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +180 -17
- package/dist/index.d.ts +156 -2
- package/dist/index.js +2989 -2232
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,37 +1,200 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @the12company/ui
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Capivara design system** — shared React components and design tokens for Vite and Next.js apps.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
One kit. Many products. Each app keeps its own brand color by overriding CSS variables.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
---
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
## What’s inside
|
|
10
|
+
|
|
11
|
+
| Layer | What you get |
|
|
12
|
+
| ----- | ------------ |
|
|
13
|
+
| **Tokens** | Colors, radius, sidebar, charts (`theme.css`) |
|
|
14
|
+
| **Utilities** | Shared classes like `bg-content-glass` |
|
|
15
|
+
| **Components** | Buttons, forms, dialogs, sidebar, chrome header, … |
|
|
16
|
+
| **Helpers** | `cn`, `useToast`, `useIsMobile` |
|
|
17
|
+
|
|
18
|
+
Lives in this monorepo at `packages/ui`. Published to npm as `@the12company/ui`.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Quick start (another app)
|
|
23
|
+
|
|
24
|
+
### 1. Install
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
npm install @the12company/ui
|
|
13
28
|
```
|
|
14
29
|
|
|
30
|
+
Also install the **peer dependencies** for the components you use (React, Radix primitives, etc.). See `package.json` → `peerDependencies`.
|
|
31
|
+
|
|
32
|
+
### 2. Styles
|
|
33
|
+
|
|
34
|
+
In your global CSS:
|
|
35
|
+
|
|
15
36
|
```css
|
|
16
37
|
@import "@the12company/ui/tokens/theme.css";
|
|
38
|
+
@import "@the12company/ui/tokens/utilities.css";
|
|
17
39
|
```
|
|
18
40
|
|
|
19
|
-
|
|
41
|
+
### 3. Tailwind
|
|
42
|
+
|
|
43
|
+
Map semantic colors to the CSS variables (same pattern as this repo’s `tailwind.config.ts`), and include the package in `content` so classes aren’t purged:
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
content: [
|
|
47
|
+
"./src/**/*.{ts,tsx}",
|
|
48
|
+
"./node_modules/@the12company/ui/dist/**/*.{js,mjs}",
|
|
49
|
+
]
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### 4. Use components
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
import { Button, Card, AppChromeHeader } from "@the12company/ui";
|
|
56
|
+
|
|
57
|
+
export function Example() {
|
|
58
|
+
return (
|
|
59
|
+
<Card className="p-6">
|
|
60
|
+
<Button>Salvar</Button>
|
|
61
|
+
</Card>
|
|
62
|
+
);
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Branding (your “main” color)
|
|
69
|
+
|
|
70
|
+
Components use **semantic** tokens (`bg-primary`, `text-destructive`, …) — never a hard-coded brand hex.
|
|
71
|
+
|
|
72
|
+
Override in your app:
|
|
73
|
+
|
|
74
|
+
```css
|
|
75
|
+
:root {
|
|
76
|
+
--primary: 160 84% 39%;
|
|
77
|
+
--primary-foreground: 0 0% 100%;
|
|
78
|
+
--ring: 160 84% 39%;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.dark {
|
|
82
|
+
--primary: 160 70% 45%;
|
|
83
|
+
--primary-foreground: 0 0% 100%;
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Values are **HSL channels without `hsl()`** (e.g. `217 91% 50%`), matching Tailwind’s `hsl(var(--primary))` setup.
|
|
88
|
+
|
|
89
|
+
Neutral defaults live in `theme-contract.css`. This product’s palette is `theme.css`.
|
|
20
90
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Layout chrome (structure only)
|
|
94
|
+
|
|
95
|
+
Floating glass header and sidebar shells — pass product UI as slots:
|
|
96
|
+
|
|
97
|
+
```tsx
|
|
98
|
+
import {
|
|
99
|
+
AppChromeBrand,
|
|
100
|
+
AppChromeHeader,
|
|
101
|
+
AppChromeSidebar,
|
|
102
|
+
PageHeader,
|
|
103
|
+
ChartCard,
|
|
104
|
+
ListingPagination,
|
|
105
|
+
SearchableSelect,
|
|
106
|
+
SidebarProvider,
|
|
107
|
+
SidebarTrigger,
|
|
108
|
+
} from "@the12company/ui";
|
|
109
|
+
|
|
110
|
+
<SidebarProvider>
|
|
111
|
+
<AppChromeSidebar
|
|
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
|
+
}
|
|
119
|
+
footer={<YourAccountMenu />}
|
|
120
|
+
>
|
|
121
|
+
<YourNavLinks />
|
|
122
|
+
</AppChromeSidebar>
|
|
123
|
+
|
|
124
|
+
<AppChromeHeader
|
|
125
|
+
start={<SidebarTrigger />}
|
|
126
|
+
topBar={<YourTopBar />}
|
|
127
|
+
>
|
|
128
|
+
<YourFiltersOrTrialStrip />
|
|
129
|
+
</AppChromeHeader>
|
|
130
|
+
</SidebarProvider>
|
|
131
|
+
```
|
|
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
|
+
|
|
142
|
+
Primitives (`Sidebar`, `SidebarMenu`, `SidebarTrigger`, …) are also exported for custom layouts.
|
|
143
|
+
|
|
144
|
+
No routing or business logic inside the kit — only structure and look.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Developing in this repo
|
|
149
|
+
|
|
150
|
+
Day to day you **don’t need to publish**. Vite/TS resolve `@the12company/ui` to source.
|
|
151
|
+
|
|
152
|
+
```tsx
|
|
153
|
+
import { Button } from "@the12company/ui";
|
|
154
|
+
// existing app paths still work:
|
|
155
|
+
import { Button } from "@/components/ui/button";
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Edit files under `packages/ui/src/`.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Publishing a new version
|
|
163
|
+
|
|
164
|
+
Only needed when other repos should get updates.
|
|
165
|
+
|
|
166
|
+
1. Change code in `packages/ui/src/`
|
|
167
|
+
2. Bump `version` in `packages/ui/package.json` (e.g. `0.1.1` → `0.1.2`)
|
|
168
|
+
3. From the **repo root**:
|
|
24
169
|
|
|
25
170
|
```bash
|
|
26
171
|
npm run publish:ui
|
|
27
172
|
```
|
|
28
173
|
|
|
29
|
-
|
|
174
|
+
Requires `npm login` (or a local auth token). The GitHub `NPM_TOKEN` secret is optional if you only publish from your machine.
|
|
30
175
|
|
|
31
|
-
|
|
176
|
+
> Same version can’t be republished on npm — always bump first.
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Package layout
|
|
32
181
|
|
|
33
|
-
```bash
|
|
34
|
-
npm install @the12company/ui
|
|
35
182
|
```
|
|
183
|
+
packages/ui/
|
|
184
|
+
├── src/
|
|
185
|
+
│ ├── components/ # primitives + chrome + PageHeader, ChartCard, …
|
|
186
|
+
│ ├── hooks/
|
|
187
|
+
│ ├── lib/ # cn, pagination helpers
|
|
188
|
+
│ ├── tokens/
|
|
189
|
+
│ └── index.ts
|
|
190
|
+
├── package.json
|
|
191
|
+
└── README.md
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## Tips
|
|
36
197
|
|
|
37
|
-
|
|
198
|
+
- Prefer importing from `@the12company/ui` in new apps.
|
|
199
|
+
- Keep product pages, agents, and API logic **out** of this package.
|
|
200
|
+
- After adding a new shared component: export it from `src/index.ts`, bump version, publish.
|
package/dist/index.d.ts
CHANGED
|
@@ -110,6 +110,23 @@ declare const AlertDialogDescription: React$1.ForwardRefExoticComponent<Omit<Ale
|
|
|
110
110
|
declare const AlertDialogAction: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogActionProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
111
111
|
declare const AlertDialogCancel: React$1.ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogCancelProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
112
112
|
|
|
113
|
+
type AppChromeBrandProps = {
|
|
114
|
+
/** Brand mark (img, svg, or custom node). */
|
|
115
|
+
logo?: React$1.ReactNode;
|
|
116
|
+
title?: React$1.ReactNode;
|
|
117
|
+
subtitle?: React$1.ReactNode;
|
|
118
|
+
className?: string;
|
|
119
|
+
/**
|
|
120
|
+
* Override collapse detection. When omitted, uses sidebar state
|
|
121
|
+
* (hidden on mobile drawer).
|
|
122
|
+
*/
|
|
123
|
+
collapsed?: boolean;
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* Sidebar brand row: logo + title/subtitle that collapse with the sidebar.
|
|
127
|
+
*/
|
|
128
|
+
declare function AppChromeBrand({ logo, title, subtitle, className, collapsed: collapsedProp, }: AppChromeBrandProps): React$1.JSX.Element;
|
|
129
|
+
|
|
113
130
|
type AppChromeHeaderProps = {
|
|
114
131
|
/** Ref on the outer `<header>` (e.g. for measuring chrome height). */
|
|
115
132
|
headerRef?: React$1.Ref<HTMLElement>;
|
|
@@ -127,6 +144,29 @@ type AppChromeHeaderProps = {
|
|
|
127
144
|
*/
|
|
128
145
|
declare function AppChromeHeader({ headerRef, className, start, topBar, children, }: AppChromeHeaderProps): React$1.JSX.Element;
|
|
129
146
|
|
|
147
|
+
type AppChromeSidebarProps = {
|
|
148
|
+
/** Brand / logo area at the top. */
|
|
149
|
+
header?: React$1.ReactNode;
|
|
150
|
+
/** Navigation (menus, links). */
|
|
151
|
+
children?: React$1.ReactNode;
|
|
152
|
+
/** Account / settings docked at the bottom. */
|
|
153
|
+
footer?: React$1.ReactNode;
|
|
154
|
+
/** Passed to underlying `Sidebar` (default `"icon"`). */
|
|
155
|
+
collapsible?: "offcanvas" | "icon" | "none";
|
|
156
|
+
className?: string;
|
|
157
|
+
contentClassName?: string;
|
|
158
|
+
/**
|
|
159
|
+
* On mobile / drawer mode, close the sheet when an in-app link is clicked.
|
|
160
|
+
* @default true
|
|
161
|
+
*/
|
|
162
|
+
closeOnNavigate?: boolean;
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* Structural app sidebar: header + scrollable nav + footer.
|
|
166
|
+
* Product nav items, brand, and account UI are passed as slots.
|
|
167
|
+
*/
|
|
168
|
+
declare function AppChromeSidebar({ header, children, footer, collapsible, className, contentClassName, closeOnNavigate, }: AppChromeSidebarProps): React$1.JSX.Element;
|
|
169
|
+
|
|
130
170
|
declare const AspectRatio: React$1.ForwardRefExoticComponent<AspectRatioPrimitive.AspectRatioProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
131
171
|
|
|
132
172
|
declare const Avatar: React$1.ForwardRefExoticComponent<Omit<AvatarPrimitive.AvatarProps & React$1.RefAttributes<HTMLSpanElement>, "ref"> & React$1.RefAttributes<HTMLSpanElement>>;
|
|
@@ -256,6 +296,22 @@ declare const ChartLegendContent: React$1.ForwardRefExoticComponent<Omit<React$1
|
|
|
256
296
|
nameKey?: string;
|
|
257
297
|
}, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
258
298
|
|
|
299
|
+
type ChartCardProps = {
|
|
300
|
+
title: React$1.ReactNode;
|
|
301
|
+
subtitle?: React$1.ReactNode;
|
|
302
|
+
children: React$1.ReactNode;
|
|
303
|
+
action?: React$1.ReactNode;
|
|
304
|
+
titleInfo?: React$1.ReactNode;
|
|
305
|
+
titleClassName?: string;
|
|
306
|
+
/** Use glass surface (`bg-content-glass`) instead of solid card. */
|
|
307
|
+
glass?: boolean;
|
|
308
|
+
className?: string;
|
|
309
|
+
};
|
|
310
|
+
/**
|
|
311
|
+
* Section / chart surface with title row, optional subtitle, and action slot.
|
|
312
|
+
*/
|
|
313
|
+
declare function ChartCard({ title, subtitle, children, action, titleInfo, titleClassName, glass, className, }: ChartCardProps): React$1.JSX.Element;
|
|
314
|
+
|
|
259
315
|
declare const Checkbox: React$1.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & React$1.RefAttributes<HTMLButtonElement>, "ref"> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
260
316
|
|
|
261
317
|
declare const Collapsible: React$1.ForwardRefExoticComponent<CollapsiblePrimitive.CollapsibleProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
@@ -500,6 +556,28 @@ declare const InputOTPSeparator: React$1.ForwardRefExoticComponent<Omit<React$1.
|
|
|
500
556
|
|
|
501
557
|
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>>;
|
|
502
558
|
|
|
559
|
+
type ListingPaginationProps = {
|
|
560
|
+
page: number;
|
|
561
|
+
totalPages: number;
|
|
562
|
+
total?: number;
|
|
563
|
+
pageSize?: number;
|
|
564
|
+
itemLabel?: string;
|
|
565
|
+
disabled?: boolean;
|
|
566
|
+
variant?: "default" | "minimal";
|
|
567
|
+
className?: string;
|
|
568
|
+
onPageChange: (page: number) => void;
|
|
569
|
+
/** Override total formatting in the range label (e.g. capped counts). */
|
|
570
|
+
formatTotal?: (n: number) => string;
|
|
571
|
+
labels?: {
|
|
572
|
+
previous?: string;
|
|
573
|
+
next?: string;
|
|
574
|
+
previousAria?: string;
|
|
575
|
+
nextAria?: string;
|
|
576
|
+
pageAria?: (page: number) => string;
|
|
577
|
+
};
|
|
578
|
+
};
|
|
579
|
+
declare function ListingPagination({ page, totalPages, total, pageSize, itemLabel, disabled, variant, className, onPageChange, formatTotal, labels, }: ListingPaginationProps): React$1.JSX.Element | null;
|
|
580
|
+
|
|
503
581
|
declare const MenubarMenu: (props: MenubarPrimitive.MenubarMenuProps & {
|
|
504
582
|
__scopeMenubar?: _radix_ui_react_context.Scope;
|
|
505
583
|
}) => React$1.JSX.Element;
|
|
@@ -538,6 +616,33 @@ declare const NavigationMenuLink: React$1.ForwardRefExoticComponent<NavigationMe
|
|
|
538
616
|
declare const NavigationMenuViewport: React$1.ForwardRefExoticComponent<Omit<NavigationMenuPrimitive.NavigationMenuViewportProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
539
617
|
declare const NavigationMenuIndicator: React$1.ForwardRefExoticComponent<Omit<NavigationMenuPrimitive.NavigationMenuIndicatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
540
618
|
|
|
619
|
+
type PageHeaderProps = {
|
|
620
|
+
/** Optional eyebrow above the title. */
|
|
621
|
+
label?: React$1.ReactNode;
|
|
622
|
+
title: React$1.ReactNode;
|
|
623
|
+
description?: React$1.ReactNode;
|
|
624
|
+
/** Shown while the title is resolving (e.g. async folder name). */
|
|
625
|
+
titleLoading?: boolean;
|
|
626
|
+
/** Badge or chips next to the title. */
|
|
627
|
+
badge?: React$1.ReactNode;
|
|
628
|
+
/** Right-side meta (e.g. “Updated at …”). */
|
|
629
|
+
meta?: React$1.ReactNode;
|
|
630
|
+
/** Back control (link/button) — fully owned by the consumer. */
|
|
631
|
+
back?: React$1.ReactNode;
|
|
632
|
+
/** Actions aligned to the end (buttons, menus). */
|
|
633
|
+
children?: React$1.ReactNode;
|
|
634
|
+
className?: string;
|
|
635
|
+
titleClassName?: string;
|
|
636
|
+
descriptionClassName?: string;
|
|
637
|
+
/** Skeleton width hint when `titleLoading`. */
|
|
638
|
+
titleSkeletonClassName?: string;
|
|
639
|
+
};
|
|
640
|
+
/**
|
|
641
|
+
* Shared page title block: optional back, label, title (+ badge),
|
|
642
|
+
* description, meta, and trailing actions.
|
|
643
|
+
*/
|
|
644
|
+
declare function PageHeader({ label, title, description, titleLoading, badge, meta, back, children, className, titleClassName, descriptionClassName, titleSkeletonClassName, }: PageHeaderProps): React$1.JSX.Element;
|
|
645
|
+
|
|
541
646
|
declare const Pagination: {
|
|
542
647
|
({ className, ...props }: React$1.ComponentProps<"nav">): React$1.JSX.Element;
|
|
543
648
|
displayName: string;
|
|
@@ -600,6 +705,51 @@ declare const ResizableHandle: ({ withHandle, className, ...props }: React.Compo
|
|
|
600
705
|
declare const ScrollArea: React$1.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
601
706
|
declare const ScrollBar: React$1.ForwardRefExoticComponent<Omit<ScrollAreaPrimitive.ScrollAreaScrollbarProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
602
707
|
|
|
708
|
+
type SearchableSelectItem = {
|
|
709
|
+
id: string;
|
|
710
|
+
label: string;
|
|
711
|
+
/** Optional secondary text (e.g. id shown beside the name). */
|
|
712
|
+
secondary?: string;
|
|
713
|
+
};
|
|
714
|
+
type SearchableSelectLoadResult = {
|
|
715
|
+
items: SearchableSelectItem[];
|
|
716
|
+
hasMore: boolean;
|
|
717
|
+
};
|
|
718
|
+
type SearchableSelectProps = {
|
|
719
|
+
value: string;
|
|
720
|
+
onChange: (id: string) => void;
|
|
721
|
+
/** Sentinel value meaning “no filter / all”. @default "all" */
|
|
722
|
+
allValue?: string;
|
|
723
|
+
allLabel: string;
|
|
724
|
+
searchPlaceholder: string;
|
|
725
|
+
loadItems: (args: {
|
|
726
|
+
query: string;
|
|
727
|
+
limit: number;
|
|
728
|
+
offset: number;
|
|
729
|
+
}) => Promise<SearchableSelectLoadResult>;
|
|
730
|
+
/**
|
|
731
|
+
* Resolve a label when the selected id is not yet in the loaded list.
|
|
732
|
+
* Return null to fall back to showing the raw id.
|
|
733
|
+
*/
|
|
734
|
+
resolveLabel?: (id: string) => Promise<string | null>;
|
|
735
|
+
pageSize?: number;
|
|
736
|
+
triggerClassName?: string;
|
|
737
|
+
icon?: React$1.ReactNode;
|
|
738
|
+
nestedInPopover?: boolean;
|
|
739
|
+
disabled?: boolean;
|
|
740
|
+
/** When this changes, cached items/labels are cleared. */
|
|
741
|
+
resetKey?: string | number;
|
|
742
|
+
emptyLabel?: string;
|
|
743
|
+
loadingLabel?: string;
|
|
744
|
+
loadingMoreLabel?: string;
|
|
745
|
+
debounceMs?: number;
|
|
746
|
+
};
|
|
747
|
+
/**
|
|
748
|
+
* Async searchable combobox with infinite scroll.
|
|
749
|
+
* Data loading is injected via `loadItems` — no product API coupling.
|
|
750
|
+
*/
|
|
751
|
+
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;
|
|
752
|
+
|
|
603
753
|
declare const Select: React$1.FC<SelectPrimitive.SelectProps>;
|
|
604
754
|
declare const SelectGroup: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
605
755
|
declare const SelectValue: React$1.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React$1.RefAttributes<HTMLSpanElement>>;
|
|
@@ -621,7 +771,7 @@ declare const SheetClose: React$1.ForwardRefExoticComponent<DialogPrimitive.Dial
|
|
|
621
771
|
declare const SheetPortal: React$1.FC<DialogPrimitive.DialogPortalProps>;
|
|
622
772
|
declare const SheetOverlay: React$1.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
623
773
|
declare const sheetVariants: (props?: ({
|
|
624
|
-
side?: "top" | "bottom" | "
|
|
774
|
+
side?: "top" | "bottom" | "left" | "right" | null | undefined;
|
|
625
775
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
626
776
|
interface SheetContentProps extends React$1.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, VariantProps<typeof sheetVariants> {
|
|
627
777
|
overlayClassName?: string;
|
|
@@ -773,4 +923,8 @@ declare const ToggleGroupItem: React$1.ForwardRefExoticComponent<Omit<ToggleGrou
|
|
|
773
923
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
774
924
|
} & class_variance_authority_types.ClassProp) | undefined) => string> & React$1.RefAttributes<HTMLButtonElement>>;
|
|
775
925
|
|
|
776
|
-
|
|
926
|
+
type VisiblePage = number | "ellipsis";
|
|
927
|
+
declare function buildVisiblePages(current: number, totalPages: number): VisiblePage[];
|
|
928
|
+
declare function buildRangeLabel(page: number, pageSize: number, total: number, itemLabel?: string, formatTotal?: (n: number) => string): string;
|
|
929
|
+
|
|
930
|
+
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, 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, 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, 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, badgeVariants, buildRangeLabel, buildVisiblePages, buttonVariants, cn, inputVariants, navigationMenuTriggerStyle, toast, toggleVariants, useFormField, useIsMobile, useSidebar, useToast };
|