@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.
Files changed (107) hide show
  1. package/README.md +6 -1
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/components/AppLayout.d.ts.map +1 -1
  4. package/dist/components/app-sidebar.d.ts.map +1 -1
  5. package/dist/components/custom/command-palette.d.ts +19 -0
  6. package/dist/components/custom/command-palette.d.ts.map +1 -0
  7. package/dist/components/custom/enhanced-badge.d.ts +1 -1
  8. package/dist/components/custom/enhanced-button.d.ts +1 -1
  9. package/dist/components/custom/enhanced-checkbox.d.ts +1 -1
  10. package/dist/components/custom/enhanced-checkbox.d.ts.map +1 -1
  11. package/dist/components/custom/enhanced-scroll-area.d.ts +11 -13
  12. package/dist/components/custom/enhanced-scroll-area.d.ts.map +1 -1
  13. package/dist/components/custom/nqui-logo.d.ts +1 -0
  14. package/dist/components/custom/nqui-logo.d.ts.map +1 -1
  15. package/dist/components/custom/segmented-control.d.ts +48 -0
  16. package/dist/components/custom/segmented-control.d.ts.map +1 -0
  17. package/dist/components/ui/badge.d.ts +1 -1
  18. package/dist/components/ui/button.d.ts +1 -1
  19. package/dist/components/ui/input-group.d.ts +1 -1
  20. package/dist/components/ui/sheet.d.ts +1 -1
  21. package/dist/index.d.ts +5 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/lib/keyboard.d.ts +1 -0
  24. package/dist/lib/keyboard.d.ts.map +1 -1
  25. package/dist/nqui.cjs.js +85 -85
  26. package/dist/nqui.es.js +13099 -12927
  27. package/dist/pages/ChartShowcase.d.ts.map +1 -1
  28. package/dist/pages/ComponentShowcase.d.ts.map +1 -1
  29. package/dist/pages/DataTableShowcase.d.ts +2 -0
  30. package/dist/pages/DataTableShowcase.d.ts.map +1 -0
  31. package/dist/styles.css +5 -13
  32. package/docs/components/README.md +119 -0
  33. package/docs/components/nqui-accordion.md +20 -0
  34. package/docs/components/nqui-alert-dialog.md +31 -0
  35. package/docs/components/nqui-alert.md +19 -0
  36. package/docs/components/nqui-aspect-ratio.md +17 -0
  37. package/docs/components/nqui-avatar.md +18 -0
  38. package/docs/components/nqui-badge.md +42 -0
  39. package/docs/components/nqui-breadcrumb.md +24 -0
  40. package/docs/components/nqui-button-group.md +31 -0
  41. package/docs/components/nqui-button.md +56 -0
  42. package/docs/components/nqui-calendar.md +46 -0
  43. package/docs/components/nqui-card.md +31 -0
  44. package/docs/components/nqui-carousel.md +22 -0
  45. package/docs/components/nqui-checkbox.md +34 -0
  46. package/docs/components/nqui-code-block.md +39 -0
  47. package/docs/components/nqui-code-editor.md +21 -0
  48. package/docs/components/nqui-collapsible.md +18 -0
  49. package/docs/components/nqui-color-picker.md +38 -0
  50. package/docs/components/nqui-color-slider.md +23 -0
  51. package/docs/components/nqui-combobox.md +65 -0
  52. package/docs/components/nqui-command-palette.md +29 -0
  53. package/docs/components/nqui-command.md +39 -0
  54. package/docs/components/nqui-context-menu.md +33 -0
  55. package/docs/components/nqui-dialog.md +36 -0
  56. package/docs/components/nqui-drawer.md +27 -0
  57. package/docs/components/nqui-dropdown-menu.md +56 -0
  58. package/docs/components/nqui-empty.md +22 -0
  59. package/docs/components/nqui-field.md +42 -0
  60. package/docs/components/nqui-frosted-glass.md +19 -0
  61. package/docs/components/nqui-hover-card.md +18 -0
  62. package/docs/components/nqui-input-group.md +22 -0
  63. package/docs/components/nqui-input-otp.md +23 -0
  64. package/docs/components/nqui-input.md +25 -0
  65. package/docs/components/nqui-item.md +25 -0
  66. package/docs/components/nqui-kbd.md +25 -0
  67. package/docs/components/nqui-label.md +16 -0
  68. package/docs/components/nqui-logo.md +16 -0
  69. package/docs/components/nqui-menubar.md +22 -0
  70. package/docs/components/nqui-native-select.md +28 -0
  71. package/docs/components/nqui-navigation-menu.md +25 -0
  72. package/docs/components/nqui-pagination.md +25 -0
  73. package/docs/components/nqui-popover.md +34 -0
  74. package/docs/components/nqui-progress.md +22 -0
  75. package/docs/components/nqui-radio-group.md +34 -0
  76. package/docs/components/nqui-rating.md +35 -0
  77. package/docs/components/nqui-resizable.md +23 -0
  78. package/docs/components/nqui-sandbox.md +27 -0
  79. package/docs/components/nqui-scroll-area.md +32 -0
  80. package/docs/components/nqui-segmented-control.md +18 -0
  81. package/docs/components/nqui-select.md +50 -0
  82. package/docs/components/nqui-separator.md +16 -0
  83. package/docs/components/nqui-sheet.md +27 -0
  84. package/docs/components/nqui-sidebar.md +45 -0
  85. package/docs/components/nqui-skeleton.md +15 -0
  86. package/docs/components/nqui-slider.md +16 -0
  87. package/docs/components/nqui-snippet.md +28 -0
  88. package/docs/components/nqui-sortable.md +46 -0
  89. package/docs/components/nqui-spinner.md +16 -0
  90. package/docs/components/nqui-switch.md +15 -0
  91. package/docs/components/nqui-table-of-contents.md +37 -0
  92. package/docs/components/nqui-tabs.md +35 -0
  93. package/docs/components/nqui-textarea.md +15 -0
  94. package/docs/components/nqui-toaster.md +44 -0
  95. package/docs/components/nqui-toggle-group.md +21 -0
  96. package/docs/components/nqui-toggle.md +15 -0
  97. package/docs/components/nqui-tooltip.md +24 -0
  98. package/docs/components/nqui-tracker.md +38 -0
  99. package/docs/internal-notes/BUILD_VERIFICATION.md +174 -0
  100. package/docs/internal-notes/DASHBOARD_LAYOUT_DESIGN.md +1429 -0
  101. package/docs/internal-notes/FROSTED_GLASS_FIX.md +50 -0
  102. package/docs/internal-notes/PUBLISHING.md +339 -0
  103. package/docs/internal-notes/layoutdesign.md +616 -0
  104. package/docs/internal-notes/progress.md +348 -0
  105. package/docs/internal-notes/stacked-avatar-implementation.md +38 -0
  106. package/package.json +2 -1
  107. /package/{INSTALLATION.md → docs/internal-notes/INSTALLATION.md} +0 -0
@@ -0,0 +1,25 @@
1
+ # nqui NavigationMenu
2
+
3
+ > Nav with content panels. NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import {
9
+ NavigationMenu, NavigationMenuList, NavigationMenuItem,
10
+ NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink
11
+ } from "@nqlib/nqui"
12
+ ```
13
+
14
+ ## Basic
15
+
16
+ ```tsx
17
+ <NavigationMenu>
18
+ <NavigationMenuList>
19
+ <NavigationMenuItem>
20
+ <NavigationMenuTrigger>Item</NavigationMenuTrigger>
21
+ <NavigationMenuContent>Panel content</NavigationMenuContent>
22
+ </NavigationMenuItem>
23
+ </NavigationMenuList>
24
+ </NavigationMenu>
25
+ ```
@@ -0,0 +1,25 @@
1
+ # nqui Pagination
2
+
3
+ > Pagination. PaginationContent, PaginationItem, PaginationLink, PaginationPrevious, PaginationNext, PaginationEllipsis.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import {
9
+ Pagination, PaginationContent, PaginationItem, PaginationLink,
10
+ PaginationPrevious, PaginationNext, PaginationEllipsis
11
+ } from "@nqlib/nqui"
12
+ ```
13
+
14
+ ## Basic
15
+
16
+ ```tsx
17
+ <Pagination>
18
+ <PaginationContent>
19
+ <PaginationItem><PaginationPrevious href="#" /></PaginationItem>
20
+ <PaginationItem><PaginationLink href="#">1</PaginationLink></PaginationItem>
21
+ <PaginationItem><PaginationEllipsis /></PaginationItem>
22
+ <PaginationItem><PaginationNext href="#" /></PaginationItem>
23
+ </PaginationContent>
24
+ </Pagination>
25
+ ```
@@ -0,0 +1,34 @@
1
+ # nqui Popover
2
+
3
+ > Floating panel. PopoverAnchor decouples trigger from anchor position.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { Popover, PopoverTrigger, PopoverContent, PopoverAnchor } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <Popover>
15
+ <PopoverTrigger asChild><Button>Open</Button></PopoverTrigger>
16
+ <PopoverContent>Content</PopoverContent>
17
+ </Popover>
18
+ ```
19
+
20
+ ## PopoverAnchor
21
+
22
+ Position relative to anchor, not trigger:
23
+
24
+ ```tsx
25
+ <Popover>
26
+ <PopoverAnchor asChild><div ref={anchorRef}>Anchor area</div></PopoverAnchor>
27
+ <PopoverTrigger asChild><Button>Open</Button></PopoverTrigger>
28
+ <PopoverContent>Content</PopoverContent>
29
+ </Popover>
30
+ ```
31
+
32
+ ## Notes
33
+
34
+ - PopoverAnchor: content positions by anchor, not trigger.
@@ -0,0 +1,22 @@
1
+ # nqui Progress
2
+
3
+ > Progress bar. Dash and solid variants.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { Progress } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <Progress value={60} />
15
+ ```
16
+
17
+ ## Variants
18
+
19
+ ```tsx
20
+ <Progress value={60} variant="solid" />
21
+ <Progress value={60} variant="dash" />
22
+ ```
@@ -0,0 +1,34 @@
1
+ # nqui RadioGroup
2
+
3
+ > Radio selection. Variants: animated, sliding, bar-left, bar-right.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { RadioGroup, RadioGroupItem } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <RadioGroup value={value} onValueChange={setValue}>
15
+ <RadioGroupItem value="a" /> A
16
+ <RadioGroupItem value="b" /> B
17
+ </RadioGroup>
18
+ ```
19
+
20
+ ## Variants
21
+
22
+ ```tsx
23
+ <RadioGroup variant="animated" />
24
+ <RadioGroup variant="sliding" />
25
+ <RadioGroup variant="bar-left" />
26
+ <RadioGroup variant="bar-right" />
27
+ ```
28
+
29
+ ## Orientation / Disabled
30
+
31
+ ```tsx
32
+ <RadioGroup orientation="horizontal" />
33
+ <RadioGroupItem value="a" disabled />
34
+ ```
@@ -0,0 +1,35 @@
1
+ # nqui Rating
2
+
3
+ > Star rating. Half-star, maxRating, tooltipContent. Injects style.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { Rating } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <Rating value={3.5} onChange={setVal} />
15
+ ```
16
+
17
+ ## maxRating / starSize
18
+
19
+ ```tsx
20
+ <Rating value={val} onChange={setVal} maxRating={10} starSize={24} />
21
+ ```
22
+
23
+ ## tooltipContent
24
+
25
+ ```tsx
26
+ <Rating
27
+ value={val}
28
+ onChange={setVal}
29
+ tooltipContent={(v) => `${v} stars`}
30
+ />
31
+ ```
32
+
33
+ ## Notes
34
+
35
+ - Injects inline style for SVG mask. Client-only in SSR.
@@ -0,0 +1,23 @@
1
+ # nqui Resizable
2
+
3
+ > Resizable panels. Container: ResizablePanelGroup. Peer: react-resizable-panels.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <ResizablePanelGroup direction="horizontal">
15
+ <ResizablePanel defaultSize={25}>Panel 1</ResizablePanel>
16
+ <ResizableHandle />
17
+ <ResizablePanel defaultSize={75}>Panel 2</ResizablePanel>
18
+ </ResizablePanelGroup>
19
+ ```
20
+
21
+ ## Notes
22
+
23
+ - Peer: `react-resizable-panels`.
@@ -0,0 +1,27 @@
1
+ # nqui Sandbox
2
+
3
+ > Live code playground. SandboxProvider, SandboxLayout, SandboxCodeEditor, SandboxPreview. Peer: @codesandbox/sandpack-react.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import {
9
+ SandboxProvider, SandboxLayout, SandboxCodeEditor,
10
+ SandboxPreview
11
+ } from "@nqlib/nqui"
12
+ ```
13
+
14
+ ## Basic
15
+
16
+ ```tsx
17
+ <SandboxProvider theme="dark" template="react" files={{ "/App.tsx": "..." }}>
18
+ <SandboxLayout>
19
+ <SandboxCodeEditor showTabs />
20
+ <SandboxPreview />
21
+ </SandboxLayout>
22
+ </SandboxProvider>
23
+ ```
24
+
25
+ ## Notes
26
+
27
+ - Peer: @codesandbox/sandpack-react. Heavy dependency.
@@ -0,0 +1,32 @@
1
+ # nqui ScrollArea
2
+
3
+ > Custom scrollbar. fadeMask (enhanced), horizontal scroll.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { ScrollArea, ScrollBar } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <ScrollArea className="h-[200px]">
15
+ <div>Content</div>
16
+ <ScrollBar orientation="vertical" />
17
+ </ScrollArea>
18
+ ```
19
+
20
+ ## Horizontal
21
+
22
+ ```tsx
23
+ <ScrollArea orientation="horizontal">
24
+ <div className="flex gap-4 min-w-max">...</div>
25
+ </ScrollArea>
26
+ ```
27
+
28
+ ## fadeMask
29
+
30
+ ```tsx
31
+ <ScrollArea fadeMask>...</ScrollArea>
32
+ ```
@@ -0,0 +1,18 @@
1
+ # nqui SegmentedControl
2
+
3
+ > Segmented control. Primary/ghost variants.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { SegmentedControl, SegmentedControlItem } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <SegmentedControl value={v} onValueChange={setV}>
15
+ <SegmentedControlItem value="a">A</SegmentedControlItem>
16
+ <SegmentedControlItem value="b">B</SegmentedControlItem>
17
+ </SegmentedControl>
18
+ ```
@@ -0,0 +1,50 @@
1
+ # nqui Select
2
+
3
+ > Dropdown select. Enhanced with 3D shadow, frosted glass content.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem, SelectGroup, SelectLabel, SelectSeparator } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <Select>
15
+ <SelectTrigger><SelectValue placeholder="Pick" /></SelectTrigger>
16
+ <SelectContent>
17
+ <SelectItem value="a">A</SelectItem>
18
+ <SelectItem value="b">B</SelectItem>
19
+ </SelectContent>
20
+ </Select>
21
+ ```
22
+
23
+ ## Grouped
24
+
25
+ ```tsx
26
+ <SelectContent>
27
+ <SelectGroup>
28
+ <SelectLabel>Fruits</SelectLabel>
29
+ <SelectItem value="apple">Apple</SelectItem>
30
+ </SelectGroup>
31
+ <SelectSeparator />
32
+ <SelectGroup>
33
+ <SelectLabel>Veggies</SelectLabel>
34
+ <SelectItem value="carrot">Carrot</SelectItem>
35
+ </SelectGroup>
36
+ </SelectContent>
37
+ ```
38
+
39
+ ## Controlled
40
+
41
+ ```tsx
42
+ <Select value={value} onValueChange={setValue}>
43
+ ...
44
+ </Select>
45
+ ```
46
+
47
+ ## Notes
48
+
49
+ - Injects CSS at mount; client-only in SSR.
50
+ - Use `SelectScrollUpButton` / `SelectScrollDownButton` for long lists.
@@ -0,0 +1,16 @@
1
+ # nqui Separator
2
+
3
+ > Divider. Horizontal or vertical.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { Separator } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <Separator />
15
+ <Separator orientation="vertical" />
16
+ ```
@@ -0,0 +1,27 @@
1
+ # nqui Sheet
2
+
3
+ > Side panel. SheetTrigger, SheetContent, SheetHeader, SheetTitle, SheetDescription, SheetFooter. side: top|right|bottom|left.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import {
9
+ Sheet, SheetTrigger, SheetContent, SheetHeader,
10
+ SheetTitle, SheetDescription, SheetFooter
11
+ } from "@nqlib/nqui"
12
+ ```
13
+
14
+ ## Basic
15
+
16
+ ```tsx
17
+ <Sheet>
18
+ <SheetTrigger asChild><Button>Open</Button></SheetTrigger>
19
+ <SheetContent side="right">
20
+ <SheetHeader>
21
+ <SheetTitle>Title</SheetTitle>
22
+ <SheetDescription>Desc</SheetDescription>
23
+ </SheetHeader>
24
+ ...
25
+ </SheetContent>
26
+ </Sheet>
27
+ ```
@@ -0,0 +1,45 @@
1
+ # nqui Sidebar
2
+
3
+ > App sidebar. Collapsible. SidebarProvider must wrap entire layout.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import {
9
+ SidebarProvider, Sidebar, SidebarTrigger, SidebarInset,
10
+ SidebarHeader, SidebarContent, SidebarGroup, SidebarGroupLabel,
11
+ SidebarGroupContent, SidebarMenu, SidebarMenuItem, SidebarMenuButton,
12
+ SidebarRail, SidebarSeparator
13
+ } from "@nqlib/nqui"
14
+ ```
15
+
16
+ ## Layout
17
+
18
+ ```tsx
19
+ <SidebarProvider>
20
+ <Sidebar collapsible="icon">
21
+ <SidebarHeader>...</SidebarHeader>
22
+ <SidebarContent>
23
+ <SidebarGroup>
24
+ <SidebarGroupLabel>Label</SidebarGroupLabel>
25
+ <SidebarGroupContent>
26
+ <SidebarMenu>
27
+ <SidebarMenuItem><SidebarMenuButton>Item</SidebarMenuButton></SidebarMenuItem>
28
+ </SidebarMenu>
29
+ </SidebarGroupContent>
30
+ </SidebarGroup>
31
+ </SidebarContent>
32
+ <SidebarRail />
33
+ </Sidebar>
34
+ <SidebarInset>
35
+ <SidebarTrigger />
36
+ {/* Main content */}
37
+ </SidebarInset>
38
+ </SidebarProvider>
39
+ ```
40
+
41
+ ## Notes
42
+
43
+ - **Critical:** SidebarProvider wraps full layout (sidebar + content), not just Sidebar.
44
+ - collapsible: "offcanvas" | "icon" | "none".
45
+ - Sidebar uses fixed positioning; one per app.
@@ -0,0 +1,15 @@
1
+ # nqui Skeleton
2
+
3
+ > Loading placeholder. Core.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { Skeleton } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <Skeleton className="h-12 w-full" />
15
+ ```
@@ -0,0 +1,16 @@
1
+ # nqui Slider
2
+
3
+ > Range slider. Supports single and range values.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { Slider } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <Slider value={[50]} onValueChange={([v]) => setVal(v)} />
15
+ <Slider value={[20, 80]} onValueChange={setRange} />
16
+ ```
@@ -0,0 +1,28 @@
1
+ # nqui Snippet
2
+
3
+ > Tabbed code display. SnippetHeader, SnippetTabsList, SnippetTabsTrigger, SnippetTabsContent, SnippetCopyButton.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import {
9
+ Snippet, SnippetHeader, SnippetTabsList, SnippetTabsTrigger,
10
+ SnippetTabsContent, SnippetCopyButton
11
+ } from "@nqlib/nqui"
12
+ ```
13
+
14
+ ## Basic
15
+
16
+ ```tsx
17
+ <Snippet defaultValue="tsx">
18
+ <SnippetHeader>
19
+ <SnippetTabsList>
20
+ <SnippetTabsTrigger value="tsx">TSX</SnippetTabsTrigger>
21
+ <SnippetTabsTrigger value="jsx">JSX</SnippetTabsTrigger>
22
+ </SnippetTabsList>
23
+ <SnippetCopyButton value={code} />
24
+ </SnippetHeader>
25
+ <SnippetTabsContent value="tsx">{code}</SnippetTabsContent>
26
+ <SnippetTabsContent value="jsx">{code}</SnippetTabsContent>
27
+ </Snippet>
28
+ ```
@@ -0,0 +1,46 @@
1
+ # nqui Sortable
2
+
3
+ > Drag-and-drop reorder. Import from `@nqlib/nqui` or `@/components/ui/sortable`.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import {
9
+ Sortable, SortableContent, SortableItem, SortableItemHandle, SortableOverlay
10
+ } from "@/components/ui/sortable"
11
+ // Or if exported: import { ... } from "@nqlib/nqui"
12
+ ```
13
+
14
+ ## Basic
15
+
16
+ ```tsx
17
+ <Sortable value={items} onValueChange={setItems} orientation="vertical">
18
+ <SortableContent asChild>
19
+ <div>
20
+ {items.map((item) => (
21
+ <SortableItem key={item} value={item} asChild>
22
+ <div>
23
+ <SortableItemHandle asChild><button>⋮⋮</button></SortableItemHandle>
24
+ {item}
25
+ </div>
26
+ </SortableItem>
27
+ ))}
28
+ </div>
29
+ </SortableContent>
30
+ <SortableOverlay>
31
+ {({ value }) => <div>Dragging: {value}</div>}
32
+ </SortableOverlay>
33
+ </Sortable>
34
+ ```
35
+
36
+ ## Object Array
37
+
38
+ ```tsx
39
+ <Sortable value={objects} onValueChange={setObjects} getItemValue={(o) => o.id}>
40
+ ...
41
+ </Sortable>
42
+ ```
43
+
44
+ ## orientation
45
+
46
+ `vertical` | `horizontal` | `mixed`
@@ -0,0 +1,16 @@
1
+ # nqui Spinner
2
+
3
+ > Loading spinner.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { Spinner } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <Spinner />
15
+ <Spinner className="size-6" />
16
+ ```
@@ -0,0 +1,15 @@
1
+ # nqui Switch
2
+
3
+ > Toggle switch. Core Radix.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { Switch } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <Switch checked={checked} onCheckedChange={setChecked} />
15
+ ```
@@ -0,0 +1,37 @@
1
+ # nqui TableOfContents
2
+
3
+ > TOC from headings. Auto-detect or manual items. Scroll spy.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { TableOfContents } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Auto-detect
12
+
13
+ ```tsx
14
+ <TableOfContents
15
+ autoDetect
16
+ headingSelector="h2"
17
+ enableScrollSpy
18
+ container={contentRef}
19
+ title="Contents"
20
+ />
21
+ ```
22
+
23
+ ## Manual Items
24
+
25
+ ```tsx
26
+ <TableOfContents
27
+ items={[{ id: "s1", label: "Section 1", level: 1 }]}
28
+ enableScrollSpy
29
+ variant="normal"
30
+ />
31
+ ```
32
+
33
+ ## Notes
34
+
35
+ - Headings need `id` for anchor links.
36
+ - container: scoped scroll container. Omit for full page.
37
+ - variant: "normal" | "clerk" | "circuit".
@@ -0,0 +1,35 @@
1
+ # nqui Tabs
2
+
3
+ > Tabbed content. Sliding indicator. Enhanced.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { Tabs, TabsList, TabsTrigger, TabsContent } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <Tabs defaultValue="tab1">
15
+ <TabsList>
16
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
17
+ <TabsTrigger value="tab2">Tab 2</TabsTrigger>
18
+ </TabsList>
19
+ <TabsContent value="tab1">Content 1</TabsContent>
20
+ <TabsContent value="tab2">Content 2</TabsContent>
21
+ </Tabs>
22
+ ```
23
+
24
+ ## Controlled
25
+
26
+ ```tsx
27
+ <Tabs value={value} onValueChange={setValue}>
28
+ ...
29
+ </Tabs>
30
+ ```
31
+
32
+ ## Notes
33
+
34
+ - Sliding indicator needs `position: relative` on TabsList container.
35
+ - Use `EnhancedTabsList` props for additional customization.
@@ -0,0 +1,15 @@
1
+ # nqui Textarea
2
+
3
+ > Multi-line text input. Core.
4
+
5
+ ## Import
6
+
7
+ ```tsx
8
+ import { Textarea } from "@nqlib/nqui"
9
+ ```
10
+
11
+ ## Basic
12
+
13
+ ```tsx
14
+ <Textarea placeholder="Message..." />
15
+ ```