@nxds/claude-design 0.0.0-stage → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +21 -2
- package/coverage.md +174 -0
- package/files.json +594 -0
- package/package.json +18 -3
- package/project/README.md +97 -0
- package/project/components/Accordion/README.md +84 -0
- package/project/components/Accordion/preview.html +16 -0
- package/project/components/Alert/README.md +97 -0
- package/project/components/Alert/preview.html +16 -0
- package/project/components/AlertDialog/README.md +170 -0
- package/project/components/AlertDialog/preview.html +16 -0
- package/project/components/AspectRatio/README.md +23 -0
- package/project/components/AspectRatio/preview.html +16 -0
- package/project/components/Attachment/README.md +127 -0
- package/project/components/Attachment/preview.html +16 -0
- package/project/components/Avatar/README.md +73 -0
- package/project/components/Avatar/preview.html +16 -0
- package/project/components/Badge/README.md +27 -0
- package/project/components/Badge/preview.html +16 -0
- package/project/components/Breadcrumb/README.md +117 -0
- package/project/components/Breadcrumb/preview.html +16 -0
- package/project/components/Bubble/README.md +57 -0
- package/project/components/Bubble/preview.html +16 -0
- package/project/components/Button/README.md +35 -0
- package/project/components/Button/preview.html +16 -0
- package/project/components/ButtonGroup/README.md +54 -0
- package/project/components/ButtonGroup/preview.html +16 -0
- package/project/components/Card/README.md +92 -0
- package/project/components/Card/preview.html +16 -0
- package/project/components/Carousel/README.md +85 -0
- package/project/components/Carousel/preview.html +16 -0
- package/project/components/Chart/README.md +124 -0
- package/project/components/Chart/preview.html +16 -0
- package/project/components/Checkbox/README.md +30 -0
- package/project/components/Checkbox/preview.html +16 -0
- package/project/components/ChoiceCard/README.md +61 -0
- package/project/components/ChoiceCard/preview.html +16 -0
- package/project/components/ChoiceRow/README.md +58 -0
- package/project/components/ChoiceRow/preview.html +16 -0
- package/project/components/Collapsible/README.md +73 -0
- package/project/components/Collapsible/preview.html +16 -0
- package/project/components/Combobox/README.md +158 -0
- package/project/components/Combobox/preview.html +16 -0
- package/project/components/Command/README.md +152 -0
- package/project/components/Command/preview.html +16 -0
- package/project/components/ContextMenu/README.md +215 -0
- package/project/components/ContextMenu/preview.html +16 -0
- package/project/components/Cover/preview.html +101 -0
- package/project/components/DatePicker/README.md +104 -0
- package/project/components/DatePicker/preview.html +16 -0
- package/project/components/DescriptionList/README.md +57 -0
- package/project/components/DescriptionList/preview.html +16 -0
- package/project/components/Dialog/README.md +166 -0
- package/project/components/Dialog/preview.html +16 -0
- package/project/components/Drawer/README.md +188 -0
- package/project/components/Drawer/preview.html +16 -0
- package/project/components/DropdownMenu/README.md +250 -0
- package/project/components/DropdownMenu/preview.html +16 -0
- package/project/components/EmptyState/README.md +84 -0
- package/project/components/EmptyState/preview.html +16 -0
- package/project/components/Field/README.md +129 -0
- package/project/components/Field/preview.html +16 -0
- package/project/components/FilterBuilder/README.md +34 -0
- package/project/components/FilterBuilder/preview.html +16 -0
- package/project/components/FilterChip/README.md +31 -0
- package/project/components/FilterChip/preview.html +16 -0
- package/project/components/FilterCondition/README.md +66 -0
- package/project/components/FilterCondition/preview.html +16 -0
- package/project/components/Hide/README.md +26 -0
- package/project/components/Hide/preview.html +16 -0
- package/project/components/HoverCard/README.md +77 -0
- package/project/components/HoverCard/preview.html +16 -0
- package/project/components/Input/README.md +37 -0
- package/project/components/Input/preview.html +16 -0
- package/project/components/InputGroup/README.md +109 -0
- package/project/components/InputGroup/preview.html +16 -0
- package/project/components/InputOTP/README.md +72 -0
- package/project/components/InputOTP/preview.html +16 -0
- package/project/components/Item/README.md +124 -0
- package/project/components/Item/preview.html +16 -0
- package/project/components/Kbd/README.md +40 -0
- package/project/components/Kbd/preview.html +16 -0
- package/project/components/Label/README.md +25 -0
- package/project/components/Label/preview.html +16 -0
- package/project/components/Marker/README.md +48 -0
- package/project/components/Marker/preview.html +16 -0
- package/project/components/Menubar/README.md +266 -0
- package/project/components/Menubar/preview.html +16 -0
- package/project/components/Message/README.md +78 -0
- package/project/components/Message/preview.html +16 -0
- package/project/components/MessageScroller/README.md +84 -0
- package/project/components/MessageScroller/preview.html +16 -0
- package/project/components/MultiSelect/README.md +122 -0
- package/project/components/MultiSelect/preview.html +16 -0
- package/project/components/NativeSelect/README.md +56 -0
- package/project/components/NativeSelect/preview.html +16 -0
- package/project/components/NavigationMenu/README.md +153 -0
- package/project/components/NavigationMenu/preview.html +16 -0
- package/project/components/PageHeader/README.md +86 -0
- package/project/components/PageHeader/preview.html +16 -0
- package/project/components/Pagination/README.md +123 -0
- package/project/components/Pagination/preview.html +16 -0
- package/project/components/Popover/README.md +87 -0
- package/project/components/Popover/preview.html +16 -0
- package/project/components/Progress/README.md +27 -0
- package/project/components/Progress/preview.html +16 -0
- package/project/components/RadioGroup/README.md +67 -0
- package/project/components/RadioGroup/preview.html +16 -0
- package/project/components/Resizable/README.md +65 -0
- package/project/components/Resizable/preview.html +16 -0
- package/project/components/ScrollArea/README.md +42 -0
- package/project/components/ScrollArea/preview.html +16 -0
- package/project/components/Select/README.md +161 -0
- package/project/components/Select/preview.html +16 -0
- package/project/components/Separator/README.md +37 -0
- package/project/components/Separator/preview.html +16 -0
- package/project/components/Sheet/README.md +160 -0
- package/project/components/Sheet/preview.html +16 -0
- package/project/components/Show/README.md +26 -0
- package/project/components/Show/preview.html +16 -0
- package/project/components/Sidebar/README.md +290 -0
- package/project/components/Sidebar/preview.html +16 -0
- package/project/components/Skeleton/README.md +30 -0
- package/project/components/Skeleton/preview.html +16 -0
- package/project/components/Slider/README.md +38 -0
- package/project/components/Slider/preview.html +16 -0
- package/project/components/Sonner/README.md +37 -0
- package/project/components/Sonner/preview.html +16 -0
- package/project/components/Spinner/README.md +27 -0
- package/project/components/Spinner/preview.html +16 -0
- package/project/components/Switch/README.md +31 -0
- package/project/components/Switch/preview.html +16 -0
- package/project/components/Table/README.md +120 -0
- package/project/components/Table/preview.html +16 -0
- package/project/components/Tabs/README.md +81 -0
- package/project/components/Tabs/preview.html +16 -0
- package/project/components/Textarea/README.md +32 -0
- package/project/components/Textarea/preview.html +16 -0
- package/project/components/Toggle/README.md +33 -0
- package/project/components/Toggle/preview.html +16 -0
- package/project/components/ToggleGroup/README.md +64 -0
- package/project/components/ToggleGroup/preview.html +16 -0
- package/project/components/Toolbar/README.md +123 -0
- package/project/components/Toolbar/preview.html +16 -0
- package/project/components/Tooltip/README.md +84 -0
- package/project/components/Tooltip/preview.html +16 -0
- package/project/components/bundle.css +8329 -0
- package/project/components/bundle.js +346 -0
- package/project/components/index.d.ts +7902 -0
- package/project/design-system.json +34 -0
- package/project/tokens.css +702 -0
- package/project/tokens.json +2998 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Sheet
|
|
2
|
+
|
|
3
|
+
Sheet slides a panel in from one edge of the viewport. Use it for settings, filters, navigation or supporting forms. For a centered task use Dialog, for a forced choice use AlertDialog, and for drag-to-dismiss use Drawer.
|
|
4
|
+
|
|
5
|
+
## On the canvas
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<x-import component-from-global-scope="Nxds.Sheet">
|
|
9
|
+
<x-import component-from-global-scope="Nxds.SheetTrigger" as-child>
|
|
10
|
+
<x-import component-from-global-scope="Nxds.Button" variant="outline">Open Sheet</x-import>
|
|
11
|
+
</x-import>
|
|
12
|
+
<x-import component-from-global-scope="Nxds.SheetContent">
|
|
13
|
+
<x-import component-from-global-scope="Nxds.SheetHeader">
|
|
14
|
+
<x-import component-from-global-scope="Nxds.SheetTitle">Sheet Title</x-import>
|
|
15
|
+
<x-import component-from-global-scope="Nxds.SheetDescription">This panel slides in from the right edge by default.</x-import>
|
|
16
|
+
</x-import>
|
|
17
|
+
<x-import component-from-global-scope="Nxds.SheetBody">
|
|
18
|
+
<p class="nx:typography-body-default nx:text-foreground">Sheet content goes here. You can add any content you need.</p>
|
|
19
|
+
</x-import>
|
|
20
|
+
<x-import component-from-global-scope="Nxds.SheetFooter">
|
|
21
|
+
<x-import component-from-global-scope="Nxds.SheetClose" as-child>
|
|
22
|
+
<x-import component-from-global-scope="Nxds.Button" variant="outline">Cancel</x-import>
|
|
23
|
+
</x-import>
|
|
24
|
+
<x-import component-from-global-scope="Nxds.Button">Save</x-import>
|
|
25
|
+
</x-import>
|
|
26
|
+
</x-import>
|
|
27
|
+
</x-import>
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Attributes set props, kebab-case to camelCase. Element content becomes `children`. An attribute holds text, so a prop that takes an element, a function or an object has no attribute.
|
|
31
|
+
|
|
32
|
+
## Parts
|
|
33
|
+
|
|
34
|
+
- `Nxds.Sheet` — Root of a panel that slides in from an edge of the viewport.
|
|
35
|
+
- `Nxds.SheetBody` — Main content between the header and footer.
|
|
36
|
+
- `Nxds.SheetClose` — Closes the sheet.
|
|
37
|
+
- `Nxds.SheetContent` — The sliding panel, rendered in a portal with an overlay.
|
|
38
|
+
- `Nxds.SheetDescription` — Supporting text under the title.
|
|
39
|
+
- `Nxds.SheetFooter` — Holds the action buttons, pinned to the bottom of the panel.
|
|
40
|
+
- `Nxds.SheetHeader` — Holds the title and description.
|
|
41
|
+
- `Nxds.SheetOverlay` — Dimmed layer behind the sheet.
|
|
42
|
+
- `Nxds.SheetPortal` — Renders the sheet content into `document.body`.
|
|
43
|
+
- `Nxds.SheetTitle` — Title of the sheet.
|
|
44
|
+
- `Nxds.SheetTrigger` — Opens the sheet.
|
|
45
|
+
|
|
46
|
+
## Props
|
|
47
|
+
|
|
48
|
+
### Sheet
|
|
49
|
+
|
|
50
|
+
| Prop | Type | Default | Control |
|
|
51
|
+
| --- | --- | --- | --- |
|
|
52
|
+
| `children` | `React.ReactNode` | | content |
|
|
53
|
+
| `open` | `boolean` | | toggle |
|
|
54
|
+
| `defaultOpen` | `boolean` | | toggle |
|
|
55
|
+
| `onOpenChange` | `(open: boolean) => void` | | none (function) |
|
|
56
|
+
| `modal` | `boolean` | | toggle |
|
|
57
|
+
|
|
58
|
+
### SheetBody
|
|
59
|
+
|
|
60
|
+
| Prop | Type | Default | Control |
|
|
61
|
+
| --- | --- | --- | --- |
|
|
62
|
+
| `className` | `string` | | text |
|
|
63
|
+
| `id` | `string` | | text |
|
|
64
|
+
| `children` | `React.ReactNode` | | content |
|
|
65
|
+
|
|
66
|
+
### SheetClose
|
|
67
|
+
|
|
68
|
+
| Prop | Type | Default | Control |
|
|
69
|
+
| --- | --- | --- | --- |
|
|
70
|
+
| `children` | `React.ReactNode` | | content |
|
|
71
|
+
| `className` | `string` | | text |
|
|
72
|
+
| `id` | `string` | | text |
|
|
73
|
+
| `name` | `string` | | text |
|
|
74
|
+
| `type` | `"button" \| "submit" \| "reset"` | | dropdown |
|
|
75
|
+
| `asChild` | `boolean` | | toggle |
|
|
76
|
+
| `disabled` | `boolean` | | toggle |
|
|
77
|
+
| `value` | `string \| number \| readonly string[]` | | none (object) |
|
|
78
|
+
|
|
79
|
+
### SheetContent
|
|
80
|
+
|
|
81
|
+
| Prop | Type | Default | Control |
|
|
82
|
+
| --- | --- | --- | --- |
|
|
83
|
+
| `showCloseButton` | `boolean` | `true` | toggle |
|
|
84
|
+
| `forceMount` | `true` | | toggle |
|
|
85
|
+
| `children` | `React.ReactNode` | | content |
|
|
86
|
+
| `className` | `string` | | text |
|
|
87
|
+
| `id` | `string` | | text |
|
|
88
|
+
| `asChild` | `boolean` | | toggle |
|
|
89
|
+
| `onEscapeKeyDown` | `(event: KeyboardEvent) => void` | | none (function) |
|
|
90
|
+
| `onPointerDownOutside` | `(event: PointerDownOutsideEvent) => void` | | none (function) |
|
|
91
|
+
| `onFocusOutside` | `(event: FocusOutsideEvent) => void` | | none (function) |
|
|
92
|
+
| `onInteractOutside` | `(event: FocusOutsideEvent \| PointerDownOutsideEvent) => void` | | none (function) |
|
|
93
|
+
| `onOpenAutoFocus` | `(event: Event) => void` | | none (function) |
|
|
94
|
+
| `onCloseAutoFocus` | `(event: Event) => void` | | none (function) |
|
|
95
|
+
| `side` | `"top" \| "bottom" \| "left" \| "right"` | `"right"` | dropdown |
|
|
96
|
+
|
|
97
|
+
### SheetDescription
|
|
98
|
+
|
|
99
|
+
| Prop | Type | Default | Control |
|
|
100
|
+
| --- | --- | --- | --- |
|
|
101
|
+
| `children` | `React.ReactNode` | | content |
|
|
102
|
+
| `className` | `string` | | text |
|
|
103
|
+
| `id` | `string` | | text |
|
|
104
|
+
| `asChild` | `boolean` | | toggle |
|
|
105
|
+
|
|
106
|
+
### SheetFooter
|
|
107
|
+
|
|
108
|
+
| Prop | Type | Default | Control |
|
|
109
|
+
| --- | --- | --- | --- |
|
|
110
|
+
| `className` | `string` | | text |
|
|
111
|
+
| `id` | `string` | | text |
|
|
112
|
+
| `children` | `React.ReactNode` | | content |
|
|
113
|
+
|
|
114
|
+
### SheetHeader
|
|
115
|
+
|
|
116
|
+
| Prop | Type | Default | Control |
|
|
117
|
+
| --- | --- | --- | --- |
|
|
118
|
+
| `className` | `string` | | text |
|
|
119
|
+
| `id` | `string` | | text |
|
|
120
|
+
| `children` | `React.ReactNode` | | content |
|
|
121
|
+
|
|
122
|
+
### SheetOverlay
|
|
123
|
+
|
|
124
|
+
| Prop | Type | Default | Control |
|
|
125
|
+
| --- | --- | --- | --- |
|
|
126
|
+
| `forceMount` | `true` | | toggle |
|
|
127
|
+
| `children` | `React.ReactNode` | | content |
|
|
128
|
+
| `className` | `string` | | text |
|
|
129
|
+
| `id` | `string` | | text |
|
|
130
|
+
| `asChild` | `boolean` | | toggle |
|
|
131
|
+
|
|
132
|
+
### SheetPortal
|
|
133
|
+
|
|
134
|
+
| Prop | Type | Default | Control |
|
|
135
|
+
| --- | --- | --- | --- |
|
|
136
|
+
| `children` | `React.ReactNode` | | content |
|
|
137
|
+
| `container` | `Element \| DocumentFragment` | | none (object) |
|
|
138
|
+
| `forceMount` | `true` | | toggle |
|
|
139
|
+
|
|
140
|
+
### SheetTitle
|
|
141
|
+
|
|
142
|
+
| Prop | Type | Default | Control |
|
|
143
|
+
| --- | --- | --- | --- |
|
|
144
|
+
| `children` | `React.ReactNode` | | content |
|
|
145
|
+
| `className` | `string` | | text |
|
|
146
|
+
| `id` | `string` | | text |
|
|
147
|
+
| `asChild` | `boolean` | | toggle |
|
|
148
|
+
|
|
149
|
+
### SheetTrigger
|
|
150
|
+
|
|
151
|
+
| Prop | Type | Default | Control |
|
|
152
|
+
| --- | --- | --- | --- |
|
|
153
|
+
| `children` | `React.ReactNode` | | content |
|
|
154
|
+
| `className` | `string` | | text |
|
|
155
|
+
| `id` | `string` | | text |
|
|
156
|
+
| `name` | `string` | | text |
|
|
157
|
+
| `type` | `"button" \| "submit" \| "reset"` | | dropdown |
|
|
158
|
+
| `asChild` | `boolean` | | toggle |
|
|
159
|
+
| `disabled` | `boolean` | | toggle |
|
|
160
|
+
| `value` | `string \| number \| readonly string[]` | | none (object) |
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- @dsCard group="Overlays" height=120 -->
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<title>Sheet</title>
|
|
7
|
+
<style>
|
|
8
|
+
body { margin: 0; background: var(--nx-color-background); color: var(--nx-color-foreground); font-family: var(--font-sans); }
|
|
9
|
+
#root { padding: var(--nx-spacing-6); }
|
|
10
|
+
</style>
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<div id="root"></div>
|
|
14
|
+
<script>(()=>{var B=Object.create;var m=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var D=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var l=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(n){throw e=0,n}};var P=(t,e,n,d)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of R(e))!K.call(t,i)&&i!==n&&m(t,i,{get:()=>e[i],enumerable:!(d=C(e,i))||d.enumerable});return t};var a=(t,e,n)=>(n=t!=null?B(D(t)):{},P(e||!t||!t.__esModule?m(n,"default",{value:t,enumerable:!0}):n,t));var u=l((F,y)=>{y.exports=window.Nxds});var c=l((b,f)=>{f.exports=window.React});var w=l((O,g)=>{g.exports={createRoot:window.ReactDOM.createRoot}});var s=a(u()),o=a(u());var p=a(c());function x(t,e){return e===void 0?t:{...t,key:e}}function r(t,e,n){return(0,p.createElement)(t,x(e,n))}function h(t,e,n){let{children:d,...i}=e;return(0,p.createElement)(t,x(i,n),...d)}function S(){return h(o.Sheet,{children:[r(o.SheetTrigger,{asChild:!0,children:r(s.Button,{variant:"outline",children:"Open Sheet"})}),h(o.SheetContent,{children:[h(o.SheetHeader,{children:[r(o.SheetTitle,{children:"Sheet Title"}),r(o.SheetDescription,{children:"This panel slides in from the right edge by default."})]}),r(o.SheetBody,{children:r("p",{className:"nx:typography-body-default nx:text-foreground",children:"Sheet content goes here. You can add any content you need."})}),h(o.SheetFooter,{children:[r(o.SheetClose,{asChild:!0,children:r(s.Button,{variant:"outline",children:"Cancel"})}),r(s.Button,{children:"Save"})]})]})]})}var T=a(c()),E=a(w());(0,E.createRoot)(document.getElementById("root")).render((0,T.createElement)(S));})();</script>
|
|
15
|
+
</body>
|
|
16
|
+
</html>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Show
|
|
2
|
+
|
|
3
|
+
Show displays its children only above or below a viewport or container width. Use it for responsive visibility instead of toggling `nx:hidden` classes. To hide content at a width, use Hide.
|
|
4
|
+
|
|
5
|
+
## On the canvas
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<x-import component-from-global-scope="Nxds.Show" as="div" above="sm">Show</x-import>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Attributes set props, kebab-case to camelCase. Element content becomes `children`. An attribute holds text, so a prop that takes an element, a function or an object has no attribute.
|
|
12
|
+
|
|
13
|
+
## Props
|
|
14
|
+
|
|
15
|
+
### Show
|
|
16
|
+
|
|
17
|
+
| Prop | Type | Default | Control |
|
|
18
|
+
| --- | --- | --- | --- |
|
|
19
|
+
| `className` | `string` | | text |
|
|
20
|
+
| `id` | `string` | | text |
|
|
21
|
+
| `children` | `React.ReactNode` | | content |
|
|
22
|
+
| `as` | `"div" \| "span"` | `"span"` | dropdown |
|
|
23
|
+
| `above` | `"sm" \| "lg" \| "md" \| "xl" \| "2xl"` | | dropdown |
|
|
24
|
+
| `below` | `"sm" \| "lg" \| "md" \| "xl" \| "2xl"` | | dropdown |
|
|
25
|
+
| `containerAbove` | `"sm" \| "lg" \| "md" \| "xl" \| "2xl"` | | dropdown |
|
|
26
|
+
| `containerBelow` | `"sm" \| "lg" \| "md" \| "xl" \| "2xl"` | | dropdown |
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- @dsCard group="Layout" height=120 -->
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<title>Show</title>
|
|
7
|
+
<style>
|
|
8
|
+
body { margin: 0; background: var(--nx-color-background); color: var(--nx-color-foreground); font-family: var(--font-sans); }
|
|
9
|
+
#root { padding: var(--nx-spacing-6); }
|
|
10
|
+
</style>
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<div id="root"></div>
|
|
14
|
+
<script>(()=>{var R=Object.create;var x=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var S=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var l=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(o){throw e=0,o}};var D=(t,e,o,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of P(e))!N.call(t,r)&&r!==o&&x(t,r,{get:()=>e[r],enumerable:!(i=K(e,r))||i.enumerable});return t};var s=(t,e,o)=>(o=t!=null?R(S(t)):{},D(e||!t||!t.__esModule?x(o,"default",{value:t,enumerable:!0}):o,t));var f=l((V,w)=>{w.exports=window.Nxds});var p=l((j,u)=>{u.exports=window.React});var v=l((I,h)=>{h.exports={createRoot:window.ReactDOM.createRoot}});var m=s(f());var d=s(p());function g(t,e){return e===void 0?t:{...t,key:e}}function n(t,e,o){return(0,d.createElement)(t,g(e,o))}function a(t,e,o){let{children:i,...r}=e;return(0,d.createElement)(t,g(r,o),...i)}var y="nx:rounded-md nx:border-default nx:border-border-default nx:p-3 nx:text-foreground";function c(){return a("div",{className:"nx:flex nx:flex-col nx:gap-2",children:[n(m.Show,{above:"lg",as:"div",children:a("div",{className:y,children:["Visible when the viewport is ",n("strong",{children:"lg"})," (≥ 64rem) or wider."]})}),n(m.Show,{below:"lg",as:"div",children:a("div",{className:y,children:["Visible when the viewport is narrower than ",n("strong",{children:"lg"}),"."]})})]})}var b=s(p()),E=s(v());(0,E.createRoot)(document.getElementById("root")).render((0,b.createElement)(c));})();</script>
|
|
15
|
+
</body>
|
|
16
|
+
</html>
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
# Sidebar
|
|
2
|
+
|
|
3
|
+
Sidebar is the app's main navigation panel. It collapses to an icon rail or off screen, and opens as a Sheet on narrow screens. Wrap the app shell in `SidebarProvider` and put the page content in `SidebarInset`.
|
|
4
|
+
|
|
5
|
+
## On the canvas
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<x-import component-from-global-scope="Nxds.Sidebar" side="right" variant="floating">Sidebar</x-import>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Attributes set props, kebab-case to camelCase. Element content becomes `children`. An attribute holds text, so a prop that takes an element, a function or an object has no attribute.
|
|
12
|
+
|
|
13
|
+
## Parts
|
|
14
|
+
|
|
15
|
+
- `Nxds.Sidebar` — The sidebar panel.
|
|
16
|
+
- `Nxds.SidebarContent` — Scrollable `<nav>` landmark that holds the groups and menus.
|
|
17
|
+
- `Nxds.SidebarFooter` — Bottom of the sidebar, for a user menu or sign-out button.
|
|
18
|
+
- `Nxds.SidebarGroup` — Labelled section that groups related menu items.
|
|
19
|
+
- `Nxds.SidebarGroupAction` — Small button at a group's top-right, such as "Add".
|
|
20
|
+
- `Nxds.SidebarGroupContent` — Body of a `SidebarGroup`, usually a `SidebarMenu`.
|
|
21
|
+
- `Nxds.SidebarGroupLabel` — Heading of a `SidebarGroup`.
|
|
22
|
+
- `Nxds.SidebarHeader` — Top of the sidebar, for a logo or a workspace switcher.
|
|
23
|
+
- `Nxds.SidebarInput` — `Input` styled for the sidebar, such as a filter field.
|
|
24
|
+
- `Nxds.SidebarInset` — Main content region beside the sidebar.
|
|
25
|
+
- `Nxds.SidebarMenu` — `<ul>` that holds a group's nav items.
|
|
26
|
+
- `Nxds.SidebarMenuAction` — Secondary button on a menu item's right edge, such as "More".
|
|
27
|
+
- `Nxds.SidebarMenuBadge` — Count or status pill on a menu item's right edge.
|
|
28
|
+
- `Nxds.SidebarMenuButton` — Main clickable nav item.
|
|
29
|
+
- `Nxds.SidebarMenuItem` — One `<li>` in a `SidebarMenu`.
|
|
30
|
+
- `Nxds.SidebarMenuSkeleton` — Placeholder for a menu row while nav data loads.
|
|
31
|
+
- `Nxds.SidebarMenuSub` — `<ul>` for a nested submenu, with a guide line on the left.
|
|
32
|
+
- `Nxds.SidebarMenuSubButton` — Clickable item in a submenu.
|
|
33
|
+
- `Nxds.SidebarMenuSubItem` — One `<li>` in a `SidebarMenuSub`.
|
|
34
|
+
- `Nxds.SidebarProvider` — Holds the open state and the `Ctrl/Cmd+B` shortcut.
|
|
35
|
+
- `Nxds.SidebarRail` — Thin strip on the sidebar's inner edge that toggles the sidebar on click.
|
|
36
|
+
- `Nxds.SidebarSeparator` — `Separator` inset to line up with the sidebar's content.
|
|
37
|
+
- `Nxds.SidebarTrigger` — Icon button that opens and closes the sidebar.
|
|
38
|
+
|
|
39
|
+
## Props
|
|
40
|
+
|
|
41
|
+
### Sidebar
|
|
42
|
+
|
|
43
|
+
| Prop | Type | Default | Control |
|
|
44
|
+
| --- | --- | --- | --- |
|
|
45
|
+
| `side` | `"left" \| "right"` | `"left"` | dropdown |
|
|
46
|
+
| `variant` | `"floating" \| "inset" \| "sidebar"` | `"sidebar"` | dropdown |
|
|
47
|
+
| `collapsible` | `"none" \| "icon" \| "offcanvas"` | `"offcanvas"` | dropdown |
|
|
48
|
+
| `className` | `string` | | text |
|
|
49
|
+
| `id` | `string` | | text |
|
|
50
|
+
| `children` | `React.ReactNode` | | content |
|
|
51
|
+
|
|
52
|
+
### SidebarContent
|
|
53
|
+
|
|
54
|
+
| Prop | Type | Default | Control |
|
|
55
|
+
| --- | --- | --- | --- |
|
|
56
|
+
| `className` | `string` | | text |
|
|
57
|
+
| `id` | `string` | | text |
|
|
58
|
+
| `children` | `React.ReactNode` | | content |
|
|
59
|
+
|
|
60
|
+
### SidebarFooter
|
|
61
|
+
|
|
62
|
+
| Prop | Type | Default | Control |
|
|
63
|
+
| --- | --- | --- | --- |
|
|
64
|
+
| `className` | `string` | | text |
|
|
65
|
+
| `id` | `string` | | text |
|
|
66
|
+
| `children` | `React.ReactNode` | | content |
|
|
67
|
+
|
|
68
|
+
### SidebarGroup
|
|
69
|
+
|
|
70
|
+
| Prop | Type | Default | Control |
|
|
71
|
+
| --- | --- | --- | --- |
|
|
72
|
+
| `className` | `string` | | text |
|
|
73
|
+
| `id` | `string` | | text |
|
|
74
|
+
| `children` | `React.ReactNode` | | content |
|
|
75
|
+
|
|
76
|
+
### SidebarGroupAction
|
|
77
|
+
|
|
78
|
+
| Prop | Type | Default | Control |
|
|
79
|
+
| --- | --- | --- | --- |
|
|
80
|
+
| `asChild` | `boolean` | `false` | toggle |
|
|
81
|
+
| `disabled` | `boolean` | | toggle |
|
|
82
|
+
| `name` | `string` | | text |
|
|
83
|
+
| `type` | `"button" \| "submit" \| "reset"` | | dropdown |
|
|
84
|
+
| `value` | `string \| number \| readonly string[]` | | none (object) |
|
|
85
|
+
| `className` | `string` | | text |
|
|
86
|
+
| `id` | `string` | | text |
|
|
87
|
+
| `children` | `React.ReactNode` | | content |
|
|
88
|
+
|
|
89
|
+
### SidebarGroupContent
|
|
90
|
+
|
|
91
|
+
| Prop | Type | Default | Control |
|
|
92
|
+
| --- | --- | --- | --- |
|
|
93
|
+
| `className` | `string` | | text |
|
|
94
|
+
| `id` | `string` | | text |
|
|
95
|
+
| `children` | `React.ReactNode` | | content |
|
|
96
|
+
|
|
97
|
+
### SidebarGroupLabel
|
|
98
|
+
|
|
99
|
+
| Prop | Type | Default | Control |
|
|
100
|
+
| --- | --- | --- | --- |
|
|
101
|
+
| `asChild` | `boolean` | `false` | toggle |
|
|
102
|
+
| `className` | `string` | | text |
|
|
103
|
+
| `id` | `string` | | text |
|
|
104
|
+
| `children` | `React.ReactNode` | | content |
|
|
105
|
+
|
|
106
|
+
### SidebarHeader
|
|
107
|
+
|
|
108
|
+
| Prop | Type | Default | Control |
|
|
109
|
+
| --- | --- | --- | --- |
|
|
110
|
+
| `className` | `string` | | text |
|
|
111
|
+
| `id` | `string` | | text |
|
|
112
|
+
| `children` | `React.ReactNode` | | content |
|
|
113
|
+
|
|
114
|
+
### SidebarInput
|
|
115
|
+
|
|
116
|
+
| Prop | Type | Default | Control |
|
|
117
|
+
| --- | --- | --- | --- |
|
|
118
|
+
| `children` | `React.ReactNode` | | content |
|
|
119
|
+
| `className` | `string` | | text |
|
|
120
|
+
| `id` | `string` | | text |
|
|
121
|
+
| `max` | `string \| number` | | none (object) |
|
|
122
|
+
| `min` | `string \| number` | | none (object) |
|
|
123
|
+
| `name` | `string` | | text |
|
|
124
|
+
| `type` | `HTMLInputTypeAttribute` | | none (object) |
|
|
125
|
+
| `step` | `string \| number` | | none (object) |
|
|
126
|
+
| `disabled` | `boolean` | | toggle |
|
|
127
|
+
| `value` | `string \| number \| readonly string[]` | | none (object) |
|
|
128
|
+
| `checked` | `boolean` | | toggle |
|
|
129
|
+
| `maxLength` | `number` | | number |
|
|
130
|
+
| `placeholder` | `string` | | text |
|
|
131
|
+
| `readOnly` | `boolean` | | toggle |
|
|
132
|
+
| `required` | `boolean` | | toggle |
|
|
133
|
+
| `variant` | `"ghost" \| "bordered" \| "borderless"` | `"bordered"` | dropdown |
|
|
134
|
+
| `size` | `"default" \| "sm" \| "lg"` | `"default"` | dropdown |
|
|
135
|
+
|
|
136
|
+
### SidebarInset
|
|
137
|
+
|
|
138
|
+
| Prop | Type | Default | Control |
|
|
139
|
+
| --- | --- | --- | --- |
|
|
140
|
+
| `className` | `string` | | text |
|
|
141
|
+
| `id` | `string` | | text |
|
|
142
|
+
| `children` | `React.ReactNode` | | content |
|
|
143
|
+
|
|
144
|
+
### SidebarMenu
|
|
145
|
+
|
|
146
|
+
| Prop | Type | Default | Control |
|
|
147
|
+
| --- | --- | --- | --- |
|
|
148
|
+
| `className` | `string` | | text |
|
|
149
|
+
| `id` | `string` | | text |
|
|
150
|
+
| `children` | `React.ReactNode` | | content |
|
|
151
|
+
|
|
152
|
+
### SidebarMenuAction
|
|
153
|
+
|
|
154
|
+
| Prop | Type | Default | Control |
|
|
155
|
+
| --- | --- | --- | --- |
|
|
156
|
+
| `asChild` | `boolean` | `false` | toggle |
|
|
157
|
+
| `showOnHover` | `boolean` | `false` | toggle |
|
|
158
|
+
| `disabled` | `boolean` | | toggle |
|
|
159
|
+
| `name` | `string` | | text |
|
|
160
|
+
| `type` | `"button" \| "submit" \| "reset"` | | dropdown |
|
|
161
|
+
| `value` | `string \| number \| readonly string[]` | | none (object) |
|
|
162
|
+
| `className` | `string` | | text |
|
|
163
|
+
| `id` | `string` | | text |
|
|
164
|
+
| `children` | `React.ReactNode` | | content |
|
|
165
|
+
|
|
166
|
+
### SidebarMenuBadge
|
|
167
|
+
|
|
168
|
+
| Prop | Type | Default | Control |
|
|
169
|
+
| --- | --- | --- | --- |
|
|
170
|
+
| `className` | `string` | | text |
|
|
171
|
+
| `id` | `string` | | text |
|
|
172
|
+
| `children` | `React.ReactNode` | | content |
|
|
173
|
+
|
|
174
|
+
### SidebarMenuButton
|
|
175
|
+
|
|
176
|
+
| Prop | Type | Default | Control |
|
|
177
|
+
| --- | --- | --- | --- |
|
|
178
|
+
| `asChild` | `boolean` | `false` | toggle |
|
|
179
|
+
| `isActive` | `boolean` | `false` | toggle |
|
|
180
|
+
| `tooltip` | `string \| (TooltipContentProps & RefAttributes<HTMLDivElement>)` | | none (object) |
|
|
181
|
+
| `disabled` | `boolean` | | toggle |
|
|
182
|
+
| `name` | `string` | | text |
|
|
183
|
+
| `type` | `"button" \| "submit" \| "reset"` | | dropdown |
|
|
184
|
+
| `value` | `string \| number \| readonly string[]` | | none (object) |
|
|
185
|
+
| `className` | `string` | | text |
|
|
186
|
+
| `id` | `string` | | text |
|
|
187
|
+
| `children` | `React.ReactNode` | | content |
|
|
188
|
+
| `variant` | `"default" \| "outline"` | `"default"` | dropdown |
|
|
189
|
+
| `size` | `"default" \| "sm" \| "lg"` | `"default"` | dropdown |
|
|
190
|
+
|
|
191
|
+
### SidebarMenuItem
|
|
192
|
+
|
|
193
|
+
| Prop | Type | Default | Control |
|
|
194
|
+
| --- | --- | --- | --- |
|
|
195
|
+
| `value` | `string \| number \| readonly string[]` | | none (object) |
|
|
196
|
+
| `className` | `string` | | text |
|
|
197
|
+
| `id` | `string` | | text |
|
|
198
|
+
| `children` | `React.ReactNode` | | content |
|
|
199
|
+
|
|
200
|
+
### SidebarMenuSkeleton
|
|
201
|
+
|
|
202
|
+
| Prop | Type | Default | Control |
|
|
203
|
+
| --- | --- | --- | --- |
|
|
204
|
+
| `showIcon` | `boolean` | `false` | toggle |
|
|
205
|
+
| `className` | `string` | | text |
|
|
206
|
+
| `id` | `string` | | text |
|
|
207
|
+
| `children` | `React.ReactNode` | | content |
|
|
208
|
+
|
|
209
|
+
### SidebarMenuSub
|
|
210
|
+
|
|
211
|
+
| Prop | Type | Default | Control |
|
|
212
|
+
| --- | --- | --- | --- |
|
|
213
|
+
| `className` | `string` | | text |
|
|
214
|
+
| `id` | `string` | | text |
|
|
215
|
+
| `children` | `React.ReactNode` | | content |
|
|
216
|
+
|
|
217
|
+
### SidebarMenuSubButton
|
|
218
|
+
|
|
219
|
+
| Prop | Type | Default | Control |
|
|
220
|
+
| --- | --- | --- | --- |
|
|
221
|
+
| `asChild` | `boolean` | `false` | toggle |
|
|
222
|
+
| `size` | `"sm" \| "md"` | `"md"` | dropdown |
|
|
223
|
+
| `isActive` | `boolean` | `false` | toggle |
|
|
224
|
+
| `href` | `string` | | text |
|
|
225
|
+
| `target` | `HTMLAttributeAnchorTarget` | | none (object) |
|
|
226
|
+
| `type` | `string` | | text |
|
|
227
|
+
| `className` | `string` | | text |
|
|
228
|
+
| `id` | `string` | | text |
|
|
229
|
+
| `children` | `React.ReactNode` | | content |
|
|
230
|
+
|
|
231
|
+
### SidebarMenuSubItem
|
|
232
|
+
|
|
233
|
+
| Prop | Type | Default | Control |
|
|
234
|
+
| --- | --- | --- | --- |
|
|
235
|
+
| `value` | `string \| number \| readonly string[]` | | none (object) |
|
|
236
|
+
| `className` | `string` | | text |
|
|
237
|
+
| `id` | `string` | | text |
|
|
238
|
+
| `children` | `React.ReactNode` | | content |
|
|
239
|
+
|
|
240
|
+
### SidebarProvider
|
|
241
|
+
|
|
242
|
+
| Prop | Type | Default | Control |
|
|
243
|
+
| --- | --- | --- | --- |
|
|
244
|
+
| `defaultOpen` | `boolean` | `true` | toggle |
|
|
245
|
+
| `open` | `boolean` | | toggle |
|
|
246
|
+
| `onOpenChange` | `(open: boolean) => void` | | none (function) |
|
|
247
|
+
| `className` | `string` | | text |
|
|
248
|
+
| `id` | `string` | | text |
|
|
249
|
+
| `children` | `React.ReactNode` | | content |
|
|
250
|
+
|
|
251
|
+
### SidebarRail
|
|
252
|
+
|
|
253
|
+
| Prop | Type | Default | Control |
|
|
254
|
+
| --- | --- | --- | --- |
|
|
255
|
+
| `disabled` | `boolean` | | toggle |
|
|
256
|
+
| `name` | `string` | | text |
|
|
257
|
+
| `type` | `"button" \| "submit" \| "reset"` | | dropdown |
|
|
258
|
+
| `value` | `string \| number \| readonly string[]` | | none (object) |
|
|
259
|
+
| `className` | `string` | | text |
|
|
260
|
+
| `id` | `string` | | text |
|
|
261
|
+
| `children` | `React.ReactNode` | | content |
|
|
262
|
+
|
|
263
|
+
### SidebarSeparator
|
|
264
|
+
|
|
265
|
+
| Prop | Type | Default | Control |
|
|
266
|
+
| --- | --- | --- | --- |
|
|
267
|
+
| `orientation` | `"horizontal" \| "vertical"` | `"horizontal"` | dropdown |
|
|
268
|
+
| `decorative` | `boolean` | `true` | toggle |
|
|
269
|
+
| `children` | `React.ReactNode` | | content |
|
|
270
|
+
| `className` | `string` | | text |
|
|
271
|
+
| `id` | `string` | | text |
|
|
272
|
+
| `asChild` | `boolean` | | toggle |
|
|
273
|
+
|
|
274
|
+
### SidebarTrigger
|
|
275
|
+
|
|
276
|
+
| Prop | Type | Default | Control |
|
|
277
|
+
| --- | --- | --- | --- |
|
|
278
|
+
| `asChild` | `boolean` | `false` | toggle |
|
|
279
|
+
| `loading` | `boolean` | `false` | toggle |
|
|
280
|
+
| `startIcon` | `React.ReactNode` | | none (element) |
|
|
281
|
+
| `endIcon` | `React.ReactNode` | | none (element) |
|
|
282
|
+
| `disabled` | `boolean` | | toggle |
|
|
283
|
+
| `name` | `string` | | text |
|
|
284
|
+
| `type` | `"button" \| "submit" \| "reset"` | `"button"` | dropdown |
|
|
285
|
+
| `value` | `string \| number \| readonly string[]` | | none (object) |
|
|
286
|
+
| `className` | `string` | | text |
|
|
287
|
+
| `id` | `string` | | text |
|
|
288
|
+
| `children` | `React.ReactNode` | | content |
|
|
289
|
+
| `variant` | `"link" \| "default" \| "destructive" \| "error" \| "outline" \| "dashed" \| "secondary" \| "ghost"` | `"ghost"` | dropdown |
|
|
290
|
+
| `size` | `"default" \| "sm" \| "lg" \| "icon-sm" \| "icon" \| "icon-lg"` | `"icon"` | dropdown |
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- @dsCard group="Navigation" height=420 -->
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<title>Sidebar</title>
|
|
7
|
+
<style>
|
|
8
|
+
body { margin: 0; background: var(--nx-color-background); color: var(--nx-color-foreground); font-family: var(--font-sans); }
|
|
9
|
+
#root { padding: var(--nx-spacing-6); }
|
|
10
|
+
</style>
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<div id="root"></div>
|
|
14
|
+
<script>(()=>{var R=Object.create;var c=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var G=Object.getPrototypeOf,N=Object.prototype.hasOwnProperty;var p=(r,t)=>()=>{try{return t||r((t={exports:{}}).exports,t),t.exports}catch(o){throw t=0,o}};var P=(r,t,o,u)=>{if(t&&typeof t=="object"||typeof t=="function")for(let d of B(t))!N.call(r,d)&&d!==o&&c(r,d,{get:()=>t[d],enumerable:!(u=E(t,d))||u.enumerable});return r};var s=(r,t,o)=>(o=r!=null?R(G(r)):{},P(t||!r||!r.__esModule?c(o,"default",{value:r,enumerable:!0}):o,r));var x=p((K,S)=>{S.exports=window.Nxds.Icons});var h=p((D,f)=>{f.exports=window.Nxds});var b=p((H,y)=>{y.exports=window.React});var g=p((j,M)=>{M.exports={createRoot:window.ReactDOM.createRoot}});var i=s(x()),e=s(h());var l=s(b());function I(r,t){return t===void 0?r:{...r,key:t}}function n(r,t,o){return(0,l.createElement)(r,I(t,o))}function a(r,t,o){let{children:u,...d}=t;return(0,l.createElement)(r,I(d,o),...u)}function C({children:r}){return a(e.SidebarInset,{children:[a("header",{className:"nx:flex nx:h-16 nx:items-center nx:gap-2 nx:border-b-default nx:border-border-default nx:px-4",children:[n(e.SidebarTrigger,{}),n("span",{className:"nx:typography-label-default",children:"Dashboard"})]}),n("div",{className:"nx:min-h-[20rem] nx:p-4 nx:typography-label-default nx:text-muted-foreground",children:r??"Main content area."})]})}function m(){return n("div",{className:"nx:h-96 nx:w-full nx:overflow-hidden nx:rounded-lg nx:border-default nx:border-border-default",children:a(e.SidebarProvider,{style:{minHeight:"unset",height:"100%"},children:[a(e.Sidebar,{collapsible:"none",children:[n(e.SidebarHeader,{children:n(e.SidebarMenu,{children:n(e.SidebarMenuItem,{children:a(e.SidebarMenuButton,{size:"lg",children:[n(i.IconLayoutGrid,{}),n("span",{children:"Acme Inc"})]})})})}),n(e.SidebarContent,{children:a(e.SidebarGroup,{children:[n(e.SidebarGroupLabel,{children:"Variants"}),n(e.SidebarGroupContent,{children:a(e.SidebarMenu,{children:[n(e.SidebarMenuItem,{children:a(e.SidebarMenuButton,{isActive:!0,children:[n(i.IconHome,{}),n("span",{children:"Active"})]})}),n(e.SidebarMenuItem,{children:a(e.SidebarMenuButton,{variant:"outline",children:[n(i.IconInbox,{}),n("span",{children:"Outline"})]})}),n(e.SidebarMenuItem,{children:a(e.SidebarMenuButton,{size:"sm",children:[n(i.IconCalendar,{}),n("span",{children:"Small"})]})}),n(e.SidebarMenuItem,{children:n(e.SidebarMenuButton,{asChild:!0,children:a("a",{href:"https://example.com",children:[n(i.IconSettings,{}),n("span",{children:"As link"})]})})})]})})]})})]}),n(C,{})]})})}var w=s(b()),v=s(g());(0,v.createRoot)(document.getElementById("root")).render((0,w.createElement)(m));})();</script>
|
|
15
|
+
</body>
|
|
16
|
+
</html>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Skeleton
|
|
2
|
+
|
|
3
|
+
Skeleton shows a pulsing placeholder where content is still loading. Use it to keep the layout steady until data arrives. For a short wait with no known layout, use Spinner.
|
|
4
|
+
|
|
5
|
+
## On the canvas
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<div class="nx:flex nx:w-80 nx:flex-col nx:gap-4">
|
|
9
|
+
<x-import component-from-global-scope="Nxds.Skeleton" class-name="nx:h-40 nx:w-full nx:rounded-lg"></x-import>
|
|
10
|
+
<div class="nx:flex nx:items-center nx:gap-3">
|
|
11
|
+
<x-import component-from-global-scope="Nxds.Skeleton" class-name="nx:size-10 nx:rounded-full"></x-import>
|
|
12
|
+
<div class="nx:flex nx:flex-1 nx:flex-col nx:gap-2">
|
|
13
|
+
<x-import component-from-global-scope="Nxds.Skeleton" class-name="nx:h-4 nx:w-1/2"></x-import>
|
|
14
|
+
<x-import component-from-global-scope="Nxds.Skeleton" class-name="nx:h-3 nx:w-3/4"></x-import>
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
</div>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Attributes set props, kebab-case to camelCase. Element content becomes `children`. An attribute holds text, so a prop that takes an element, a function or an object has no attribute.
|
|
21
|
+
|
|
22
|
+
## Props
|
|
23
|
+
|
|
24
|
+
### Skeleton
|
|
25
|
+
|
|
26
|
+
| Prop | Type | Default | Control |
|
|
27
|
+
| --- | --- | --- | --- |
|
|
28
|
+
| `className` | `string` | | text |
|
|
29
|
+
| `id` | `string` | | text |
|
|
30
|
+
| `children` | `React.ReactNode` | | content |
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- @dsCard group="Feedback" height=120 -->
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<title>Skeleton</title>
|
|
7
|
+
<style>
|
|
8
|
+
body { margin: 0; background: var(--nx-color-background); color: var(--nx-color-foreground); font-family: var(--font-sans); }
|
|
9
|
+
#root { padding: var(--nx-spacing-6); }
|
|
10
|
+
</style>
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<div id="root"></div>
|
|
14
|
+
<script>(()=>{var v=Object.create;var p=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var P=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var m=(n,e)=>()=>{try{return e||n((e={exports:{}}).exports,e),e.exports}catch(t){throw e=0,t}};var S=(n,e,t,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of K(e))!k.call(n,o)&&o!==t&&p(n,o,{get:()=>e[o],enumerable:!(l=R(e,o))||l.enumerable});return n};var s=(n,e,t)=>(t=n!=null?v(P(n)):{},S(e||!n||!n.__esModule?p(t,"default",{value:n,enumerable:!0}):t,n));var u=m((j,f)=>{f.exports=window.Nxds});var d=m((D,w)=>{w.exports=window.React});var N=m((F,E)=>{E.exports={createRoot:window.ReactDOM.createRoot}});var x=s(u());var a=s(d());function y(n,e){return e===void 0?n:{...n,key:e}}function r(n,e,t){return(0,a.createElement)(n,y(e,t))}function c(n,e,t){let{children:l,...o}=e;return(0,a.createElement)(n,y(o,t),...l)}function i(){return c("div",{className:"nx:flex nx:w-80 nx:flex-col nx:gap-4",children:[r(x.Skeleton,{className:"nx:h-40 nx:w-full nx:rounded-lg"}),c("div",{className:"nx:flex nx:items-center nx:gap-3",children:[r(x.Skeleton,{className:"nx:size-10 nx:rounded-full"}),c("div",{className:"nx:flex nx:flex-1 nx:flex-col nx:gap-2",children:[r(x.Skeleton,{className:"nx:h-4 nx:w-1/2"}),r(x.Skeleton,{className:"nx:h-3 nx:w-3/4"})]})]})]})}var g=s(d()),h=s(N());(0,h.createRoot)(document.getElementById("root")).render((0,g.createElement)(i));})();</script>
|
|
15
|
+
</body>
|
|
16
|
+
</html>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Slider
|
|
2
|
+
|
|
3
|
+
Slider sets a number, or a range with two thumbs, by dragging along a track or with the arrow keys. Use it for settings such as volume or brightness. Give each slider an `aria-label` or `aria-labelledby`.
|
|
4
|
+
|
|
5
|
+
## On the canvas
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<x-import component-from-global-scope="Nxds.Slider" size="comfortable" orientation="vertical">Slider</x-import>
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Attributes set props, kebab-case to camelCase. Element content becomes `children`. An attribute holds text, so a prop that takes an element, a function or an object has no attribute.
|
|
12
|
+
|
|
13
|
+
## Props
|
|
14
|
+
|
|
15
|
+
### Slider
|
|
16
|
+
|
|
17
|
+
| Prop | Type | Default | Control |
|
|
18
|
+
| --- | --- | --- | --- |
|
|
19
|
+
| `size` | `"standard" \| "comfortable"` | `"standard"` | dropdown |
|
|
20
|
+
| `markers` | `SliderMarkers` | | none (object) |
|
|
21
|
+
| `name` | `string` | | text |
|
|
22
|
+
| `disabled` | `boolean` | | toggle |
|
|
23
|
+
| `orientation` | `"horizontal" \| "vertical"` | `"horizontal"` | dropdown |
|
|
24
|
+
| `dir` | `"ltr" \| "rtl"` | | dropdown |
|
|
25
|
+
| `min` | `number` | `0` | number |
|
|
26
|
+
| `max` | `number` | `100` | number |
|
|
27
|
+
| `step` | `number` | `1` | number |
|
|
28
|
+
| `minStepsBetweenThumbs` | `number` | | number |
|
|
29
|
+
| `value` | `number[]` | | none (object) |
|
|
30
|
+
| `defaultValue` | `number[]` | | none (object) |
|
|
31
|
+
| `onValueChange` | `(value: number[]) => void` | | none (function) |
|
|
32
|
+
| `onValueCommit` | `(value: number[]) => void` | | none (function) |
|
|
33
|
+
| `inverted` | `boolean` | | toggle |
|
|
34
|
+
| `form` | `string` | | text |
|
|
35
|
+
| `children` | `React.ReactNode` | | content |
|
|
36
|
+
| `className` | `string` | | text |
|
|
37
|
+
| `id` | `string` | | text |
|
|
38
|
+
| `asChild` | `boolean` | | toggle |
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<!-- @dsCard group="Forms" height=120 -->
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<title>Slider</title>
|
|
7
|
+
<style>
|
|
8
|
+
body { margin: 0; background: var(--nx-color-background); color: var(--nx-color-foreground); font-family: var(--font-sans); }
|
|
9
|
+
#root { padding: var(--nx-spacing-6); }
|
|
10
|
+
</style>
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
<div id="root"></div>
|
|
14
|
+
<script>(()=>{var K=Object.create;var s=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty;var i=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(r){throw e=0,r}};var S=(t,e,r,l)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of g(e))!D.call(t,o)&&o!==r&&s(t,o,{get:()=>e[o],enumerable:!(l=P(e,o))||l.enumerable});return t};var n=(t,e,r)=>(r=t!=null?K(h(t)):{},S(e||!t||!t.__esModule?s(r,"default",{value:t,enumerable:!0}):r,t));var u=i((j,c)=>{c.exports=window.Nxds});var a=i((v,f)=>{f.exports=window.React});var w=i((B,x)=>{x.exports={createRoot:window.ReactDOM.createRoot}});var y=n(u());var m=n(a());function T(t,e){return e===void 0?t:{...t,key:e}}function p(t,e,r){return(0,m.createElement)(t,T(e,r))}function d(){return p("div",{className:"nx:w-96",children:p(y.Slider,{defaultValue:[50],max:100,step:1,"aria-label":"Volume"})})}var E=n(a()),R=n(w());(0,R.createRoot)(document.getElementById("root")).render((0,E.createElement)(d));})();</script>
|
|
15
|
+
</body>
|
|
16
|
+
</html>
|