adjacent-ui 0.1.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/CHANGELOG.md +15 -0
- package/LICENSE +21 -0
- package/README.md +41 -0
- package/dist/button/button.css +177 -0
- package/dist/button/button.d.ts +25 -0
- package/dist/button/button.d.ts.map +1 -0
- package/dist/button/button.js +11 -0
- package/dist/button/button.js.map +1 -0
- package/dist/card/card.css +126 -0
- package/dist/card/card.d.ts +18 -0
- package/dist/card/card.d.ts.map +1 -0
- package/dist/card/card.js +38 -0
- package/dist/card/card.js.map +1 -0
- package/dist/checkbox/checkbox.css +116 -0
- package/dist/checkbox/checkbox.d.ts +13 -0
- package/dist/checkbox/checkbox.d.ts.map +1 -0
- package/dist/checkbox/checkbox.js +32 -0
- package/dist/checkbox/checkbox.js.map +1 -0
- package/dist/data-table/data-table.css +238 -0
- package/dist/data-table/data-table.d.ts +47 -0
- package/dist/data-table/data-table.d.ts.map +1 -0
- package/dist/data-table/data-table.js +58 -0
- package/dist/data-table/data-table.js.map +1 -0
- package/dist/divider/divider.css +35 -0
- package/dist/divider/divider.d.ts +12 -0
- package/dist/divider/divider.d.ts.map +1 -0
- package/dist/divider/divider.js +7 -0
- package/dist/divider/divider.js.map +1 -0
- package/dist/floating-action-button/floating-action-button.css +132 -0
- package/dist/floating-action-button/floating-action-button.d.ts +15 -0
- package/dist/floating-action-button/floating-action-button.d.ts.map +1 -0
- package/dist/floating-action-button/floating-action-button.js +8 -0
- package/dist/floating-action-button/floating-action-button.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/list/list.css +181 -0
- package/dist/list/list.d.ts +56 -0
- package/dist/list/list.d.ts.map +1 -0
- package/dist/list/list.js +33 -0
- package/dist/list/list.js.map +1 -0
- package/dist/menu/menu.css +170 -0
- package/dist/menu/menu.d.ts +70 -0
- package/dist/menu/menu.d.ts.map +1 -0
- package/dist/menu/menu.js +69 -0
- package/dist/menu/menu.js.map +1 -0
- package/dist/navigation/header/header.css +182 -0
- package/dist/navigation/header/header.d.ts +20 -0
- package/dist/navigation/header/header.d.ts.map +1 -0
- package/dist/navigation/header/header.js +23 -0
- package/dist/navigation/header/header.js.map +1 -0
- package/dist/navigation/index.d.ts +5 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +5 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/navigation/link/link.d.ts +5 -0
- package/dist/navigation/link/link.d.ts.map +1 -0
- package/dist/navigation/link/link.js +6 -0
- package/dist/navigation/link/link.js.map +1 -0
- package/dist/navigation/shell/shell.css +21 -0
- package/dist/navigation/shell/shell.d.ts +22 -0
- package/dist/navigation/shell/shell.d.ts.map +1 -0
- package/dist/navigation/shell/shell.js +15 -0
- package/dist/navigation/shell/shell.js.map +1 -0
- package/dist/navigation/tabs/tabs.css +390 -0
- package/dist/navigation/tabs/tabs.d.ts +37 -0
- package/dist/navigation/tabs/tabs.d.ts.map +1 -0
- package/dist/navigation/tabs/tabs.js +74 -0
- package/dist/navigation/tabs/tabs.js.map +1 -0
- package/dist/page/page.css +15 -0
- package/dist/page/page.d.ts +32 -0
- package/dist/page/page.d.ts.map +1 -0
- package/dist/page/page.js +10 -0
- package/dist/page/page.js.map +1 -0
- package/dist/radio/radio.css +108 -0
- package/dist/radio/radio.d.ts +29 -0
- package/dist/radio/radio.d.ts.map +1 -0
- package/dist/radio/radio.js +23 -0
- package/dist/radio/radio.js.map +1 -0
- package/dist/runtime/use-display-mode.d.ts +9 -0
- package/dist/runtime/use-display-mode.d.ts.map +1 -0
- package/dist/runtime/use-display-mode.js +33 -0
- package/dist/runtime/use-display-mode.js.map +1 -0
- package/dist/runtime/use-keyboard.d.ts +8 -0
- package/dist/runtime/use-keyboard.d.ts.map +1 -0
- package/dist/runtime/use-keyboard.js +34 -0
- package/dist/runtime/use-keyboard.js.map +1 -0
- package/dist/runtime/use-viewport-tier.d.ts +10 -0
- package/dist/runtime/use-viewport-tier.d.ts.map +1 -0
- package/dist/runtime/use-viewport-tier.js +24 -0
- package/dist/runtime/use-viewport-tier.js.map +1 -0
- package/dist/snackbar/snackbar.css +95 -0
- package/dist/snackbar/snackbar.d.ts +15 -0
- package/dist/snackbar/snackbar.d.ts.map +1 -0
- package/dist/snackbar/snackbar.js +36 -0
- package/dist/snackbar/snackbar.js.map +1 -0
- package/dist/switch/switch.css +164 -0
- package/dist/switch/switch.d.ts +11 -0
- package/dist/switch/switch.d.ts.map +1 -0
- package/dist/switch/switch.js +11 -0
- package/dist/switch/switch.js.map +1 -0
- package/dist/tabs/tabs.css +165 -0
- package/dist/tabs/tabs.d.ts +25 -0
- package/dist/tabs/tabs.d.ts.map +1 -0
- package/dist/tabs/tabs.js +81 -0
- package/dist/tabs/tabs.js.map +1 -0
- package/dist/text/text.css +91 -0
- package/dist/text/text.d.ts +12 -0
- package/dist/text/text.d.ts.map +1 -0
- package/dist/text/text.js +17 -0
- package/dist/text/text.js.map +1 -0
- package/dist/text-area/text-area.css +11 -0
- package/dist/text-area/text-area.d.ts +13 -0
- package/dist/text-area/text-area.d.ts.map +1 -0
- package/dist/text-area/text-area.js +35 -0
- package/dist/text-area/text-area.js.map +1 -0
- package/dist/text-field/text-field.css +154 -0
- package/dist/text-field/text-field.d.ts +18 -0
- package/dist/text-field/text-field.d.ts.map +1 -0
- package/dist/text-field/text-field.js +32 -0
- package/dist/text-field/text-field.js.map +1 -0
- package/package.json +78 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { displayModeFrom, useDisplayMode, } from "./runtime/use-display-mode.js";
|
|
2
|
+
export { KEYBOARD_THRESHOLD_PX, keyboardStateFrom, useKeyboard, } from "./runtime/use-keyboard.js";
|
|
3
|
+
export { TIER_MIN_WIDTH, tierForWidth, useViewportTier, } from "./runtime/use-viewport-tier.js";
|
|
4
|
+
export { Page } from "./page/page.js";
|
|
5
|
+
export { Text } from "./text/text.js";
|
|
6
|
+
export { Snackbar, } from "./snackbar/snackbar.js";
|
|
7
|
+
export { TextField, } from "./text-field/text-field.js";
|
|
8
|
+
export { TextArea } from "./text-area/text-area.js";
|
|
9
|
+
export { DataTable, DataTableBody, DataTableCell, DataTableEmpty, DataTableHead, DataTableHeader, DataTablePagination, DataTableRow, } from "./data-table/data-table.js";
|
|
10
|
+
export { Menu, MenuContent, MenuGroup, MenuItem, MenuLabel, MenuRadioGroup, MenuRadioItem, MenuSelect, MenuSeparator, MenuTrigger, } from "./menu/menu.js";
|
|
11
|
+
export { Tab, TabList, TabPanel, Tabs, } from "./tabs/tabs.js";
|
|
12
|
+
export { Button, IconButton, } from "./button/button.js";
|
|
13
|
+
export { FloatingActionButton, } from "./floating-action-button/floating-action-button.js";
|
|
14
|
+
export { Card, CardActions, CardContent, CardDescription, CardHeader, CardMedia, CardSubtitle, CardTitle, } from "./card/card.js";
|
|
15
|
+
export { Checkbox, } from "./checkbox/checkbox.js";
|
|
16
|
+
export { Divider, } from "./divider/divider.js";
|
|
17
|
+
export { List, ListItem, ListSection, } from "./list/list.js";
|
|
18
|
+
export { RadioGroup, } from "./radio/radio.js";
|
|
19
|
+
export { Switch } from "./switch/switch.js";
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,cAAc,GAGf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,WAAW,GAEZ,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,cAAc,EACd,YAAY,EACZ,eAAe,GAEhB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,IAAI,EAAoC,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,IAAI,EAAoC,MAAM,gBAAgB,CAAC;AACxE,OAAO,EACL,QAAQ,GAGT,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,SAAS,GAGV,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAsB,MAAM,0BAA0B,CAAC;AACxE,OAAO,EACL,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,YAAY,GAWb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,IAAI,EACJ,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,cAAc,EACd,aAAa,EACb,UAAU,EACV,aAAa,EACb,WAAW,GAYZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,GAAG,EACH,OAAO,EACP,QAAQ,EACR,IAAI,GAOL,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,MAAM,EACN,UAAU,GAQX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,GAKrB,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EACL,IAAI,EACJ,WAAW,EACX,WAAW,EACX,eAAe,EACf,UAAU,EACV,SAAS,EACT,YAAY,EACZ,SAAS,GAGV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,QAAQ,GAGT,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,OAAO,GAKR,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,WAAW,GAQZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,UAAU,GAIX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAoB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.adj-list {
|
|
3
|
+
display: grid;
|
|
4
|
+
width: 100%;
|
|
5
|
+
padding: 0;
|
|
6
|
+
margin: 0;
|
|
7
|
+
list-style: none;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.adj-list[data-variant="segmented"],
|
|
11
|
+
.adj-list[data-variant="segmented"] .adj-list-section__items {
|
|
12
|
+
gap: 0.125rem;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.adj-list-section {
|
|
16
|
+
display: grid;
|
|
17
|
+
min-width: 0;
|
|
18
|
+
padding: 0;
|
|
19
|
+
margin: 0;
|
|
20
|
+
list-style: none;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
* The title carries the spacing, rather than a gap between sections carrying
|
|
25
|
+
* it: equal above and below, and the same for the first section as the rest.
|
|
26
|
+
*/
|
|
27
|
+
.adj-list-section__title {
|
|
28
|
+
padding-block: var(--adj-list-section-title-spacing, 0.75rem);
|
|
29
|
+
padding-inline: var(--adj-list-section-title-inset, 1rem);
|
|
30
|
+
margin: 0;
|
|
31
|
+
color: var(--adj-list-section-title-color, var(--muted-foreground, currentColor));
|
|
32
|
+
font-size: 0.875rem;
|
|
33
|
+
font-weight: 500;
|
|
34
|
+
line-height: 1.25rem;
|
|
35
|
+
letter-spacing: 0.01em;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.adj-list-item-shell {
|
|
39
|
+
position: relative;
|
|
40
|
+
min-width: 0;
|
|
41
|
+
padding: 0;
|
|
42
|
+
margin: 0;
|
|
43
|
+
list-style: none;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.adj-list-item {
|
|
47
|
+
display: flex;
|
|
48
|
+
gap: 1rem;
|
|
49
|
+
align-items: center;
|
|
50
|
+
box-sizing: border-box;
|
|
51
|
+
width: 100%;
|
|
52
|
+
min-height: 3.5rem;
|
|
53
|
+
padding: 0.5rem 1rem;
|
|
54
|
+
color: var(--adj-list-color, var(--foreground, CanvasText));
|
|
55
|
+
font: inherit;
|
|
56
|
+
text-align: start;
|
|
57
|
+
text-decoration: none;
|
|
58
|
+
background: var(--adj-list-item-background, transparent);
|
|
59
|
+
border: 0;
|
|
60
|
+
border-radius: var(--radius-lg, var(--radius, 0.625rem));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.adj-list-item-shell[data-lines="2"] .adj-list-item {
|
|
64
|
+
min-height: 4.5rem;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.adj-list-item-shell[data-lines="3"] .adj-list-item {
|
|
68
|
+
min-height: 5.5rem;
|
|
69
|
+
align-items: flex-start;
|
|
70
|
+
padding-block: 0.75rem;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.adj-list-item-shell[data-disabled="true"] {
|
|
74
|
+
pointer-events: none;
|
|
75
|
+
opacity: 0.38;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.adj-list-item[data-selected="true"] {
|
|
79
|
+
background: var(--adj-list-selected-background, color-mix(in srgb, var(--primary, CanvasText) 12%, transparent));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.adj-list-item:is(a, button) {
|
|
83
|
+
cursor: pointer;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.adj-list-item:is(a, button):hover {
|
|
87
|
+
background: var(--adj-list-hover-background, color-mix(in srgb, currentColor 8%, transparent));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.adj-list-item:is(a, button):focus-visible {
|
|
91
|
+
outline: 2px solid var(--ring, currentColor);
|
|
92
|
+
outline-offset: -2px;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.adj-list-item__leading,
|
|
96
|
+
.adj-list-item__trailing {
|
|
97
|
+
display: grid;
|
|
98
|
+
min-width: 1.5rem;
|
|
99
|
+
min-height: 1.5rem;
|
|
100
|
+
flex: none;
|
|
101
|
+
color: var(--adj-list-icon-color, var(--muted-foreground, currentColor));
|
|
102
|
+
place-items: center;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.adj-list-item__leading > svg,
|
|
106
|
+
.adj-list-item__trailing > svg {
|
|
107
|
+
width: 1.5rem;
|
|
108
|
+
height: 1.5rem;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.adj-list-item__body {
|
|
112
|
+
display: grid;
|
|
113
|
+
min-width: 0;
|
|
114
|
+
flex: 1 1 auto;
|
|
115
|
+
gap: 0.125rem;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.adj-list-item__headline,
|
|
119
|
+
.adj-list-item__supporting,
|
|
120
|
+
.adj-list-item__trailing-supporting {
|
|
121
|
+
overflow: hidden;
|
|
122
|
+
text-overflow: ellipsis;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.adj-list-item__headline {
|
|
126
|
+
font-size: 1rem;
|
|
127
|
+
font-weight: 400;
|
|
128
|
+
line-height: 1.5rem;
|
|
129
|
+
white-space: nowrap;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.adj-list-item__supporting {
|
|
133
|
+
display: -webkit-box;
|
|
134
|
+
color: var(--adj-list-supporting-color, var(--muted-foreground, currentColor));
|
|
135
|
+
font-size: 0.875rem;
|
|
136
|
+
line-height: 1.25rem;
|
|
137
|
+
-webkit-box-orient: vertical;
|
|
138
|
+
-webkit-line-clamp: 1;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.adj-list-item-shell[data-lines="3"] .adj-list-item__supporting {
|
|
142
|
+
-webkit-line-clamp: 2;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.adj-list-item__trailing-supporting {
|
|
146
|
+
flex: none;
|
|
147
|
+
color: var(--adj-list-supporting-color, var(--muted-foreground, currentColor));
|
|
148
|
+
font-size: 0.75rem;
|
|
149
|
+
line-height: 1rem;
|
|
150
|
+
white-space: nowrap;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.adj-list[data-variant="segmented"] .adj-list-item {
|
|
154
|
+
background: var(--adj-list-segmented-background, var(--card, Canvas));
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.adj-list[data-divided="true"] > .adj-list-item-shell::after,
|
|
158
|
+
.adj-list[data-divided="true"] .adj-list-section__items > .adj-list-item-shell::after {
|
|
159
|
+
position: absolute;
|
|
160
|
+
inset-inline: var(--adj-list-divider-inset-start, 0) var(--adj-list-divider-inset-end, 0);
|
|
161
|
+
inset-block-end: 0;
|
|
162
|
+
height: 1px;
|
|
163
|
+
content: "";
|
|
164
|
+
background: var(--adj-divider-color, var(--border, color-mix(in srgb, CanvasText 18%, transparent)));
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
/* Per section, so no divider runs under the last row before the next title. */
|
|
168
|
+
.adj-list[data-divided="true"][data-last-divider="false"] > .adj-list-item-shell:last-child::after,
|
|
169
|
+
.adj-list[data-divided="true"][data-last-divider="false"] .adj-list-section__items > .adj-list-item-shell:last-child::after {
|
|
170
|
+
display: none;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.adj-list[data-divider-inset="start"] {
|
|
174
|
+
--adj-list-divider-inset-start: 1rem;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.adj-list[data-divider-inset="both"] {
|
|
178
|
+
--adj-list-divider-inset-start: 1rem;
|
|
179
|
+
--adj-list-divider-inset-end: 1rem;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactElement, type ReactNode } from "react";
|
|
2
|
+
import "./list.css";
|
|
3
|
+
export type ListDividerInset = "both" | "none" | "start";
|
|
4
|
+
export type ListSectionTitleElement = "div" | "h2" | "h3" | "h4" | "h5";
|
|
5
|
+
export type ListItemLines = 1 | 2 | 3;
|
|
6
|
+
export type ListVariant = "segmented" | "standard";
|
|
7
|
+
export interface ListProps extends HTMLAttributes<HTMLUListElement> {
|
|
8
|
+
readonly divided?: boolean;
|
|
9
|
+
readonly dividerInset?: ListDividerInset;
|
|
10
|
+
readonly lastDivider?: boolean;
|
|
11
|
+
readonly variant?: ListVariant;
|
|
12
|
+
}
|
|
13
|
+
export declare function List({ className, divided, dividerInset, lastDivider, variant, ...props }: ListProps): import("react").JSX.Element;
|
|
14
|
+
export interface ListSectionProps extends Omit<HTMLAttributes<HTMLLIElement>, "title"> {
|
|
15
|
+
readonly children: ReactNode;
|
|
16
|
+
/**
|
|
17
|
+
* Names the group. Plain text also becomes the accessible name of the list
|
|
18
|
+
* inside it, so a screen reader says which section a row belongs to rather
|
|
19
|
+
* than reading every row of every section as one flat list.
|
|
20
|
+
*/
|
|
21
|
+
readonly title: ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* What the title renders as. A heading by default, because that is how
|
|
24
|
+
* someone navigating by heading finds a group; `div` for a title that
|
|
25
|
+
* indexes rather than heads, such as a single letter.
|
|
26
|
+
*/
|
|
27
|
+
readonly titleAs?: ListSectionTitleElement;
|
|
28
|
+
readonly titleClassName?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* One titled group inside a `List`. The rows go in a list of their own, so the
|
|
32
|
+
* grouping is real rather than a row that happens to look like a heading, and
|
|
33
|
+
* they inherit the dividers, inset and variant of the list around them.
|
|
34
|
+
*/
|
|
35
|
+
export declare function ListSection({ children, className, title, titleAs: Title, titleClassName, ...props }: ListSectionProps): import("react").JSX.Element;
|
|
36
|
+
interface ListItemRootProps {
|
|
37
|
+
readonly "aria-disabled"?: boolean;
|
|
38
|
+
readonly children?: ReactNode;
|
|
39
|
+
readonly className?: string;
|
|
40
|
+
readonly "data-selected"?: "false" | "true";
|
|
41
|
+
readonly tabIndex?: number;
|
|
42
|
+
}
|
|
43
|
+
export interface ListItemProps extends Omit<HTMLAttributes<HTMLLIElement>, "children"> {
|
|
44
|
+
readonly disabled?: boolean;
|
|
45
|
+
readonly headline: ReactNode;
|
|
46
|
+
readonly leading?: ReactNode;
|
|
47
|
+
readonly lines?: ListItemLines;
|
|
48
|
+
readonly render?: ReactElement<ListItemRootProps>;
|
|
49
|
+
readonly selected?: boolean;
|
|
50
|
+
readonly supportingText?: ReactNode;
|
|
51
|
+
readonly trailing?: ReactNode;
|
|
52
|
+
readonly trailingSupportingText?: ReactNode;
|
|
53
|
+
}
|
|
54
|
+
export declare function ListItem({ className, disabled, headline, leading, lines, render, selected, supportingText, trailing, trailingSupportingText, ...props }: ListItemProps): import("react").JSX.Element;
|
|
55
|
+
export {};
|
|
56
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/list/list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,YAAY,CAAC;AAEpB,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AACzD,MAAM,MAAM,uBAAuB,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACxE,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACtC,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,UAAU,CAAC;AAEnD,MAAM,WAAW,SAAU,SAAQ,cAAc,CAAC,gBAAgB,CAAC;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;CAChC;AAED,wBAAgB,IAAI,CAAC,EACnB,SAAS,EACT,OAAe,EACf,YAAqB,EACrB,WAAkB,EAClB,OAAoB,EACpB,GAAG,KAAK,EACT,EAAE,SAAS,+BAaX;AAED,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACpD,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,KAAK,EACL,OAAO,EAAE,KAAY,EACrB,cAAc,EACd,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAiBlB;AAED,UAAU,iBAAiB;IACzB,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC;IACpF,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC;IAClD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,CAAC;CAC7C;AAED,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,QAAgB,EAChB,QAAQ,EACR,OAAO,EACP,KAAK,EACL,MAAM,EACN,QAAgB,EAChB,cAAc,EACd,QAAQ,EACR,sBAAsB,EACtB,GAAG,KAAK,EACT,EAAE,aAAa,+BA+Cf"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { cloneElement, } from "react";
|
|
3
|
+
import "./list.css";
|
|
4
|
+
export function List({ className, divided = false, dividerInset = "none", lastDivider = true, variant = "standard", ...props }) {
|
|
5
|
+
const classes = ["adj-list", className].filter(Boolean).join(" ");
|
|
6
|
+
return (_jsx("ul", { className: classes, "data-divided": String(divided), "data-divider-inset": dividerInset, "data-last-divider": String(lastDivider), "data-variant": variant, ...props }));
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* One titled group inside a `List`. The rows go in a list of their own, so the
|
|
10
|
+
* grouping is real rather than a row that happens to look like a heading, and
|
|
11
|
+
* they inherit the dividers, inset and variant of the list around them.
|
|
12
|
+
*/
|
|
13
|
+
export function ListSection({ children, className, title, titleAs: Title = "h3", titleClassName, ...props }) {
|
|
14
|
+
const classes = ["adj-list-section", className].filter(Boolean).join(" ");
|
|
15
|
+
const titleClasses = ["adj-list-section__title", titleClassName]
|
|
16
|
+
.filter(Boolean)
|
|
17
|
+
.join(" ");
|
|
18
|
+
return (_jsxs("li", { className: classes, ...props, children: [_jsx(Title, { className: titleClasses, children: title }), _jsx("ul", { "aria-label": typeof title === "string" ? title : undefined, className: "adj-list adj-list-section__items", children: children })] }));
|
|
19
|
+
}
|
|
20
|
+
export function ListItem({ className, disabled = false, headline, leading, lines, render, selected = false, supportingText, trailing, trailingSupportingText, ...props }) {
|
|
21
|
+
const itemClasses = ["adj-list-item", className].filter(Boolean).join(" ");
|
|
22
|
+
const resolvedLines = lines ?? (supportingText === undefined ? 1 : 2);
|
|
23
|
+
const content = (_jsxs(_Fragment, { children: [leading !== undefined ? (_jsx("span", { "aria-hidden": "true", className: "adj-list-item__leading", children: leading })) : null, _jsxs("span", { className: "adj-list-item__body", children: [_jsx("span", { className: "adj-list-item__headline", children: headline }), supportingText !== undefined ? (_jsx("span", { className: "adj-list-item__supporting", children: supportingText })) : null] }), trailingSupportingText !== undefined ? (_jsx("span", { className: "adj-list-item__trailing-supporting", children: trailingSupportingText })) : null, trailing !== undefined ? _jsx("span", { className: "adj-list-item__trailing", children: trailing }) : null] }));
|
|
24
|
+
const root = render ? (cloneElement(render, {
|
|
25
|
+
"aria-disabled": disabled || undefined,
|
|
26
|
+
children: content,
|
|
27
|
+
className: itemClasses,
|
|
28
|
+
"data-selected": String(selected),
|
|
29
|
+
tabIndex: disabled ? -1 : render.props.tabIndex,
|
|
30
|
+
})) : (_jsx("div", { className: itemClasses, "data-selected": String(selected), children: content }));
|
|
31
|
+
return (_jsx("li", { className: "adj-list-item-shell", "data-disabled": String(disabled), "data-lines": resolvedLines, ...props, children: root }));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/list/list.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
/*
|
|
3
|
+
* Matched on the attribute rather than a class, so it reaches a projected
|
|
4
|
+
* trigger too. Injecting a class would replace the classes of whatever was
|
|
5
|
+
* projected, which is how the two used to disagree at hydration.
|
|
6
|
+
*/
|
|
7
|
+
[aria-haspopup="menu"] {
|
|
8
|
+
font: inherit;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.adj-menu__positioner {
|
|
12
|
+
z-index: 80;
|
|
13
|
+
outline: 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.adj-menu__content {
|
|
17
|
+
box-sizing: border-box;
|
|
18
|
+
min-width: 12rem;
|
|
19
|
+
max-width: min(22rem, calc(100vw - 1rem));
|
|
20
|
+
max-height: min(24rem, var(--available-height));
|
|
21
|
+
padding-block: 0.5rem;
|
|
22
|
+
overflow-y: auto;
|
|
23
|
+
color: var(--adj-menu-color, var(--foreground, CanvasText));
|
|
24
|
+
background: var(--adj-menu-background, var(--popover, Canvas));
|
|
25
|
+
border: 1px solid var(--adj-menu-border, var(--border, color-mix(in srgb, currentColor 18%, transparent)));
|
|
26
|
+
border-radius: var(--radius-md, var(--radius, 0.625rem));
|
|
27
|
+
outline: 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.adj-menu__item {
|
|
31
|
+
display: grid;
|
|
32
|
+
grid-template-columns: auto minmax(0, 1fr) auto auto;
|
|
33
|
+
gap: 0.75rem;
|
|
34
|
+
align-items: center;
|
|
35
|
+
min-height: 3rem;
|
|
36
|
+
padding: 0.5rem 0.75rem;
|
|
37
|
+
color: inherit;
|
|
38
|
+
cursor: default;
|
|
39
|
+
outline: 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.adj-menu__item[data-highlighted] {
|
|
43
|
+
background: var(--adj-menu-item-hover, color-mix(in srgb, currentColor 8%, transparent));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.adj-menu__item[data-disabled] {
|
|
47
|
+
opacity: 0.38;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.adj-menu__label {
|
|
51
|
+
min-width: 0;
|
|
52
|
+
overflow-wrap: anywhere;
|
|
53
|
+
white-space: normal;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.adj-menu__leading,
|
|
57
|
+
.adj-menu__trailing,
|
|
58
|
+
.adj-menu__radio-indicator {
|
|
59
|
+
display: grid;
|
|
60
|
+
width: 1.5rem;
|
|
61
|
+
height: 1.5rem;
|
|
62
|
+
color: var(--adj-menu-icon-color, var(--muted-foreground, currentColor));
|
|
63
|
+
place-items: center;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.adj-menu__leading > svg,
|
|
67
|
+
.adj-menu__trailing > svg,
|
|
68
|
+
.adj-menu__radio-indicator > svg {
|
|
69
|
+
width: 1.25rem;
|
|
70
|
+
height: 1.25rem;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.adj-menu__trailing-text {
|
|
74
|
+
color: var(--adj-menu-supporting-color, var(--muted-foreground, currentColor));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.adj-menu__group-label {
|
|
78
|
+
min-height: 2rem;
|
|
79
|
+
padding: 0.375rem 0.75rem;
|
|
80
|
+
color: var(--adj-menu-supporting-color, var(--muted-foreground, currentColor));
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.adj-menu__separator {
|
|
84
|
+
height: 1px;
|
|
85
|
+
margin-block: 0.5rem;
|
|
86
|
+
background: var(--adj-menu-divider, var(--border, color-mix(in srgb, currentColor 12%, transparent)));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.adj-menu__radio-item {
|
|
90
|
+
grid-template-columns: 1.5rem minmax(0, 1fr);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.adj-menu__radio-item .adj-menu__label {
|
|
94
|
+
grid-column: 2;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.adj-menu__radio-indicator {
|
|
98
|
+
visibility: hidden;
|
|
99
|
+
color: var(--primary, currentColor);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.adj-menu__radio-item[data-checked] .adj-menu__radio-indicator {
|
|
103
|
+
visibility: visible;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.adj-menu__radio-indicator > svg {
|
|
107
|
+
fill: currentColor;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.adj-menu-select {
|
|
111
|
+
display: inline-flex;
|
|
112
|
+
gap: 0.375rem;
|
|
113
|
+
align-items: center;
|
|
114
|
+
justify-content: space-between;
|
|
115
|
+
box-sizing: border-box;
|
|
116
|
+
min-width: 4rem;
|
|
117
|
+
min-height: var(--adj-menu-select-height, var(--adj-control-height, 2.5rem));
|
|
118
|
+
padding-inline: 0.625rem;
|
|
119
|
+
color: inherit;
|
|
120
|
+
cursor: pointer;
|
|
121
|
+
background: transparent;
|
|
122
|
+
border: 1px solid var(--border, currentColor);
|
|
123
|
+
border-radius: var(--radius-sm, var(--radius, 0.625rem));
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.adj-menu-select:hover:not(:disabled) {
|
|
127
|
+
background: color-mix(in srgb, currentColor 6%, transparent);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.adj-menu-select:focus-visible {
|
|
131
|
+
outline: 2px solid var(--ring, currentColor);
|
|
132
|
+
outline-offset: -2px;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.adj-menu-select:disabled {
|
|
136
|
+
cursor: default;
|
|
137
|
+
opacity: 0.38;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.adj-menu-select > svg {
|
|
141
|
+
width: 1.25rem;
|
|
142
|
+
height: 1.25rem;
|
|
143
|
+
flex: none;
|
|
144
|
+
fill: currentColor;
|
|
145
|
+
transition: transform 150ms ease;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
.adj-menu-select > .adj-text {
|
|
149
|
+
min-width: 0;
|
|
150
|
+
overflow: hidden;
|
|
151
|
+
text-overflow: ellipsis;
|
|
152
|
+
white-space: nowrap;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.adj-menu-select[data-popup-open] > svg {
|
|
156
|
+
transform: rotate(180deg);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.adj-menu-select__content {
|
|
160
|
+
width: min(var(--anchor-width), calc(100vw - 1rem));
|
|
161
|
+
min-width: 0;
|
|
162
|
+
max-width: calc(100vw - 1rem);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
@media (prefers-reduced-motion: reduce) {
|
|
166
|
+
.adj-menu-select > svg {
|
|
167
|
+
transition: none;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Menu as BaseMenu } from "@base-ui/react/menu";
|
|
2
|
+
import { type ReactNode } from "react";
|
|
3
|
+
import "./menu.css";
|
|
4
|
+
export type MenuProps = BaseMenu.Root.Props;
|
|
5
|
+
export declare function Menu(props: MenuProps): import("react").JSX.Element;
|
|
6
|
+
export interface MenuTriggerProps extends Omit<BaseMenu.Trigger.Props, "className"> {
|
|
7
|
+
readonly className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function MenuTrigger(props: MenuTriggerProps): import("react").JSX.Element;
|
|
10
|
+
export interface MenuContentProps extends Omit<BaseMenu.Popup.Props, "className"> {
|
|
11
|
+
readonly align?: BaseMenu.Positioner.Props["align"];
|
|
12
|
+
readonly className?: string;
|
|
13
|
+
readonly positionerClassName?: string;
|
|
14
|
+
readonly portalContainer?: BaseMenu.Portal.Props["container"];
|
|
15
|
+
readonly side?: BaseMenu.Positioner.Props["side"];
|
|
16
|
+
readonly sideOffset?: BaseMenu.Positioner.Props["sideOffset"];
|
|
17
|
+
}
|
|
18
|
+
export declare function MenuContent({ align, className, positionerClassName, portalContainer, side, sideOffset, ...props }: MenuContentProps): import("react").JSX.Element;
|
|
19
|
+
export interface MenuItemProps extends Omit<BaseMenu.Item.Props, "children" | "className"> {
|
|
20
|
+
readonly children: ReactNode;
|
|
21
|
+
readonly className?: string;
|
|
22
|
+
readonly leading?: ReactNode;
|
|
23
|
+
readonly trailing?: ReactNode;
|
|
24
|
+
readonly trailingText?: ReactNode;
|
|
25
|
+
}
|
|
26
|
+
export declare function MenuItem({ children, className, leading, trailing, trailingText, ...props }: MenuItemProps): import("react").JSX.Element;
|
|
27
|
+
export interface MenuGroupProps extends Omit<BaseMenu.Group.Props, "className"> {
|
|
28
|
+
readonly className?: string;
|
|
29
|
+
}
|
|
30
|
+
export declare function MenuGroup({ className, ...props }: MenuGroupProps): import("react").JSX.Element;
|
|
31
|
+
export interface MenuLabelProps extends Omit<BaseMenu.GroupLabel.Props, "children" | "className"> {
|
|
32
|
+
readonly children: ReactNode;
|
|
33
|
+
readonly className?: string;
|
|
34
|
+
}
|
|
35
|
+
export declare function MenuLabel({ children, className, ...props }: MenuLabelProps): import("react").JSX.Element;
|
|
36
|
+
export interface MenuSeparatorProps extends Omit<BaseMenu.Separator.Props, "className"> {
|
|
37
|
+
readonly className?: string;
|
|
38
|
+
}
|
|
39
|
+
export declare function MenuSeparator({ className, ...props }: MenuSeparatorProps): import("react").JSX.Element;
|
|
40
|
+
export interface MenuRadioGroupProps extends Omit<BaseMenu.RadioGroup.Props, "onValueChange" | "value"> {
|
|
41
|
+
readonly onValueChange?: (value: string) => void;
|
|
42
|
+
readonly value?: string;
|
|
43
|
+
}
|
|
44
|
+
export declare function MenuRadioGroup({ onValueChange, ...props }: MenuRadioGroupProps): import("react").JSX.Element;
|
|
45
|
+
export interface MenuRadioItemProps extends Omit<BaseMenu.RadioItem.Props, "children" | "className" | "value"> {
|
|
46
|
+
readonly children: ReactNode;
|
|
47
|
+
readonly className?: string;
|
|
48
|
+
readonly value: string;
|
|
49
|
+
}
|
|
50
|
+
export declare function MenuRadioItem({ children, className, ...props }: MenuRadioItemProps): import("react").JSX.Element;
|
|
51
|
+
export interface MenuSelectOption {
|
|
52
|
+
readonly disabled?: boolean;
|
|
53
|
+
readonly label: ReactNode;
|
|
54
|
+
/**
|
|
55
|
+
* Shown on the closed trigger instead of `label`. Use it when the row carries
|
|
56
|
+
* detail that would be noise once a choice has been made.
|
|
57
|
+
*/
|
|
58
|
+
readonly triggerLabel?: ReactNode;
|
|
59
|
+
readonly value: string;
|
|
60
|
+
}
|
|
61
|
+
export interface MenuSelectProps {
|
|
62
|
+
readonly "aria-label": string;
|
|
63
|
+
readonly className?: string;
|
|
64
|
+
readonly disabled?: boolean;
|
|
65
|
+
readonly onValueChange: (value: string) => void;
|
|
66
|
+
readonly options: readonly MenuSelectOption[];
|
|
67
|
+
readonly value: string;
|
|
68
|
+
}
|
|
69
|
+
export declare function MenuSelect({ "aria-label": ariaLabel, className, disabled, onValueChange, options, value, }: MenuSelectProps): import("react").JSX.Element;
|
|
70
|
+
//# sourceMappingURL=menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../src/menu/menu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Menu as BaseMenu } from "@base-ui/react/menu";
|
|
4
|
+
import { useRef } from "react";
|
|
5
|
+
import { Text } from "../text/text.js";
|
|
6
|
+
import "./menu.css";
|
|
7
|
+
export function Menu(props) {
|
|
8
|
+
return _jsx(BaseMenu.Root, { ...props });
|
|
9
|
+
}
|
|
10
|
+
/*
|
|
11
|
+
* No className of its own, and no branching on what `render` is.
|
|
12
|
+
*
|
|
13
|
+
* Base UI applies a className through `cloneElement`, which replaces a class
|
|
14
|
+
* rather than adding to it, so injecting one here fought with the classes of a
|
|
15
|
+
* projected element. Deciding per element shape was worse: `isValidElement`
|
|
16
|
+
* answered differently on the server and in the browser, so the two rendered
|
|
17
|
+
* different classes and hydration failed on the difference.
|
|
18
|
+
*
|
|
19
|
+
* The one rule this needed is `font: inherit`, which a button does not get for
|
|
20
|
+
* free. It is applied in CSS through the ARIA attribute Base UI always sets,
|
|
21
|
+
* so it reaches a bare trigger and a projected one without either of them
|
|
22
|
+
* being handed a class.
|
|
23
|
+
*/
|
|
24
|
+
export function MenuTrigger(props) {
|
|
25
|
+
return _jsx(BaseMenu.Trigger, { ...props });
|
|
26
|
+
}
|
|
27
|
+
export function MenuContent({ align = "start", className, positionerClassName, portalContainer, side = "bottom", sideOffset = 4, ...props }) {
|
|
28
|
+
const positionerClasses = ["adj-menu__positioner", positionerClassName]
|
|
29
|
+
.filter(Boolean)
|
|
30
|
+
.join(" ");
|
|
31
|
+
const classes = ["adj-menu__content", className].filter(Boolean).join(" ");
|
|
32
|
+
return (_jsx(BaseMenu.Portal, { container: portalContainer, children: _jsx(BaseMenu.Positioner, { align: align, className: positionerClasses, side: side, sideOffset: sideOffset, children: _jsx(BaseMenu.Popup, { className: classes, ...props }) }) }));
|
|
33
|
+
}
|
|
34
|
+
export function MenuItem({ children, className, leading, trailing, trailingText, ...props }) {
|
|
35
|
+
const classes = ["adj-menu__item", className].filter(Boolean).join(" ");
|
|
36
|
+
return (_jsxs(BaseMenu.Item, { className: classes, ...props, children: [leading === undefined ? null : (_jsx("span", { "aria-hidden": "true", className: "adj-menu__leading", children: leading })), _jsx(Text, { className: "adj-menu__label", variant: "body-large", children: children }), trailingText === undefined ? null : (_jsx(Text, { className: "adj-menu__trailing-text", variant: "label-small", children: trailingText })), trailing === undefined ? null : (_jsx("span", { "aria-hidden": "true", className: "adj-menu__trailing", children: trailing }))] }));
|
|
37
|
+
}
|
|
38
|
+
export function MenuGroup({ className, ...props }) {
|
|
39
|
+
const classes = ["adj-menu__group", className].filter(Boolean).join(" ");
|
|
40
|
+
return _jsx(BaseMenu.Group, { className: classes, ...props });
|
|
41
|
+
}
|
|
42
|
+
export function MenuLabel({ children, className, ...props }) {
|
|
43
|
+
const classes = ["adj-menu__group-label", className]
|
|
44
|
+
.filter(Boolean)
|
|
45
|
+
.join(" ");
|
|
46
|
+
return (_jsx(BaseMenu.GroupLabel, { className: classes, ...props, children: _jsx(Text, { variant: "label-large", children: children }) }));
|
|
47
|
+
}
|
|
48
|
+
export function MenuSeparator({ className, ...props }) {
|
|
49
|
+
const classes = ["adj-menu__separator", className].filter(Boolean).join(" ");
|
|
50
|
+
return _jsx(BaseMenu.Separator, { className: classes, ...props });
|
|
51
|
+
}
|
|
52
|
+
export function MenuRadioGroup({ onValueChange, ...props }) {
|
|
53
|
+
return (_jsx(BaseMenu.RadioGroup, { onValueChange: (value) => onValueChange?.(String(value)), ...props }));
|
|
54
|
+
}
|
|
55
|
+
export function MenuRadioItem({ children, className, ...props }) {
|
|
56
|
+
const classes = ["adj-menu__item", "adj-menu__radio-item", className]
|
|
57
|
+
.filter(Boolean)
|
|
58
|
+
.join(" ");
|
|
59
|
+
return (_jsxs(BaseMenu.RadioItem, { className: classes, closeOnClick: true, ...props, children: [_jsx(BaseMenu.RadioItemIndicator, { className: "adj-menu__radio-indicator", children: _jsx("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: _jsx("path", { d: "m9.2 16.2-3.5-3.5L4.3 14l4.9 4.9L19.8 8.3l-1.4-1.4-9.2 9.3z" }) }) }), _jsx(Text, { className: "adj-menu__label", variant: "body-large", children: children })] }));
|
|
60
|
+
}
|
|
61
|
+
export function MenuSelect({ "aria-label": ariaLabel, className, disabled, onValueChange, options, value, }) {
|
|
62
|
+
const dialogRef = useRef(null);
|
|
63
|
+
const selectedOption = options.find((option) => option.value === value);
|
|
64
|
+
const classes = ["adj-menu-select", className].filter(Boolean).join(" ");
|
|
65
|
+
return (_jsxs(Menu, { children: [_jsxs(MenuTrigger, { "aria-label": ariaLabel, className: classes, disabled: disabled, ref: (trigger) => {
|
|
66
|
+
dialogRef.current = trigger?.closest("dialog") ?? null;
|
|
67
|
+
}, children: [_jsx(Text, { variant: "body-medium", children: selectedOption?.triggerLabel ?? selectedOption?.label ?? value }), _jsx("svg", { "aria-hidden": "true", viewBox: "0 0 24 24", children: _jsx("path", { d: "m7 10 5 5 5-5H7z" }) })] }), _jsx(MenuContent, { className: "adj-menu-select__content", portalContainer: dialogRef, children: _jsx(MenuRadioGroup, { onValueChange: onValueChange, value: value, children: options.map((option) => (_jsx(MenuRadioItem, { disabled: option.disabled, value: option.value, children: option.label }, option.value))) }) })] }));
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/menu/menu.tsx"],"names":[],"mappings":"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"}
|