@nqlib/nqui 0.3.1 → 0.3.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 +6 -1
- package/dist/App.d.ts.map +1 -1
- package/dist/components/AppLayout.d.ts.map +1 -1
- package/dist/components/app-sidebar.d.ts.map +1 -1
- package/dist/components/custom/command-palette.d.ts +19 -0
- package/dist/components/custom/command-palette.d.ts.map +1 -0
- package/dist/components/custom/enhanced-badge.d.ts +1 -1
- package/dist/components/custom/enhanced-button.d.ts +1 -1
- package/dist/components/custom/enhanced-checkbox.d.ts +1 -1
- package/dist/components/custom/enhanced-checkbox.d.ts.map +1 -1
- package/dist/components/custom/enhanced-scroll-area.d.ts +11 -13
- package/dist/components/custom/enhanced-scroll-area.d.ts.map +1 -1
- package/dist/components/custom/nqui-logo.d.ts +1 -0
- package/dist/components/custom/nqui-logo.d.ts.map +1 -1
- package/dist/components/custom/segmented-control.d.ts +48 -0
- package/dist/components/custom/segmented-control.d.ts.map +1 -0
- package/dist/components/ui/badge.d.ts +1 -1
- package/dist/components/ui/button.d.ts +1 -1
- package/dist/components/ui/input-group.d.ts +1 -1
- package/dist/components/ui/sheet.d.ts +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/keyboard.d.ts +1 -0
- package/dist/lib/keyboard.d.ts.map +1 -1
- package/dist/nqui.cjs.js +85 -85
- package/dist/nqui.es.js +13099 -12927
- package/dist/pages/ChartShowcase.d.ts.map +1 -1
- package/dist/pages/ComponentShowcase.d.ts.map +1 -1
- package/dist/pages/DataTableShowcase.d.ts +2 -0
- package/dist/pages/DataTableShowcase.d.ts.map +1 -0
- package/dist/styles.css +5 -13
- package/docs/components/README.md +119 -0
- package/docs/components/nqui-accordion.md +20 -0
- package/docs/components/nqui-alert-dialog.md +31 -0
- package/docs/components/nqui-alert.md +19 -0
- package/docs/components/nqui-aspect-ratio.md +17 -0
- package/docs/components/nqui-avatar.md +18 -0
- package/docs/components/nqui-badge.md +42 -0
- package/docs/components/nqui-breadcrumb.md +24 -0
- package/docs/components/nqui-button-group.md +31 -0
- package/docs/components/nqui-button.md +56 -0
- package/docs/components/nqui-calendar.md +46 -0
- package/docs/components/nqui-card.md +31 -0
- package/docs/components/nqui-carousel.md +22 -0
- package/docs/components/nqui-checkbox.md +34 -0
- package/docs/components/nqui-code-block.md +39 -0
- package/docs/components/nqui-code-editor.md +21 -0
- package/docs/components/nqui-collapsible.md +18 -0
- package/docs/components/nqui-color-picker.md +38 -0
- package/docs/components/nqui-color-slider.md +23 -0
- package/docs/components/nqui-combobox.md +65 -0
- package/docs/components/nqui-command-palette.md +29 -0
- package/docs/components/nqui-command.md +39 -0
- package/docs/components/nqui-context-menu.md +33 -0
- package/docs/components/nqui-dialog.md +36 -0
- package/docs/components/nqui-drawer.md +27 -0
- package/docs/components/nqui-dropdown-menu.md +56 -0
- package/docs/components/nqui-empty.md +22 -0
- package/docs/components/nqui-field.md +42 -0
- package/docs/components/nqui-frosted-glass.md +19 -0
- package/docs/components/nqui-hover-card.md +18 -0
- package/docs/components/nqui-input-group.md +22 -0
- package/docs/components/nqui-input-otp.md +23 -0
- package/docs/components/nqui-input.md +25 -0
- package/docs/components/nqui-item.md +25 -0
- package/docs/components/nqui-kbd.md +25 -0
- package/docs/components/nqui-label.md +16 -0
- package/docs/components/nqui-logo.md +16 -0
- package/docs/components/nqui-menubar.md +22 -0
- package/docs/components/nqui-native-select.md +28 -0
- package/docs/components/nqui-navigation-menu.md +25 -0
- package/docs/components/nqui-pagination.md +25 -0
- package/docs/components/nqui-popover.md +34 -0
- package/docs/components/nqui-progress.md +22 -0
- package/docs/components/nqui-radio-group.md +34 -0
- package/docs/components/nqui-rating.md +35 -0
- package/docs/components/nqui-resizable.md +23 -0
- package/docs/components/nqui-sandbox.md +27 -0
- package/docs/components/nqui-scroll-area.md +32 -0
- package/docs/components/nqui-segmented-control.md +18 -0
- package/docs/components/nqui-select.md +50 -0
- package/docs/components/nqui-separator.md +16 -0
- package/docs/components/nqui-sheet.md +27 -0
- package/docs/components/nqui-sidebar.md +45 -0
- package/docs/components/nqui-skeleton.md +15 -0
- package/docs/components/nqui-slider.md +16 -0
- package/docs/components/nqui-snippet.md +28 -0
- package/docs/components/nqui-sortable.md +46 -0
- package/docs/components/nqui-spinner.md +16 -0
- package/docs/components/nqui-switch.md +15 -0
- package/docs/components/nqui-table-of-contents.md +37 -0
- package/docs/components/nqui-tabs.md +35 -0
- package/docs/components/nqui-textarea.md +15 -0
- package/docs/components/nqui-toaster.md +44 -0
- package/docs/components/nqui-toggle-group.md +21 -0
- package/docs/components/nqui-toggle.md +15 -0
- package/docs/components/nqui-tooltip.md +24 -0
- package/docs/components/nqui-tracker.md +38 -0
- package/docs/internal-notes/BUILD_VERIFICATION.md +174 -0
- package/docs/internal-notes/DASHBOARD_LAYOUT_DESIGN.md +1429 -0
- package/docs/internal-notes/FROSTED_GLASS_FIX.md +50 -0
- package/docs/internal-notes/PUBLISHING.md +339 -0
- package/docs/internal-notes/layoutdesign.md +616 -0
- package/docs/internal-notes/progress.md +348 -0
- package/docs/internal-notes/stacked-avatar-implementation.md +38 -0
- package/package.json +2 -1
- /package/{INSTALLATION.md → docs/internal-notes/INSTALLATION.md} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartShowcase.d.ts","sourceRoot":"","sources":["../../src/pages/ChartShowcase.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChartShowcase.d.ts","sourceRoot":"","sources":["../../src/pages/ChartShowcase.tsx"],"names":[],"mappings":"AAwHA,MAAM,CAAC,OAAO,UAAU,aAAa,4CAorBpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentShowcase.d.ts","sourceRoot":"","sources":["../../src/pages/ComponentShowcase.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ComponentShowcase.d.ts","sourceRoot":"","sources":["../../src/pages/ComponentShowcase.tsx"],"names":[],"mappings":"AAkdA,MAAM,CAAC,OAAO,UAAU,SAAS,4CA+tFhC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTableShowcase.d.ts","sourceRoot":"","sources":["../../src/pages/DataTableShowcase.tsx"],"names":[],"mappings":"AAuBA,MAAM,CAAC,OAAO,UAAU,iBAAiB,4CA0IxC"}
|
package/dist/styles.css
CHANGED
|
@@ -179,14 +179,6 @@
|
|
|
179
179
|
@apply border-border outline-ring/50;
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
/* Viewport lock - all scroll managed by individual containers, not body */
|
|
183
|
-
html,
|
|
184
|
-
body,
|
|
185
|
-
#root {
|
|
186
|
-
height: 100%;
|
|
187
|
-
overflow: hidden;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
182
|
body {
|
|
191
183
|
@apply font-sans bg-background text-foreground;
|
|
192
184
|
}
|
|
@@ -750,7 +742,7 @@
|
|
|
750
742
|
* Used for: tooltips, hover cards
|
|
751
743
|
* Highest interactive layer to ensure tooltips appear above all UI
|
|
752
744
|
*/
|
|
753
|
-
--z-tooltip:
|
|
745
|
+
--z-tooltip: 9998;
|
|
754
746
|
|
|
755
747
|
/* Debug layer - debug tools (development only)
|
|
756
748
|
* Used for: debug panels, debug overlays, development tools
|
|
@@ -861,8 +853,8 @@
|
|
|
861
853
|
/* Sidebar */
|
|
862
854
|
--sidebar: oklch(0.985 0 0);
|
|
863
855
|
--sidebar-foreground: oklch(0.145 0 0);
|
|
864
|
-
--sidebar-primary:
|
|
865
|
-
--sidebar-primary-foreground:
|
|
856
|
+
--sidebar-primary: var(--primary);
|
|
857
|
+
--sidebar-primary-foreground: var(--primary-foreground);
|
|
866
858
|
--sidebar-accent: oklch(0.96 0 0);
|
|
867
859
|
--sidebar-accent-foreground: oklch(0.205 0 0);
|
|
868
860
|
--sidebar-border: oklch(0.922 0 0);
|
|
@@ -969,8 +961,8 @@
|
|
|
969
961
|
/* Sidebar for dark mode */
|
|
970
962
|
--sidebar: oklch(0.205 0 0);
|
|
971
963
|
--sidebar-foreground: oklch(0.985 0 0);
|
|
972
|
-
--sidebar-primary:
|
|
973
|
-
--sidebar-primary-foreground:
|
|
964
|
+
--sidebar-primary: var(--primary);
|
|
965
|
+
--sidebar-primary-foreground: var(--primary-foreground);
|
|
974
966
|
--sidebar-accent: oklch(0.269 0 0);
|
|
975
967
|
--sidebar-accent-foreground: oklch(0.985 0 0);
|
|
976
968
|
--sidebar-border: oklch(1 0 0 / 10%);
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# nqui Component Instructions
|
|
2
|
+
|
|
3
|
+
Implementation guides for each component. Optimized for AI/LLM consumption.
|
|
4
|
+
|
|
5
|
+
**Import:** `import { X } from "@nqlib/nqui"`
|
|
6
|
+
**CSS:** `@import "@nqlib/nqui/styles"` (via `npx @nqlib/nqui init-css`)
|
|
7
|
+
|
|
8
|
+
## Prerequisites (must-have)
|
|
9
|
+
|
|
10
|
+
| Dependency | Version | Notes |
|
|
11
|
+
|------------|---------|-------|
|
|
12
|
+
| **Tailwind CSS** | ^4.x | Required. Vite: add `@tailwindcss/vite` plugin. Next.js: use `@source` directives in CSS. |
|
|
13
|
+
| **React** | 18+ | Peer dependency. |
|
|
14
|
+
| **tw-animate-css** | — | `@import "tw-animate-css"` in your CSS (added by init-css). |
|
|
15
|
+
| **Radix UI** | — | Bundled with nqui (Dialog, Select, etc.). |
|
|
16
|
+
|
|
17
|
+
Optional peer deps (for specific components): `react-day-picker` (Calendar), `sonner` (Toaster), `react-resizable-panels` (Resizable), `shiki` (CodeBlock), `@codesandbox/sandpack-react` (Sandbox).
|
|
18
|
+
|
|
19
|
+
## Shared Notes
|
|
20
|
+
|
|
21
|
+
- **CSS vars required:** nqui components use `--primary`, `--background`, `--foreground`, etc. Run `npx @nqlib/nqui init-css`.
|
|
22
|
+
- **Enhanced vs Core:** Button, Badge, Checkbox, Select, etc. default to enhanced (3D, animations). Use `CoreButton`, `CoreBadge`, etc. for base shadcn.
|
|
23
|
+
- **Style injection:** Checkbox, Rating, Combobox inject `<style>` at mount. Use client-only guard for SSR.
|
|
24
|
+
- **OKLCH:** ColorPicker uses OKLCH strings (`oklch(0.5 0.15 240)`), not hex.
|
|
25
|
+
- **SidebarProvider:** Must wrap entire layout (sidebar + content), not just Sidebar.
|
|
26
|
+
|
|
27
|
+
## Buttons & Actions
|
|
28
|
+
| Component | File |
|
|
29
|
+
|-----------|------|
|
|
30
|
+
| Button | [nqui-button.md](./nqui-button.md) |
|
|
31
|
+
| ButtonGroup | [nqui-button-group.md](./nqui-button-group.md) |
|
|
32
|
+
| Toggle | [nqui-toggle.md](./nqui-toggle.md) |
|
|
33
|
+
| ToggleGroup | [nqui-toggle-group.md](./nqui-toggle-group.md) |
|
|
34
|
+
| SegmentedControl | [nqui-segmented-control.md](./nqui-segmented-control.md) |
|
|
35
|
+
|
|
36
|
+
## Forms
|
|
37
|
+
| Component | File |
|
|
38
|
+
|-----------|------|
|
|
39
|
+
| Input | [nqui-input.md](./nqui-input.md) |
|
|
40
|
+
| InputGroup | [nqui-input-group.md](./nqui-input-group.md) |
|
|
41
|
+
| Textarea | [nqui-textarea.md](./nqui-textarea.md) |
|
|
42
|
+
| Select | [nqui-select.md](./nqui-select.md) |
|
|
43
|
+
| NativeSelect | [nqui-native-select.md](./nqui-native-select.md) |
|
|
44
|
+
| Checkbox | [nqui-checkbox.md](./nqui-checkbox.md) |
|
|
45
|
+
| RadioGroup | [nqui-radio-group.md](./nqui-radio-group.md) |
|
|
46
|
+
| Switch | [nqui-switch.md](./nqui-switch.md) |
|
|
47
|
+
| Slider | [nqui-slider.md](./nqui-slider.md) |
|
|
48
|
+
| Rating | [nqui-rating.md](./nqui-rating.md) |
|
|
49
|
+
| InputOTP | [nqui-input-otp.md](./nqui-input-otp.md) |
|
|
50
|
+
| Field | [nqui-field.md](./nqui-field.md) |
|
|
51
|
+
| Combobox | [nqui-combobox.md](./nqui-combobox.md) |
|
|
52
|
+
| ColorPicker | [nqui-color-picker.md](./nqui-color-picker.md) |
|
|
53
|
+
| ColorSlider | [nqui-color-slider.md](./nqui-color-slider.md) |
|
|
54
|
+
| Label | [nqui-label.md](./nqui-label.md) |
|
|
55
|
+
|
|
56
|
+
## Display
|
|
57
|
+
| Component | File |
|
|
58
|
+
|-----------|------|
|
|
59
|
+
| Badge | [nqui-badge.md](./nqui-badge.md) |
|
|
60
|
+
| Avatar | [nqui-avatar.md](./nqui-avatar.md) |
|
|
61
|
+
| Alert | [nqui-alert.md](./nqui-alert.md) |
|
|
62
|
+
| Empty | [nqui-empty.md](./nqui-empty.md) |
|
|
63
|
+
| Skeleton | [nqui-skeleton.md](./nqui-skeleton.md) |
|
|
64
|
+
| Spinner | [nqui-spinner.md](./nqui-spinner.md) |
|
|
65
|
+
| Progress | [nqui-progress.md](./nqui-progress.md) |
|
|
66
|
+
| Separator | [nqui-separator.md](./nqui-separator.md) |
|
|
67
|
+
| Card | [nqui-card.md](./nqui-card.md) |
|
|
68
|
+
| Item | [nqui-item.md](./nqui-item.md) |
|
|
69
|
+
| Kbd | [nqui-kbd.md](./nqui-kbd.md) |
|
|
70
|
+
| Tracker | [nqui-tracker.md](./nqui-tracker.md) |
|
|
71
|
+
| FrostedGlass | [nqui-frosted-glass.md](./nqui-frosted-glass.md) |
|
|
72
|
+
| NquiLogo | [nqui-logo.md](./nqui-logo.md) |
|
|
73
|
+
|
|
74
|
+
## Navigation & Menus
|
|
75
|
+
| Component | File |
|
|
76
|
+
|-----------|------|
|
|
77
|
+
| Breadcrumb | [nqui-breadcrumb.md](./nqui-breadcrumb.md) |
|
|
78
|
+
| Tabs | [nqui-tabs.md](./nqui-tabs.md) |
|
|
79
|
+
| DropdownMenu | [nqui-dropdown-menu.md](./nqui-dropdown-menu.md) |
|
|
80
|
+
| ContextMenu | [nqui-context-menu.md](./nqui-context-menu.md) |
|
|
81
|
+
| Menubar | [nqui-menubar.md](./nqui-menubar.md) |
|
|
82
|
+
| NavigationMenu | [nqui-navigation-menu.md](./nqui-navigation-menu.md) |
|
|
83
|
+
| Pagination | [nqui-pagination.md](./nqui-pagination.md) |
|
|
84
|
+
| Command | [nqui-command.md](./nqui-command.md) |
|
|
85
|
+
| CommandPalette | [nqui-command-palette.md](./nqui-command-palette.md) |
|
|
86
|
+
| TableOfContents | [nqui-table-of-contents.md](./nqui-table-of-contents.md) |
|
|
87
|
+
|
|
88
|
+
## Overlays & Dialogs
|
|
89
|
+
| Component | File |
|
|
90
|
+
|-----------|------|
|
|
91
|
+
| Dialog | [nqui-dialog.md](./nqui-dialog.md) |
|
|
92
|
+
| AlertDialog | [nqui-alert-dialog.md](./nqui-alert-dialog.md) |
|
|
93
|
+
| Drawer | [nqui-drawer.md](./nqui-drawer.md) |
|
|
94
|
+
| Sheet | [nqui-sheet.md](./nqui-sheet.md) |
|
|
95
|
+
| Popover | [nqui-popover.md](./nqui-popover.md) |
|
|
96
|
+
| HoverCard | [nqui-hover-card.md](./nqui-hover-card.md) |
|
|
97
|
+
| Tooltip | [nqui-tooltip.md](./nqui-tooltip.md) |
|
|
98
|
+
| Toaster | [nqui-toaster.md](./nqui-toaster.md) |
|
|
99
|
+
|
|
100
|
+
## Layout
|
|
101
|
+
| Component | File |
|
|
102
|
+
|-----------|------|
|
|
103
|
+
| Accordion | [nqui-accordion.md](./nqui-accordion.md) |
|
|
104
|
+
| Collapsible | [nqui-collapsible.md](./nqui-collapsible.md) |
|
|
105
|
+
| ScrollArea | [nqui-scroll-area.md](./nqui-scroll-area.md) |
|
|
106
|
+
| AspectRatio | [nqui-aspect-ratio.md](./nqui-aspect-ratio.md) |
|
|
107
|
+
| Carousel | [nqui-carousel.md](./nqui-carousel.md) |
|
|
108
|
+
| Resizable | [nqui-resizable.md](./nqui-resizable.md) |
|
|
109
|
+
| Sidebar | [nqui-sidebar.md](./nqui-sidebar.md) |
|
|
110
|
+
| Sortable | [nqui-sortable.md](./nqui-sortable.md) |
|
|
111
|
+
|
|
112
|
+
## Advanced
|
|
113
|
+
| Component | File |
|
|
114
|
+
|-----------|------|
|
|
115
|
+
| Calendar | [nqui-calendar.md](./nqui-calendar.md) |
|
|
116
|
+
| CodeBlock | [nqui-code-block.md](./nqui-code-block.md) |
|
|
117
|
+
| CodeEditor | [nqui-code-editor.md](./nqui-code-editor.md) |
|
|
118
|
+
| Sandbox | [nqui-sandbox.md](./nqui-sandbox.md) |
|
|
119
|
+
| Snippet | [nqui-snippet.md](./nqui-snippet.md) |
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# nqui Accordion
|
|
2
|
+
|
|
3
|
+
> Collapsible accordion. type: single|multiple, collapsible.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from "@nqlib/nqui"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Basic
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<Accordion type="single" collapsible>
|
|
15
|
+
<AccordionItem value="1">
|
|
16
|
+
<AccordionTrigger>Header</AccordionTrigger>
|
|
17
|
+
<AccordionContent>Content</AccordionContent>
|
|
18
|
+
</AccordionItem>
|
|
19
|
+
</Accordion>
|
|
20
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# nqui AlertDialog
|
|
2
|
+
|
|
3
|
+
> Confirmation dialog. AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import {
|
|
9
|
+
AlertDialog, AlertDialogTrigger, AlertDialogContent,
|
|
10
|
+
AlertDialogHeader, AlertDialogFooter, AlertDialogTitle,
|
|
11
|
+
AlertDialogDescription, AlertDialogAction, AlertDialogCancel
|
|
12
|
+
} from "@nqlib/nqui"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Basic
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
<AlertDialog>
|
|
19
|
+
<AlertDialogTrigger asChild><Button>Delete</Button></AlertDialogTrigger>
|
|
20
|
+
<AlertDialogContent>
|
|
21
|
+
<AlertDialogHeader>
|
|
22
|
+
<AlertDialogTitle>Confirm</AlertDialogTitle>
|
|
23
|
+
<AlertDialogDescription>Are you sure?</AlertDialogDescription>
|
|
24
|
+
</AlertDialogHeader>
|
|
25
|
+
<AlertDialogFooter>
|
|
26
|
+
<AlertDialogCancel>Cancel</AlertDialogCancel>
|
|
27
|
+
<AlertDialogAction>Confirm</AlertDialogAction>
|
|
28
|
+
</AlertDialogFooter>
|
|
29
|
+
</AlertDialogContent>
|
|
30
|
+
</AlertDialog>
|
|
31
|
+
```
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# nqui Alert
|
|
2
|
+
|
|
3
|
+
> Alert banner. Title, description, action.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Alert, AlertTitle, AlertDescription, AlertAction } from "@nqlib/nqui"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Basic
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<Alert>
|
|
15
|
+
<AlertTitle>Title</AlertTitle>
|
|
16
|
+
<AlertDescription>Description</AlertDescription>
|
|
17
|
+
<AlertAction asChild><Button>Action</Button></AlertAction>
|
|
18
|
+
</Alert>
|
|
19
|
+
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# nqui Avatar
|
|
2
|
+
|
|
3
|
+
> User avatar. Image + fallback.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Avatar, AvatarImage, AvatarFallback } from "@nqlib/nqui"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Basic
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<Avatar>
|
|
15
|
+
<AvatarImage src="/url" alt="Name" />
|
|
16
|
+
<AvatarFallback>AB</AvatarFallback>
|
|
17
|
+
</Avatar>
|
|
18
|
+
```
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# nqui Badge
|
|
2
|
+
|
|
3
|
+
> Status labels. 9 variants; ghost/link use CoreBadge.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Badge } from "@nqlib/nqui"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Basic
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<Badge>New</Badge>
|
|
15
|
+
<Badge variant="destructive">Error</Badge>
|
|
16
|
+
<Badge variant="secondary">Draft</Badge>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## All Variants
|
|
20
|
+
|
|
21
|
+
```tsx
|
|
22
|
+
<Badge variant="default" />
|
|
23
|
+
<Badge variant="secondary" />
|
|
24
|
+
<Badge variant="destructive" />
|
|
25
|
+
<Badge variant="success" />
|
|
26
|
+
<Badge variant="warning" />
|
|
27
|
+
<Badge variant="info" />
|
|
28
|
+
<Badge variant="outline" />
|
|
29
|
+
<Badge variant="ghost" />
|
|
30
|
+
<Badge variant="link" />
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## asChild
|
|
34
|
+
|
|
35
|
+
```tsx
|
|
36
|
+
<Badge asChild><a href="#">Link badge</a></Badge>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Notes
|
|
40
|
+
|
|
41
|
+
- ghost/link route to CoreBadge (different styling).
|
|
42
|
+
- Use `CoreBadge` for plain shadcn badge.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# nqui Breadcrumb
|
|
2
|
+
|
|
3
|
+
> Breadcrumb nav. List, item, link, page, separator, ellipsis.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import {
|
|
9
|
+
Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink,
|
|
10
|
+
BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis
|
|
11
|
+
} from "@nqlib/nqui"
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Basic
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
<Breadcrumb>
|
|
18
|
+
<BreadcrumbList>
|
|
19
|
+
<BreadcrumbItem><BreadcrumbLink href="/">Home</BreadcrumbLink></BreadcrumbItem>
|
|
20
|
+
<BreadcrumbSeparator />
|
|
21
|
+
<BreadcrumbItem><BreadcrumbPage>Current</BreadcrumbPage></BreadcrumbItem>
|
|
22
|
+
</BreadcrumbList>
|
|
23
|
+
</Breadcrumb>
|
|
24
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# nqui ButtonGroup
|
|
2
|
+
|
|
3
|
+
> Grouped buttons with separators.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { ButtonGroup, ButtonGroupSeparator, ButtonGroupText } from "@nqlib/nqui"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Basic
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<ButtonGroup>
|
|
15
|
+
<Button variant="outline">Left</Button>
|
|
16
|
+
<ButtonGroupSeparator />
|
|
17
|
+
<Button variant="outline">Right</Button>
|
|
18
|
+
</ButtonGroup>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## ButtonGroupText
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
<ButtonGroup>
|
|
25
|
+
<Button variant="outline"><Icon /></Button>
|
|
26
|
+
<ButtonGroupSeparator />
|
|
27
|
+
<ButtonGroupText>Label</ButtonGroupText>
|
|
28
|
+
<ButtonGroupSeparator />
|
|
29
|
+
<Button variant="outline"><Icon /></Button>
|
|
30
|
+
</ButtonGroup>
|
|
31
|
+
```
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# nqui Button
|
|
2
|
+
|
|
3
|
+
> Enhanced button with 9 variants, gradients, active scale. Default import is EnhancedButton.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Button } from "@nqlib/nqui"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Basic
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<Button>Click</Button>
|
|
15
|
+
<Button variant="destructive">Delete</Button>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Variants
|
|
19
|
+
|
|
20
|
+
| variant | Notes |
|
|
21
|
+
|---------|-------|
|
|
22
|
+
| default, destructive, secondary | Enhanced 3D |
|
|
23
|
+
| success, warning, info | Semantic |
|
|
24
|
+
| outline, ghost, link | Core fallback |
|
|
25
|
+
| sm, default, lg, icon | size |
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
<Button variant="success">Save</Button>
|
|
29
|
+
<Button variant="warning">Caution</Button>
|
|
30
|
+
<Button variant="info">Info</Button>
|
|
31
|
+
<Button size="icon"><Icon /></Button>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## asChild
|
|
35
|
+
|
|
36
|
+
Render as `<a>` or custom element:
|
|
37
|
+
|
|
38
|
+
```tsx
|
|
39
|
+
<Button asChild>
|
|
40
|
+
<a href="/page">Link</a>
|
|
41
|
+
</Button>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Loading
|
|
45
|
+
|
|
46
|
+
```tsx
|
|
47
|
+
<Button disabled>
|
|
48
|
+
<Spinner className="mr-2 size-4" />
|
|
49
|
+
Loading...
|
|
50
|
+
</Button>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Notes
|
|
54
|
+
|
|
55
|
+
- Active state uses `scale-95`; avoid parent `transform` overrides.
|
|
56
|
+
- Use `CoreButton` from `@nqlib/nqui` for base shadcn style.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# nqui Calendar
|
|
2
|
+
|
|
3
|
+
> Date picker. Single, range, multiple. Touch drag, hover preview (enhanced).
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Calendar } from "@nqlib/nqui"
|
|
9
|
+
import type { DateRange } from "react-day-picker"
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Basic
|
|
13
|
+
|
|
14
|
+
```tsx
|
|
15
|
+
<Calendar mode="single" selected={date} onSelect={setDate} />
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Range
|
|
19
|
+
|
|
20
|
+
```tsx
|
|
21
|
+
<Calendar mode="range" selected={range} onSelect={setRange} />
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Multiple
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
<Calendar mode="multiple" selected={dates} onSelect={setDates} />
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## numberOfMonths
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
<Calendar numberOfMonths={2} />
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Disabled
|
|
37
|
+
|
|
38
|
+
```tsx
|
|
39
|
+
<Calendar disabled={(d) => d < new Date()} />
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Notes
|
|
43
|
+
|
|
44
|
+
- Peer: `react-day-picker` v9+.
|
|
45
|
+
- Enhanced: touch drag selection, hover preview on drag.
|
|
46
|
+
- Footer slot for custom footer.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# nqui Card
|
|
2
|
+
|
|
3
|
+
> Container. Header, content, footer. Optional stickyHeader.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from "@nqlib/nqui"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Basic
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<Card>
|
|
15
|
+
<CardHeader>
|
|
16
|
+
<CardTitle>Title</CardTitle>
|
|
17
|
+
<CardDescription>Description</CardDescription>
|
|
18
|
+
</CardHeader>
|
|
19
|
+
<CardContent>Body</CardContent>
|
|
20
|
+
<CardFooter>Footer</CardFooter>
|
|
21
|
+
</Card>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Sticky Header
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
<Card stickyHeader className="h-[400px]">
|
|
28
|
+
<CardHeader>...</CardHeader>
|
|
29
|
+
<CardContent>Scrollable content</CardContent>
|
|
30
|
+
</Card>
|
|
31
|
+
```
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# nqui Carousel
|
|
2
|
+
|
|
3
|
+
> Carousel. CarouselContent, CarouselItem, CarouselPrevious, CarouselNext.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext } from "@nqlib/nqui"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Basic
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<Carousel>
|
|
15
|
+
<CarouselContent>
|
|
16
|
+
<CarouselItem>Slide 1</CarouselItem>
|
|
17
|
+
<CarouselItem>Slide 2</CarouselItem>
|
|
18
|
+
</CarouselContent>
|
|
19
|
+
<CarouselPrevious />
|
|
20
|
+
<CarouselNext />
|
|
21
|
+
</Carousel>
|
|
22
|
+
```
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# nqui Checkbox
|
|
2
|
+
|
|
3
|
+
> Enhanced checkbox. Variants: square (default), round (gooey animation).
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Checkbox } from "@nqlib/nqui"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Basic
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<Checkbox checked={checked} onCheckedChange={setChecked} />
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Variants
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
<Checkbox variant="square" />
|
|
21
|
+
<Checkbox variant="round" />
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Indeterminate
|
|
25
|
+
|
|
26
|
+
```tsx
|
|
27
|
+
<Checkbox checked="indeterminate" onCheckedChange={...} />
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Notes
|
|
31
|
+
|
|
32
|
+
- Injects `<style>` at mount. Use client-only guard for SSR.
|
|
33
|
+
- Round variant uses SVG filter; requires no parent `filter` override.
|
|
34
|
+
- Use `CoreCheckbox` for plain Radix checkbox.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# nqui CodeBlock
|
|
2
|
+
|
|
3
|
+
> Syntax-highlighted code. Multi-file tabs, copy button. Peer: shiki.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import {
|
|
9
|
+
CodeBlock, CodeBlockHeader, CodeBlockFiles, CodeBlockFilename,
|
|
10
|
+
CodeBlockCopyButton, CodeBlockBody, CodeBlockItem, CodeBlockContent
|
|
11
|
+
} from "@nqlib/nqui"
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Basic
|
|
15
|
+
|
|
16
|
+
```tsx
|
|
17
|
+
<CodeBlock defaultValue="ts" data={[{ language: "ts", filename: "x.ts", code: "..." }]}>
|
|
18
|
+
<CodeBlockHeader>
|
|
19
|
+
<CodeBlockFiles>
|
|
20
|
+
{(item) => <CodeBlockFilename value={item.language}>{item.filename}</CodeBlockFilename>}
|
|
21
|
+
</CodeBlockFiles>
|
|
22
|
+
<CodeBlockCopyButton />
|
|
23
|
+
</CodeBlockHeader>
|
|
24
|
+
<CodeBlockBody>
|
|
25
|
+
{(item) => (
|
|
26
|
+
<CodeBlockItem value={item.language}>
|
|
27
|
+
<CodeBlockContent language={item.language} syntaxHighlighting>
|
|
28
|
+
{item.code}
|
|
29
|
+
</CodeBlockContent>
|
|
30
|
+
</CodeBlockItem>
|
|
31
|
+
)}
|
|
32
|
+
</CodeBlockBody>
|
|
33
|
+
</CodeBlock>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Notes
|
|
37
|
+
|
|
38
|
+
- Peer: shiki. Optional for syntax highlighting.
|
|
39
|
+
- CodeBlockContentServer for SSR.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# nqui CodeEditor
|
|
2
|
+
|
|
3
|
+
> Animated code editor. Client-side only.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { CodeEditor } from "@nqlib/nqui"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Basic
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<CodeEditor lang="typescript" header dots title="file.ts" copyButton>
|
|
15
|
+
{`const x = 1`}
|
|
16
|
+
</CodeEditor>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Notes
|
|
20
|
+
|
|
21
|
+
- Client-only. Use dynamic import with ssr: false in Next.js.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# nqui Collapsible
|
|
2
|
+
|
|
3
|
+
> Toggle content visibility. CollapsibleTrigger, CollapsibleContent.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { Collapsible, CollapsibleTrigger, CollapsibleContent } from "@nqlib/nqui"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Basic
|
|
12
|
+
|
|
13
|
+
```tsx
|
|
14
|
+
<Collapsible open={open} onOpenChange={setOpen}>
|
|
15
|
+
<CollapsibleTrigger asChild><Button>Toggle</Button></CollapsibleTrigger>
|
|
16
|
+
<CollapsibleContent>Content</CollapsibleContent>
|
|
17
|
+
</Collapsible>
|
|
18
|
+
```
|