@cloudgrid-io/ui 0.42.0 → 0.43.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/dist/blocks/search-field.d.ts +24 -0
- package/dist/blocks/search-field.d.ts.map +1 -0
- package/dist/blocks/search-field.js +28 -0
- package/dist/blocks/search-field.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/ui/drawer.d.ts +83 -11
- package/dist/ui/drawer.d.ts.map +1 -1
- package/dist/ui/drawer.js +137 -17
- package/dist/ui/drawer.js.map +1 -1
- package/dist/ui/input-group.d.ts.map +1 -1
- package/dist/ui/input-group.js +7 -2
- package/dist/ui/input-group.js.map +1 -1
- package/dist/ui/input.d.ts +6 -1
- package/dist/ui/input.d.ts.map +1 -1
- package/dist/ui/input.js +61 -3
- package/dist/ui/input.js.map +1 -1
- package/dist/ui/radio-group.d.ts.map +1 -1
- package/dist/ui/radio-group.js +24 -6
- package/dist/ui/radio-group.js.map +1 -1
- package/dist/ui/select.d.ts +10 -0
- package/dist/ui/select.d.ts.map +1 -1
- package/dist/ui/select.js +11 -1
- package/dist/ui/select.js.map +1 -1
- package/dist/ui/textarea.d.ts +7 -0
- package/dist/ui/textarea.d.ts.map +1 -1
- package/dist/ui/textarea.js +8 -1
- package/dist/ui/textarea.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* The search field above every Admin list, as the CloudGrid 2026 Figma draws it
|
|
4
|
+
* (#384; 7404:5007, 7414:5979): the 2026 text field with a 20px MagnifyingGlass
|
|
5
|
+
* 19px in from the left and the text starting at 56px, 200 wide by default.
|
|
6
|
+
*
|
|
7
|
+
* ## The name is not the placeholder
|
|
8
|
+
*
|
|
9
|
+
* A placeholder disappears the moment someone types, and is not a reliable
|
|
10
|
+
* accessible name. So the field always carries one: `label` (default "Search")
|
|
11
|
+
* becomes its `aria-label`, and also its placeholder unless the caller passes a
|
|
12
|
+
* different one. A caller with a visible heading that names the list passes
|
|
13
|
+
* `aria-labelledby` instead, and the `aria-label` is dropped so the two cannot
|
|
14
|
+
* disagree.
|
|
15
|
+
*
|
|
16
|
+
* `className` sizes the field (it lands on the wrapper, so `w-full` or `w-72`
|
|
17
|
+
* works); every other prop goes to the `<input>`.
|
|
18
|
+
*/
|
|
19
|
+
declare function SearchField({ label, className, placeholder, ...props }: Omit<React.ComponentProps<"input">, "type"> & {
|
|
20
|
+
/** The field's accessible name, and its placeholder unless one is given. */
|
|
21
|
+
label?: string;
|
|
22
|
+
}): React.JSX.Element;
|
|
23
|
+
export { SearchField };
|
|
24
|
+
//# sourceMappingURL=search-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-field.d.ts","sourceRoot":"","sources":["../../src/blocks/search-field.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B;;;;;;;;;;;;;;;;GAgBG;AACH,iBAAS,WAAW,CAAC,EACnB,KAAgB,EAChB,SAAS,EACT,WAAW,EACX,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,GAAG;IAC/C,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,qBAaA;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../lib/cloudgrid-cn.js";
|
|
4
|
+
import { SearchIcon } from "./icons.js";
|
|
5
|
+
import { Input } from "../ui/input.js";
|
|
6
|
+
/**
|
|
7
|
+
* The search field above every Admin list, as the CloudGrid 2026 Figma draws it
|
|
8
|
+
* (#384; 7404:5007, 7414:5979): the 2026 text field with a 20px MagnifyingGlass
|
|
9
|
+
* 19px in from the left and the text starting at 56px, 200 wide by default.
|
|
10
|
+
*
|
|
11
|
+
* ## The name is not the placeholder
|
|
12
|
+
*
|
|
13
|
+
* A placeholder disappears the moment someone types, and is not a reliable
|
|
14
|
+
* accessible name. So the field always carries one: `label` (default "Search")
|
|
15
|
+
* becomes its `aria-label`, and also its placeholder unless the caller passes a
|
|
16
|
+
* different one. A caller with a visible heading that names the list passes
|
|
17
|
+
* `aria-labelledby` instead, and the `aria-label` is dropped so the two cannot
|
|
18
|
+
* disagree.
|
|
19
|
+
*
|
|
20
|
+
* `className` sizes the field (it lands on the wrapper, so `w-full` or `w-72`
|
|
21
|
+
* works); every other prop goes to the `<input>`.
|
|
22
|
+
*/
|
|
23
|
+
function SearchField({ label = "Search", className, placeholder, ...props }) {
|
|
24
|
+
const labelledBy = props["aria-labelledby"];
|
|
25
|
+
return (_jsx("div", { "data-slot": "search-field", className: cn("w-50 shrink-0", className), children: _jsx(Input, { type: "search", "aria-label": labelledBy ? undefined : label, placeholder: placeholder ?? label, leading: _jsx(SearchIcon, {}), ...props }) }));
|
|
26
|
+
}
|
|
27
|
+
export { SearchField };
|
|
28
|
+
//# sourceMappingURL=search-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-field.js","sourceRoot":"","sources":["../../src/blocks/search-field.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAE3C;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,WAAW,CAAC,EACnB,KAAK,GAAG,QAAQ,EAChB,SAAS,EACT,WAAW,EACX,GAAG,KAAK,EAIT;IACC,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAC3C,OAAO,CACL,2BAAe,cAAc,EAAC,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,YACrE,KAAC,KAAK,IACJ,IAAI,EAAC,QAAQ,gBACD,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,EAC1C,WAAW,EAAE,WAAW,IAAI,KAAK,EACjC,OAAO,EAAE,KAAC,UAAU,KAAG,KACnB,KAAK,GACT,GACE,CACP,CAAA;AACH,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -84,6 +84,7 @@ export * from "./blocks/quote.js";
|
|
|
84
84
|
export * from "./blocks/ranked-list.js";
|
|
85
85
|
export * from "./blocks/rich-text.js";
|
|
86
86
|
export * from "./blocks/scroll-rail.js";
|
|
87
|
+
export * from "./blocks/search-field.js";
|
|
87
88
|
export * from "./blocks/section-heading.js";
|
|
88
89
|
export * from "./blocks/shelf.js";
|
|
89
90
|
export * from "./blocks/showcase-scroll.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -101,6 +101,7 @@ export * from "./blocks/quote.js";
|
|
|
101
101
|
export * from "./blocks/ranked-list.js";
|
|
102
102
|
export * from "./blocks/rich-text.js";
|
|
103
103
|
export * from "./blocks/scroll-rail.js";
|
|
104
|
+
export * from "./blocks/search-field.js";
|
|
104
105
|
export * from "./blocks/section-heading.js";
|
|
105
106
|
export * from "./blocks/shelf.js";
|
|
106
107
|
export * from "./blocks/showcase-scroll.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/drawer.d.ts
CHANGED
|
@@ -71,7 +71,55 @@ import { type VariantProps } from "class-variance-authority";
|
|
|
71
71
|
*
|
|
72
72
|
* The popup is `w-full` under a `max-w-*` rung, so below 448px it simply fills
|
|
73
73
|
* the screen. No breakpoint prop, no phone variant, nothing for a caller to
|
|
74
|
-
* remember. #214 asks for exactly this.
|
|
74
|
+
* remember. #214 asks for exactly this. Since #399 "the screen" is the inset
|
|
75
|
+
* box: a card at 375 is 351 wide, 12 in from both sides, never wider than the
|
|
76
|
+
* window. The same 12 as the desktop inset, not a smaller phone one, so there is
|
|
77
|
+
* one number to remember and the card still reads as a card.
|
|
78
|
+
*
|
|
79
|
+
* ## The card (#399)
|
|
80
|
+
*
|
|
81
|
+
* The CloudGrid 2026 Figma draws every side panel as a floating card, not an
|
|
82
|
+
* edge sheet: "App final / Side panel", 01 Overview 11092:22206, 04 Preview
|
|
83
|
+
* 11092:23488 (the card 11092:23650) and the flow thumbnail 11092:24222. Measured
|
|
84
|
+
* off 11092:23650 in its 1600 x 1100 frame:
|
|
85
|
+
*
|
|
86
|
+
* inset 12 from the top, the bottom and the outer edge viewport p-3
|
|
87
|
+
* corner 12 rounded-md
|
|
88
|
+
* border 1px all round border border-line
|
|
89
|
+
* shadow 0 4px 14px #222222 at 6% shadow-raised
|
|
90
|
+
* (that is --cg-shadow-raised exactly; no new token)
|
|
91
|
+
* padding 24 top, 32 right, bottom and left the parts, below
|
|
92
|
+
* title 22/1.2 medium, 24 over the body the 2026 DialogTitle's
|
|
93
|
+
* close X a 20px glyph ending on the 32px content edge ghost `icon`, -mx-1.5
|
|
94
|
+
* actions 16 apart and 16 before the X gap-4
|
|
95
|
+
*
|
|
96
|
+
* So `form="card"` is the default on `right` and `left`. `form="sheet"` keeps
|
|
97
|
+
* the edge sheet this file drew before, class for class, for anything that wants
|
|
98
|
+
* it. `bottom` is always a sheet: a phone sheet is anchored to the edge it slides
|
|
99
|
+
* from, and nothing in the frames floats it.
|
|
100
|
+
*
|
|
101
|
+
* The inset is the viewport's padding, not the popup's margin, so `h-full` and
|
|
102
|
+
* `w-full` keep meaning "the box the card may use" at every rung. A press on that
|
|
103
|
+
* 12px gutter is a press on Base UI's `Dialog.Viewport`, which is an outside
|
|
104
|
+
* press, exactly as the scrim was.
|
|
105
|
+
*
|
|
106
|
+
* The parts read the form from context rather than from CSS ancestry, so a
|
|
107
|
+
* sheet opened inside a card (or a card inside a sheet) gets its own padding.
|
|
108
|
+
* Outside a `DrawerContent` the context is the sheet's, which is what the parts
|
|
109
|
+
* rendered before #399.
|
|
110
|
+
*
|
|
111
|
+
* The overlay follows the resolved form (#402). A card draws no overlay by
|
|
112
|
+
* default, as the Figma frames draw it and as Michal decided on #402: no backdrop
|
|
113
|
+
* is rendered at all, so the page is neither dimmed nor blurred. The edge sheet
|
|
114
|
+
* and every `bottom` drawer keep the Style Guide scrim (#368), and so do popups
|
|
115
|
+
* (`Dialog`). An explicit `overlay` wins either way: `overlay="scrim"` dims behind
|
|
116
|
+
* a card, `overlay="none"` drops it behind a sheet.
|
|
117
|
+
*
|
|
118
|
+
* Nothing else about the modal changes without the backdrop. An outside press
|
|
119
|
+
* still closes, because the press lands on the viewport; focus is still trapped;
|
|
120
|
+
* `aria-modal` is still set; the page still does not scroll behind it; and a
|
|
121
|
+
* `Dialog` opened over the card still brings its own scrim (see Stacking, below).
|
|
122
|
+
* Each is asserted on the default card in the e2e specs.
|
|
75
123
|
*
|
|
76
124
|
* ## Ground: opaque on every surface
|
|
77
125
|
*
|
|
@@ -142,6 +190,7 @@ import { type VariantProps } from "class-variance-authority";
|
|
|
142
190
|
*/
|
|
143
191
|
declare const drawerViewportVariants: (props?: ({
|
|
144
192
|
side?: "bottom" | "left" | "right" | null | undefined;
|
|
193
|
+
form?: "card" | "sheet" | null | undefined;
|
|
145
194
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
146
195
|
/**
|
|
147
196
|
* The sheet itself.
|
|
@@ -153,7 +202,12 @@ declare const drawerViewportVariants: (props?: ({
|
|
|
153
202
|
declare const drawerPopupVariants: (props?: ({
|
|
154
203
|
side?: "bottom" | "left" | "right" | null | undefined;
|
|
155
204
|
size?: "lg" | "xl" | "md" | null | undefined;
|
|
205
|
+
form?: "card" | "sheet" | null | undefined;
|
|
156
206
|
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
207
|
+
/** The side drawer's two forms (#399). `bottom` is always a sheet. */
|
|
208
|
+
export type DrawerForm = "card" | "sheet";
|
|
209
|
+
/** Whether the drawer dims the page behind it (#399). */
|
|
210
|
+
export type DrawerOverlayMode = "scrim" | "none";
|
|
157
211
|
declare function Drawer({ modal, ...props }: DialogPrimitive.Root.Props): React.JSX.Element;
|
|
158
212
|
declare function DrawerTrigger({ ...props }: DialogPrimitive.Trigger.Props): React.JSX.Element;
|
|
159
213
|
declare function DrawerPortal({ ...props }: DialogPrimitive.Portal.Props): React.JSX.Element;
|
|
@@ -168,11 +222,22 @@ declare function DrawerClose({ ...props }: DialogPrimitive.Close.Props): React.J
|
|
|
168
222
|
* tokens are declared at `:root` only and do not flip: a scrim composites over
|
|
169
223
|
* whatever is behind it, so it has no surface of its own.
|
|
170
224
|
*
|
|
225
|
+
* `DrawerContent` renders it behind a sheet and a `bottom` drawer by default, and
|
|
226
|
+
* behind a card only on `overlay="scrim"` (#402).
|
|
227
|
+
*
|
|
171
228
|
* `forceRender` because Base UI does not render a nested dialog's backdrop by
|
|
172
229
|
* default. See the stacking note in the component docblock.
|
|
173
230
|
*/
|
|
174
231
|
declare function DrawerOverlay({ className, forceRender, ...props }: DialogPrimitive.Backdrop.Props): React.JSX.Element;
|
|
175
|
-
declare function DrawerContent({ side, size, container, className, children, ...props }: DialogPrimitive.Popup.Props & VariantProps<typeof drawerPopupVariants> & Pick<DialogPrimitive.Portal.Props, "container">
|
|
232
|
+
declare function DrawerContent({ side, size, form, overlay: overlayProp, container, className, children, ...props }: DialogPrimitive.Popup.Props & Omit<VariantProps<typeof drawerPopupVariants>, "form"> & Pick<DialogPrimitive.Portal.Props, "container"> & {
|
|
233
|
+
/** `card` floats inset 12 (#399, the default); `sheet` is the edge sheet. Ignored on `bottom`. */
|
|
234
|
+
form?: DrawerForm;
|
|
235
|
+
/**
|
|
236
|
+
* `scrim` dims and blurs the page (#368); `none` leaves it as it is. Left out,
|
|
237
|
+
* it follows the form (#402): `none` on a card, `scrim` on a sheet and on `bottom`.
|
|
238
|
+
*/
|
|
239
|
+
overlay?: DrawerOverlayMode;
|
|
240
|
+
}): React.JSX.Element;
|
|
176
241
|
/**
|
|
177
242
|
* The title row, with the close affordance built in.
|
|
178
243
|
*
|
|
@@ -201,7 +266,11 @@ declare function DrawerHeader({ title, description, closeLabel, showCloseButton,
|
|
|
201
266
|
showCloseButton?: boolean;
|
|
202
267
|
/** Controls in the title row, before the close button. */
|
|
203
268
|
actions?: React.ReactNode;
|
|
204
|
-
/**
|
|
269
|
+
/**
|
|
270
|
+
* The title's face; see `DrawerTitle`. Left out, it follows the form: the UI
|
|
271
|
+
* face on a card, the display face on a sheet. "body" for the App page's
|
|
272
|
+
* sentence-case title.
|
|
273
|
+
*/
|
|
205
274
|
titleFace?: DrawerTitleFace;
|
|
206
275
|
}): React.JSX.Element;
|
|
207
276
|
/**
|
|
@@ -225,15 +294,18 @@ declare function DrawerBody({ className, ...props }: React.ComponentProps<"div">
|
|
|
225
294
|
*/
|
|
226
295
|
declare function DrawerFooter({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
|
|
227
296
|
/**
|
|
228
|
-
* The title's face. `heading`
|
|
229
|
-
*
|
|
230
|
-
*
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
* changes; size, leading and weight are the
|
|
297
|
+
* The title's face. `heading` is `font-heading`, the display face, Tanker, which
|
|
298
|
+
* is capitals by design. `body` is the brand's running-text face (`font-body`,
|
|
299
|
+
* Space Grotesk) in whatever case the words are written, which is what the App
|
|
300
|
+
* page v2 frames draw ("Creation Details", "Most used by", "Views over time";
|
|
301
|
+
* founder ruling 2026-10-19). `ui` is Manrope, the 2026 `DialogTitle`'s face
|
|
302
|
+
* (#372). Only the face changes; size, leading and weight are the form's.
|
|
303
|
+
*
|
|
304
|
+
* Left out, it follows the form: `ui` on a card, so a side card's title is the
|
|
305
|
+
* popup's H4 (Manrope Medium 22/1.2, ink); `heading` on a sheet, unchanged.
|
|
234
306
|
*/
|
|
235
|
-
export type DrawerTitleFace = "heading" | "body";
|
|
236
|
-
declare function DrawerTitle({ face, className, ...props }: DialogPrimitive.Title.Props & {
|
|
307
|
+
export type DrawerTitleFace = "heading" | "body" | "ui";
|
|
308
|
+
declare function DrawerTitle({ face: faceProp, className, ...props }: DialogPrimitive.Title.Props & {
|
|
237
309
|
face?: DrawerTitleFace;
|
|
238
310
|
}): React.JSX.Element;
|
|
239
311
|
declare function DrawerDescription({ className, ...props }: DialogPrimitive.Description.Props): React.JSX.Element;
|
package/dist/ui/drawer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../src/ui/drawer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAMjE
|
|
1
|
+
{"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../src/ui/drawer.tsx"],"names":[],"mappings":"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"}
|
package/dist/ui/drawer.js
CHANGED
|
@@ -76,7 +76,55 @@ import { CloseIcon } from "../blocks/icons.js";
|
|
|
76
76
|
*
|
|
77
77
|
* The popup is `w-full` under a `max-w-*` rung, so below 448px it simply fills
|
|
78
78
|
* the screen. No breakpoint prop, no phone variant, nothing for a caller to
|
|
79
|
-
* remember. #214 asks for exactly this.
|
|
79
|
+
* remember. #214 asks for exactly this. Since #399 "the screen" is the inset
|
|
80
|
+
* box: a card at 375 is 351 wide, 12 in from both sides, never wider than the
|
|
81
|
+
* window. The same 12 as the desktop inset, not a smaller phone one, so there is
|
|
82
|
+
* one number to remember and the card still reads as a card.
|
|
83
|
+
*
|
|
84
|
+
* ## The card (#399)
|
|
85
|
+
*
|
|
86
|
+
* The CloudGrid 2026 Figma draws every side panel as a floating card, not an
|
|
87
|
+
* edge sheet: "App final / Side panel", 01 Overview 11092:22206, 04 Preview
|
|
88
|
+
* 11092:23488 (the card 11092:23650) and the flow thumbnail 11092:24222. Measured
|
|
89
|
+
* off 11092:23650 in its 1600 x 1100 frame:
|
|
90
|
+
*
|
|
91
|
+
* inset 12 from the top, the bottom and the outer edge viewport p-3
|
|
92
|
+
* corner 12 rounded-md
|
|
93
|
+
* border 1px all round border border-line
|
|
94
|
+
* shadow 0 4px 14px #222222 at 6% shadow-raised
|
|
95
|
+
* (that is --cg-shadow-raised exactly; no new token)
|
|
96
|
+
* padding 24 top, 32 right, bottom and left the parts, below
|
|
97
|
+
* title 22/1.2 medium, 24 over the body the 2026 DialogTitle's
|
|
98
|
+
* close X a 20px glyph ending on the 32px content edge ghost `icon`, -mx-1.5
|
|
99
|
+
* actions 16 apart and 16 before the X gap-4
|
|
100
|
+
*
|
|
101
|
+
* So `form="card"` is the default on `right` and `left`. `form="sheet"` keeps
|
|
102
|
+
* the edge sheet this file drew before, class for class, for anything that wants
|
|
103
|
+
* it. `bottom` is always a sheet: a phone sheet is anchored to the edge it slides
|
|
104
|
+
* from, and nothing in the frames floats it.
|
|
105
|
+
*
|
|
106
|
+
* The inset is the viewport's padding, not the popup's margin, so `h-full` and
|
|
107
|
+
* `w-full` keep meaning "the box the card may use" at every rung. A press on that
|
|
108
|
+
* 12px gutter is a press on Base UI's `Dialog.Viewport`, which is an outside
|
|
109
|
+
* press, exactly as the scrim was.
|
|
110
|
+
*
|
|
111
|
+
* The parts read the form from context rather than from CSS ancestry, so a
|
|
112
|
+
* sheet opened inside a card (or a card inside a sheet) gets its own padding.
|
|
113
|
+
* Outside a `DrawerContent` the context is the sheet's, which is what the parts
|
|
114
|
+
* rendered before #399.
|
|
115
|
+
*
|
|
116
|
+
* The overlay follows the resolved form (#402). A card draws no overlay by
|
|
117
|
+
* default, as the Figma frames draw it and as Michal decided on #402: no backdrop
|
|
118
|
+
* is rendered at all, so the page is neither dimmed nor blurred. The edge sheet
|
|
119
|
+
* and every `bottom` drawer keep the Style Guide scrim (#368), and so do popups
|
|
120
|
+
* (`Dialog`). An explicit `overlay` wins either way: `overlay="scrim"` dims behind
|
|
121
|
+
* a card, `overlay="none"` drops it behind a sheet.
|
|
122
|
+
*
|
|
123
|
+
* Nothing else about the modal changes without the backdrop. An outside press
|
|
124
|
+
* still closes, because the press lands on the viewport; focus is still trapped;
|
|
125
|
+
* `aria-modal` is still set; the page still does not scroll behind it; and a
|
|
126
|
+
* `Dialog` opened over the card still brings its own scrim (see Stacking, below).
|
|
127
|
+
* Each is asserted on the default card in the e2e specs.
|
|
80
128
|
*
|
|
81
129
|
* ## Ground: opaque on every surface
|
|
82
130
|
*
|
|
@@ -152,9 +200,19 @@ const drawerViewportVariants = cva("fixed inset-0 z-50 flex", {
|
|
|
152
200
|
left: "justify-start",
|
|
153
201
|
bottom: "flex-col justify-end",
|
|
154
202
|
},
|
|
203
|
+
form: {
|
|
204
|
+
card: "",
|
|
205
|
+
sheet: "",
|
|
206
|
+
},
|
|
155
207
|
},
|
|
208
|
+
compoundVariants: [
|
|
209
|
+
// The card's 12px inset (#399): the box the card may fill, on the two
|
|
210
|
+
// sides that float. A bottom sheet stays on its edge.
|
|
211
|
+
{ side: ["right", "left"], form: "card", class: "p-3" },
|
|
212
|
+
],
|
|
156
213
|
defaultVariants: {
|
|
157
214
|
side: "right",
|
|
215
|
+
form: "card",
|
|
158
216
|
},
|
|
159
217
|
});
|
|
160
218
|
/**
|
|
@@ -172,8 +230,8 @@ const drawerPopupVariants = cva([
|
|
|
172
230
|
], {
|
|
173
231
|
variants: {
|
|
174
232
|
side: {
|
|
175
|
-
right: "h-full
|
|
176
|
-
left: "h-full
|
|
233
|
+
right: "h-full data-open:slide-in-from-right data-closed:slide-out-to-right",
|
|
234
|
+
left: "h-full data-open:slide-in-from-left data-closed:slide-out-to-left",
|
|
177
235
|
// 85svh, not 85vh: on a phone `vh` is measured against the largest
|
|
178
236
|
// viewport, so the sheet sits partly under the browser chrome while the
|
|
179
237
|
// URL bar is showing. `PlugSheet` has the same 85% and the older unit.
|
|
@@ -184,8 +242,18 @@ const drawerPopupVariants = cva([
|
|
|
184
242
|
lg: "max-w-lg",
|
|
185
243
|
xl: "max-w-6xl",
|
|
186
244
|
},
|
|
245
|
+
form: {
|
|
246
|
+
card: "",
|
|
247
|
+
sheet: "",
|
|
248
|
+
},
|
|
187
249
|
},
|
|
188
250
|
compoundVariants: [
|
|
251
|
+
// The card (#399): radius 12 and a 1px line on every edge, inside the
|
|
252
|
+
// viewport's 12px inset. `shadow-raised` is in the base already.
|
|
253
|
+
{ side: ["right", "left"], form: "card", class: "rounded-md border border-line" },
|
|
254
|
+
// The edge sheet, as it was: one rule on the edge that faces the page.
|
|
255
|
+
{ side: "right", form: "sheet", class: "border-l border-line" },
|
|
256
|
+
{ side: "left", form: "sheet", class: "border-r border-line" },
|
|
189
257
|
// A bottom sheet is full width. The rungs are the inline axis, and on this
|
|
190
258
|
// edge the inline axis is the whole screen.
|
|
191
259
|
{ side: "bottom", size: "md", class: "max-w-none" },
|
|
@@ -195,8 +263,47 @@ const drawerPopupVariants = cva([
|
|
|
195
263
|
defaultVariants: {
|
|
196
264
|
side: "right",
|
|
197
265
|
size: "md",
|
|
266
|
+
form: "card",
|
|
198
267
|
},
|
|
199
268
|
});
|
|
269
|
+
/**
|
|
270
|
+
* The parts' classes per form.
|
|
271
|
+
*
|
|
272
|
+
* `sheet` is what every part drew before #399, unchanged. `card` is the frame's
|
|
273
|
+
* 24 / 32 / 32 / 32: the header carries the 24 on top and the 24 down to the
|
|
274
|
+
* body, every part the 32 at the sides, and whichever part is last the 32 at
|
|
275
|
+
* the bottom (`last:pb-8` on the body, `pb-8` on a footer). The title row
|
|
276
|
+
* centres the title, the actions and the X on one line; the X is a 32px target
|
|
277
|
+
* pulled back 6px on each side so its 20px glyph ends on the content edge and
|
|
278
|
+
* sits 16 from the last action, as the frame draws it.
|
|
279
|
+
*/
|
|
280
|
+
const DRAWER_PARTS = {
|
|
281
|
+
card: {
|
|
282
|
+
header: "flex shrink-0 flex-col gap-2 px-8 pt-6 pb-6",
|
|
283
|
+
row: "flex items-center justify-between gap-4",
|
|
284
|
+
actions: "-my-1 ms-auto flex flex-wrap items-center justify-end gap-4",
|
|
285
|
+
close: "-mx-1.5 -my-1.5 text-ink",
|
|
286
|
+
glyph: "size-5",
|
|
287
|
+
title: "m-0 text-heading-lg font-medium text-ink",
|
|
288
|
+
body: "min-h-0 flex-1 overflow-y-auto px-8 pb-6 last:pb-8",
|
|
289
|
+
footer: "flex shrink-0 flex-wrap items-center justify-end gap-2 border-t border-hairline px-8 pt-4 pb-8",
|
|
290
|
+
},
|
|
291
|
+
sheet: {
|
|
292
|
+
header: "flex shrink-0 flex-col gap-2 px-6 pt-5 pb-4",
|
|
293
|
+
row: "flex items-start justify-between gap-3",
|
|
294
|
+
actions: "-mt-1 ms-auto flex flex-wrap items-center justify-end gap-3",
|
|
295
|
+
close: "-mt-1 -mr-1.5",
|
|
296
|
+
glyph: "",
|
|
297
|
+
title: "text-body-lg leading-none font-medium",
|
|
298
|
+
body: "min-h-0 flex-1 overflow-y-auto px-6 pb-5",
|
|
299
|
+
footer: "flex shrink-0 flex-wrap items-center justify-end gap-2 border-t border-hairline px-6 py-4",
|
|
300
|
+
},
|
|
301
|
+
};
|
|
302
|
+
/**
|
|
303
|
+
* The form the parts are inside. The sheet's outside a `DrawerContent`, so a
|
|
304
|
+
* part rendered on its own draws what it drew before #399.
|
|
305
|
+
*/
|
|
306
|
+
const DrawerFormContext = React.createContext("sheet");
|
|
200
307
|
/**
|
|
201
308
|
* The root's `modal`, handed to the popup so it can say `aria-modal` (#247).
|
|
202
309
|
* Same reason as `Dialog`'s: Base UI marks everything outside a modal drawer
|
|
@@ -226,15 +333,20 @@ function DrawerClose({ ...props }) {
|
|
|
226
333
|
* tokens are declared at `:root` only and do not flip: a scrim composites over
|
|
227
334
|
* whatever is behind it, so it has no surface of its own.
|
|
228
335
|
*
|
|
336
|
+
* `DrawerContent` renders it behind a sheet and a `bottom` drawer by default, and
|
|
337
|
+
* behind a card only on `overlay="scrim"` (#402).
|
|
338
|
+
*
|
|
229
339
|
* `forceRender` because Base UI does not render a nested dialog's backdrop by
|
|
230
340
|
* default. See the stacking note in the component docblock.
|
|
231
341
|
*/
|
|
232
342
|
function DrawerOverlay({ className, forceRender = true, ...props }) {
|
|
233
343
|
return (_jsx(DialogPrimitive.Backdrop, { "data-slot": "drawer-overlay", forceRender: forceRender, className: cn("fixed inset-0 isolate z-50 scrim-overlay duration-150 data-open:animate-in data-open:fade-in-0 data-closed:animate-out data-closed:fade-out-0", className), ...props }));
|
|
234
344
|
}
|
|
235
|
-
function DrawerContent({ side = "right", size = "md", container, className, children, ...props }) {
|
|
345
|
+
function DrawerContent({ side = "right", size = "md", form = "card", overlay: overlayProp, container, className, children, ...props }) {
|
|
236
346
|
const modal = React.useContext(DrawerModalContext);
|
|
237
|
-
|
|
347
|
+
const resolved = side === "bottom" ? "sheet" : form;
|
|
348
|
+
const overlay = overlayProp ?? (resolved === "card" ? "none" : "scrim");
|
|
349
|
+
return (_jsxs(DrawerPortal, { container: container, children: [overlay === "scrim" ? _jsx(DrawerOverlay, {}) : null, _jsx(DialogPrimitive.Viewport, { className: drawerViewportVariants({ side, form: resolved }), children: _jsx(DialogPrimitive.Popup, { "data-slot": "drawer-content", "aria-modal": modal !== false ? true : undefined, "data-side": side, "data-size": size, "data-form": resolved, "data-overlay": overlay, className: cn(drawerPopupVariants({ side, size, form: resolved }), className), ...props, children: _jsx(DrawerFormContext.Provider, { value: resolved, children: children }) }) })] }));
|
|
238
350
|
}
|
|
239
351
|
/**
|
|
240
352
|
* The title row, with the close affordance built in.
|
|
@@ -256,12 +368,13 @@ function DrawerContent({ side = "right", size = "md", container, className, chil
|
|
|
256
368
|
* when the sheet is narrower than its contents. Leave it out and the header
|
|
257
369
|
* renders exactly what it did before.
|
|
258
370
|
*/
|
|
259
|
-
function DrawerHeader({ title, description, closeLabel = "Close", showCloseButton = true, actions, titleFace
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
371
|
+
function DrawerHeader({ title, description, closeLabel = "Close", showCloseButton = true, actions, titleFace, className, children, ...props }) {
|
|
372
|
+
const form = React.useContext(DrawerFormContext);
|
|
373
|
+
const p = DRAWER_PARTS[form];
|
|
374
|
+
return (_jsxs("div", { "data-slot": "drawer-header", className: cn(p.header, className), ...props, children: [_jsxs("div", { className: p.row, children: [_jsx(DrawerTitle, { face: titleFace, children: title }), actions ? (
|
|
375
|
+
// ms-auto keeps the row against the close glyph when it wraps; the
|
|
376
|
+
// negative block margin lets the controls share the title's line.
|
|
377
|
+
_jsx("div", { "data-slot": "drawer-actions", className: p.actions, children: actions })) : null, showCloseButton && (_jsxs(DialogPrimitive.Close, { "data-slot": "drawer-close", render: _jsx(Button, { variant: "ghost", size: form === "card" ? "icon" : "icon-sm", className: p.close }), children: [_jsx(CloseIcon, { className: p.glyph || undefined }), _jsx("span", { className: "sr-only", children: closeLabel })] }))] }), description ? _jsx(DrawerDescription, { children: description }) : null, children] }));
|
|
265
378
|
}
|
|
266
379
|
/**
|
|
267
380
|
* The scrolling half.
|
|
@@ -273,7 +386,8 @@ function DrawerHeader({ title, description, closeLabel = "Close", showCloseButto
|
|
|
273
386
|
* do.
|
|
274
387
|
*/
|
|
275
388
|
function DrawerBody({ className, ...props }) {
|
|
276
|
-
|
|
389
|
+
const form = React.useContext(DrawerFormContext);
|
|
390
|
+
return (_jsx("div", { "data-slot": "drawer-body", className: cn(DRAWER_PARTS[form].body, className), ...props }));
|
|
277
391
|
}
|
|
278
392
|
/**
|
|
279
393
|
* The pinned half.
|
|
@@ -285,12 +399,18 @@ function DrawerBody({ className, ...props }) {
|
|
|
285
399
|
* text reads as part of the text.
|
|
286
400
|
*/
|
|
287
401
|
function DrawerFooter({ className, ...props }) {
|
|
288
|
-
|
|
402
|
+
const form = React.useContext(DrawerFormContext);
|
|
403
|
+
return (_jsx("div", { "data-slot": "drawer-footer", className: cn(DRAWER_PARTS[form].footer, className), ...props }));
|
|
289
404
|
}
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
405
|
+
const TITLE_FACE = {
|
|
406
|
+
heading: "font-heading",
|
|
407
|
+
body: "font-body",
|
|
408
|
+
ui: "font-ui",
|
|
409
|
+
};
|
|
410
|
+
function DrawerTitle({ face: faceProp, className, ...props }) {
|
|
411
|
+
const form = React.useContext(DrawerFormContext);
|
|
412
|
+
const face = faceProp ?? (form === "card" ? "ui" : "heading");
|
|
413
|
+
return (_jsx(DialogPrimitive.Title, { "data-slot": "drawer-title", "data-face": face === "heading" ? undefined : face, className: cn(TITLE_FACE[face], DRAWER_PARTS[form].title, className), ...props }));
|
|
294
414
|
}
|
|
295
415
|
function DrawerDescription({ className, ...props }) {
|
|
296
416
|
return (_jsx(DialogPrimitive.Description, { "data-slot": "drawer-description", className: cn("text-caption text-body", className), ...props }));
|
package/dist/ui/drawer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drawer.js","sourceRoot":"","sources":["../../src/ui/drawer.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C
|
|
1
|
+
{"version":3,"file":"drawer.js","sourceRoot":"","sources":["../../src/ui/drawer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-group.d.ts","sourceRoot":"","sources":["../../src/ui/input-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGjE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAI7C,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAYvE;AAED,QAAA,MAAM,uBAAuB;;8EAmB5B,CAAA;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,KAAsB,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,uBAAuB,CAAC,qBAiB5E;AAED,QAAA,MAAM,wBAAwB;;8EAgB7B,CAAA;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,IAAe,EACf,OAAiB,EACjB,IAAW,EACX,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,GAC3D,YAAY,CAAC,OAAO,wBAAwB,CAAC,GAAG;IAC9C,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;CACrC,qBAUF;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAU5E;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"input-group.d.ts","sourceRoot":"","sources":["../../src/ui/input-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGjE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAI7C,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,qBAYvE;AAED,QAAA,MAAM,uBAAuB;;8EAmB5B,CAAA;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,KAAsB,EACtB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,uBAAuB,CAAC,qBAiB5E;AAED,QAAA,MAAM,wBAAwB;;8EAgB7B,CAAA;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,IAAe,EACf,OAAiB,EACjB,IAAW,EACX,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,GAC3D,YAAY,CAAC,OAAO,wBAAwB,CAAC,GAAG;IAC9C,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;CACrC,qBAUF;AAED,iBAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,qBAU5E;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,qBAe/B;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,qBAWlC;AAED,OAAO,EACL,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,CAAA"}
|
package/dist/ui/input-group.js
CHANGED
|
@@ -52,10 +52,15 @@ function InputGroupText({ className, ...props }) {
|
|
|
52
52
|
return (_jsx("span", { className: cn("flex items-center gap-2 text-body-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className), ...props }));
|
|
53
53
|
}
|
|
54
54
|
function InputGroupInput({ className, ...props }) {
|
|
55
|
-
return (_jsx(Input, { "data-slot": "input-group-control", className: cn(
|
|
55
|
+
return (_jsx(Input, { "data-slot": "input-group-control", className: cn(
|
|
56
|
+
// The group draws the box, so the control fills it and keeps the
|
|
57
|
+
// compact inset and placeholder it had before Input took the 2026
|
|
58
|
+
// field metrics (#384). Without `h-full` a 40px input hangs out of a
|
|
59
|
+
// 32px group (the Shelf search, the combobox).
|
|
60
|
+
"h-full flex-1 rounded-none border-0 bg-transparent px-2.5 py-1 shadow-none ring-0 placeholder:text-muted-foreground focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent", className), ...props }));
|
|
56
61
|
}
|
|
57
62
|
function InputGroupTextarea({ className, ...props }) {
|
|
58
|
-
return (_jsx(Textarea, { "data-slot": "input-group-control", className: cn("flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent", className), ...props }));
|
|
63
|
+
return (_jsx(Textarea, { "data-slot": "input-group-control", className: cn("min-h-16 flex-1 resize-none rounded-none border-0 bg-transparent px-2.5 py-2 shadow-none ring-0 placeholder:text-muted-foreground focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent", className), ...props }));
|
|
59
64
|
}
|
|
60
65
|
export { InputGroup, InputGroupAddon, InputGroupButton, InputGroupText, InputGroupInput, InputGroupTextarea, };
|
|
61
66
|
//# sourceMappingURL=input-group.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input-group.js","sourceRoot":"","sources":["../../src/ui/input-group.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AAEjE,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAEjD,SAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACtE,OAAO,CACL,2BACY,aAAa,EACvB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,EAAE,CACX,olCAAolC,EACplC,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,MAAM,uBAAuB,GAAG,GAAG,CACjC,8PAA8P,EAC9P;IACE,QAAQ,EAAE;QACR,KAAK,EAAE;YACL,cAAc,EACZ,sEAAsE;YACxE,YAAY,EACV,qEAAqE;YACvE,aAAa,EACX,mGAAmG;YACrG,WAAW,EACT,kGAAkG;SACrG;KACF;IACD,eAAe,EAAE;QACf,KAAK,EAAE,cAAc;KACtB;CACF,CACF,CAAA;AAED,SAAS,eAAe,CAAC,EACvB,SAAS,EACT,KAAK,GAAG,cAAc,EACtB,GAAG,KAAK,EACmE;IAC3E,OAAO;IACL,2MAA2M;IAC3M,cACE,IAAI,EAAC,OAAO,eACF,mBAAmB,gBACjB,KAAK,EACjB,SAAS,EAAE,EAAE,CAAC,uBAAuB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,EAC5D,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,IAAK,CAAC,CAAC,MAAsB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChD,OAAM;YACR,CAAC;YACD,CAAC,CAAC,aAAa,CAAC,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;QAChE,CAAC,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,MAAM,wBAAwB,GAAG,GAAG,CAClC,kDAAkD,EAClD;IACE,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,2FAA2F;YAC/F,EAAE,EAAE,EAAE;YACN,SAAS,EACP,6DAA6D;YAC/D,SAAS,EAAE,2BAA2B;SACvC;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,IAAI;KACX;CACF,CACF,CAAA;AAED,SAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,IAAI,GAAG,QAAQ,EACf,OAAO,GAAG,OAAO,EACjB,IAAI,GAAG,IAAI,EACX,GAAG,KAAK,EAIP;IACD,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,IAAI,eACC,IAAI,EACf,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CAAC,wBAAwB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,KACxD,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAgC;IAC3E,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,6HAA6H,EAC7H,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACsB;IAC9B,OAAO,CACL,KAAC,KAAK,iBACM,qBAAqB,EAC/B,SAAS,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"input-group.js","sourceRoot":"","sources":["../../src/ui/input-group.tsx"],"names":[],"mappings":"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"}
|
package/dist/ui/input.d.ts
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
declare function Input({ className, type, ...props }: React.ComponentProps<"input">
|
|
2
|
+
declare function Input({ className, type, leading, trailing, ...props }: React.ComponentProps<"input"> & {
|
|
3
|
+
/** A decorative mark before the text, 19px in (the search mark). */
|
|
4
|
+
leading?: React.ReactNode;
|
|
5
|
+
/** A mark or control after the text, 19px in (the show-secret Eye). */
|
|
6
|
+
trailing?: React.ReactNode;
|
|
7
|
+
}): React.JSX.Element;
|
|
3
8
|
export { Input };
|
|
4
9
|
//# sourceMappingURL=input.d.ts.map
|
package/dist/ui/input.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/ui/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/ui/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAgE9B,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG;IACjC,oEAAoE;IACpE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,qBA2BA;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
|
package/dist/ui/input.js
CHANGED
|
@@ -1,9 +1,67 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { Input as InputPrimitive } from "@base-ui/react/input";
|
|
4
4
|
import { cn } from "../lib/cloudgrid-cn.js";
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
/**
|
|
6
|
+
* The text field, as the CloudGrid 2026 Figma draws it (#384): the popup form
|
|
7
|
+
* fields of New Vault Item (7537:8484) and the search above every Admin list
|
|
8
|
+
* (7404:5007, 7414:5979).
|
|
9
|
+
*
|
|
10
|
+
* ## The metrics, and why the padding reads 19 and 11
|
|
11
|
+
*
|
|
12
|
+
* 40 tall, radius 16 (`--radius-xl`), white, a 1px N3 border (`--cg-slate-500`,
|
|
13
|
+
* the `steel` utility), Manrope 15 ink, placeholder N3. The frame's padding is
|
|
14
|
+
* 12/20 measured from the OUTER edge, because Figma draws the stroke inside the
|
|
15
|
+
* box. CSS puts the border outside the padding, so the padding is 11/19 and the
|
|
16
|
+
* text still starts 20px in.
|
|
17
|
+
*
|
|
18
|
+
* ## The dark grounds
|
|
19
|
+
*
|
|
20
|
+
* `--cg-slate-500` is a brand ramp rung, declared at `:root` only, and it
|
|
21
|
+
* measures 1.71:1 on the purple panel. So on `[data-cg-surface=panel|ink]` the
|
|
22
|
+
* border and placeholder fall back to the scope's control line and muted text,
|
|
23
|
+
* which is what the field drew there before #384. `bg-card` is white on the page
|
|
24
|
+
* and the scope's own card ground on the dark surfaces, so ink text (which flips
|
|
25
|
+
* to white there) stays legible.
|
|
26
|
+
*
|
|
27
|
+
* ## Icons: `leading` and `trailing`
|
|
28
|
+
*
|
|
29
|
+
* A 20px mark, 19px in from its edge, with the text kept 16px clear of it (so
|
|
30
|
+
* the text starts at 56px with a leading mark, and stops 56px from the right
|
|
31
|
+
* with a trailing one). With neither, `Input` renders a bare `<input>` exactly
|
|
32
|
+
* as before. With either, it renders a wrapper and the `className` still lands
|
|
33
|
+
* on the input; size the field with the wrapper's parent.
|
|
34
|
+
*
|
|
35
|
+
* The leading slot is decorative and ignores the pointer, so a click on the
|
|
36
|
+
* search mark focuses the field. The trailing slot takes clicks, because what
|
|
37
|
+
* goes there is a control: the show-secret Eye is a `<button>` with its own
|
|
38
|
+
* name (`aria-label="Show value"`, `aria-pressed`).
|
|
39
|
+
*
|
|
40
|
+
* ## The label and helper pattern
|
|
41
|
+
*
|
|
42
|
+
* There is no `Field` component; the pattern is three elements in a column:
|
|
43
|
+
*
|
|
44
|
+
* <div className="grid gap-2">
|
|
45
|
+
* <label htmlFor={id} className="text-body-sm font-medium text-foreground">Value</label>
|
|
46
|
+
* <Input id={id} aria-describedby={helpId} />
|
|
47
|
+
* <p id={helpId} className="text-caption text-steel in-data-[cg-surface=panel]:text-faint in-data-[cg-surface=ink]:text-faint">
|
|
48
|
+
* The value is never displayed after save.
|
|
49
|
+
* </p>
|
|
50
|
+
* </div>
|
|
51
|
+
*
|
|
52
|
+
* Label Manrope Medium 15 with 8px to the field; helper Regular 13/1.46 in N3,
|
|
53
|
+
* wired with `aria-describedby`. N3 on white is 3.41:1, under the 4.5:1 body
|
|
54
|
+
* floor; it is what the frame draws, and `text-steel-strong` is the AA
|
|
55
|
+
* companion when a helper carries information a reader must not miss.
|
|
56
|
+
*/
|
|
57
|
+
const FIELD = "h-10 w-full min-w-0 rounded-xl border border-steel bg-card px-[19px] py-[11px] text-body-md text-foreground transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-body-sm file:font-medium file:text-foreground placeholder:text-steel focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-body-sm in-data-[cg-surface=panel]:border-input in-data-[cg-surface=ink]:border-input in-data-[cg-surface=panel]:placeholder:text-muted-foreground in-data-[cg-surface=ink]:placeholder:text-muted-foreground dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40";
|
|
58
|
+
/** The icon slots: a 20px mark, vertically centred, in the steel tone. */
|
|
59
|
+
const SLOT = "absolute inset-y-0 flex items-center text-steel in-data-[cg-surface=panel]:text-muted-foreground in-data-[cg-surface=ink]:text-muted-foreground [&_svg]:size-5 [&_svg]:shrink-0";
|
|
60
|
+
function Input({ className, type, leading, trailing, ...props }) {
|
|
61
|
+
const input = (_jsx(InputPrimitive, { type: type, "data-slot": "input", className: cn(FIELD, leading && "ps-[55px]", trailing && "pe-[55px]", className), ...props }));
|
|
62
|
+
if (!leading && !trailing)
|
|
63
|
+
return input;
|
|
64
|
+
return (_jsxs("div", { "data-slot": "input-wrapper", className: "relative w-full min-w-0", children: [leading ? (_jsx("span", { "data-slot": "input-leading", "aria-hidden": "true", className: cn(SLOT, "pointer-events-none start-[19px]"), children: leading })) : null, input, trailing ? (_jsx("span", { "data-slot": "input-trailing", className: cn(SLOT, "end-[19px]"), children: trailing })) : null] }));
|
|
7
65
|
}
|
|
8
66
|
export { Input };
|
|
9
67
|
//# sourceMappingURL=input.js.map
|
package/dist/ui/input.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/ui/input.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC,SAAS,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/ui/input.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,MAAM,KAAK,GACT,o2BAAo2B,CAAA;AAEt2B,0EAA0E;AAC1E,MAAM,IAAI,GACR,iLAAiL,CAAA;AAEnL,SAAS,KAAK,CAAC,EACb,SAAS,EACT,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EAMT;IACC,MAAM,KAAK,GAAG,CACZ,KAAC,cAAc,IACb,IAAI,EAAE,IAAI,eACA,OAAO,EACjB,SAAS,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,QAAQ,IAAI,WAAW,EAAE,SAAS,CAAC,KAC5E,KAAK,GACT,CACH,CAAA;IAED,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAA;IAEvC,OAAO,CACL,4BAAe,eAAe,EAAC,SAAS,EAAC,yBAAyB,aAC/D,OAAO,CAAC,CAAC,CAAC,CACT,4BAAgB,eAAe,iBAAa,MAAM,EAAC,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,kCAAkC,CAAC,YACvG,OAAO,GACH,CACR,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,EACL,QAAQ,CAAC,CAAC,CAAC,CACV,4BAAgB,gBAAgB,EAAC,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,YAC/D,QAAQ,GACJ,CACR,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC;AAED,OAAO,EAAE,KAAK,EAAE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../src/ui/radio-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../src/ui/radio-group.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AA0F9E,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,KAAK,EACL,YAAY,EACZ,aAAa,EACb,GAAG,KAAK,EACT,EAAE,mBAAmB,CAAC,KAAK,qBAsB3B;AAED,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,CAAC,IAAI,CAAC,KAAK,qBAgBhE;AAED,iBAAS,WAAW,CAAC,EACnB,KAAK,EACL,KAAK,EACL,WAAW,EACX,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,GAAG;IACzD,sDAAsD;IACtD,KAAK,EAAE,OAAO,CAAA;IACd,2CAA2C;IAC3C,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,mFAAmF;IACnF,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,qBA+DA;AAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,CAAA"}
|
package/dist/ui/radio-group.js
CHANGED
|
@@ -22,7 +22,7 @@ import { cn } from "../lib/cloudgrid-cn.js";
|
|
|
22
22
|
* ## The option row, and the name it must NOT have
|
|
23
23
|
*
|
|
24
24
|
* `RadioOption` wraps the control and both lines of text in a `<label>`, which
|
|
25
|
-
* is what makes the whole row clickable rather than the
|
|
25
|
+
* is what makes the whole row clickable rather than the 18px circle.
|
|
26
26
|
*
|
|
27
27
|
* It then passes `aria-labelledby` and `aria-describedby` EXPLICITLY, and that
|
|
28
28
|
* is the load-bearing part. Base UI names a `role="radio"` span by looking for
|
|
@@ -57,6 +57,24 @@ import { cn } from "../lib/cloudgrid-cn.js";
|
|
|
57
57
|
* overlaps its neighbour and a click near the boundary selects the wrong option.
|
|
58
58
|
* The row is the target instead, and it is wider and taller than any overlay.
|
|
59
59
|
*
|
|
60
|
+
* ## The 2026 Figma metrics (#384)
|
|
61
|
+
*
|
|
62
|
+
* From the New Vault Item popup (7537:8484): an 18px control with a 10px dot
|
|
63
|
+
* (node 4957:3340, 4px of space around it), 10px to its label (Manrope Regular
|
|
64
|
+
* 15), an optional description in Regular 13, and 12px between items.
|
|
65
|
+
*
|
|
66
|
+
* THE DESCRIPTION IS NOT N3, deliberately. The frame draws it in N3
|
|
67
|
+
* (`--cg-slate-500`), which is 3.41:1 on white and under the 4.5:1 floor for
|
|
68
|
+
* 13px text; the token layer keeps N3 off every text semantic for that reason.
|
|
69
|
+
* It is `text-faint-strong` (`--cg-text-muted-strong`), the caption rung that
|
|
70
|
+
* clears 4.5:1 on the card, page, panel and ink and flips per scope. The group's own label is Medium 15 with 8px to the first
|
|
71
|
+
* option; it is the caller's element, wired with `aria-labelledby`:
|
|
72
|
+
*
|
|
73
|
+
* <div className="grid gap-2">
|
|
74
|
+
* <span id={id} className="text-body-sm font-medium text-foreground">Type</span>
|
|
75
|
+
* <RadioGroup aria-labelledby={id}>…</RadioGroup>
|
|
76
|
+
* </div>
|
|
77
|
+
*
|
|
60
78
|
* Colour comes from `--primary` through the shadcn bridge, which is declared per
|
|
61
79
|
* surface scope, so the selected ring and dot are brand purple on the page and
|
|
62
80
|
* brand lime on both dark grounds. Selection is never colour alone: the dot is a
|
|
@@ -82,7 +100,7 @@ function RadioGroup({ className, value, defaultValue, onValueChange, ...props })
|
|
|
82
100
|
}, ...props }) }));
|
|
83
101
|
}
|
|
84
102
|
function Radio({ className, ...props }) {
|
|
85
|
-
return (_jsx(RadioPrimitive.Root, { "data-slot": "radio", className: cn("peer flex size-4 shrink-0 items-center justify-center rounded-pill border border-
|
|
103
|
+
return (_jsx(RadioPrimitive.Root, { "data-slot": "radio", className: cn("peer flex size-4.5 shrink-0 items-center justify-center rounded-pill border border-steel p-0 in-data-[cg-surface=panel]:border-input in-data-[cg-surface=ink]:border-input transition-colors outline-none group-has-disabled/field:opacity-50 focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-checked:border-primary data-checked:text-primary data-disabled:cursor-not-allowed data-disabled:opacity-50", className), ...props, children: _jsx(RadioPrimitive.Indicator, { "data-slot": "radio-indicator", className: "size-2.5 shrink-0 rounded-pill bg-current" }) }));
|
|
86
104
|
}
|
|
87
105
|
function RadioOption({ value, label, description, disabled, className, children, ...props }) {
|
|
88
106
|
const selected = React.useContext(RadioGroupValueContext);
|
|
@@ -92,10 +110,10 @@ function RadioOption({ value, label, description, disabled, className, children,
|
|
|
92
110
|
const descriptionId = `${id}-description`;
|
|
93
111
|
return (_jsxs("div", { "data-slot": "radio-option", "data-checked": checked ? "" : undefined, "data-disabled": disabled ? "" : undefined, className: cn("grid gap-1.5", className), ...props, children: [_jsxs("label", { className: cn("flex cursor-pointer items-start gap-2.5 select-none", disabled && "cursor-not-allowed opacity-50"), children: [_jsx(Radio, { value: value, disabled: disabled, "aria-labelledby": labelId, "aria-describedby": description ? descriptionId : undefined,
|
|
94
112
|
// Optically centred on the label's first line rather than its box.
|
|
95
|
-
className: "mt-0.5" }), _jsxs("span", { className: "grid gap-0.5", children: [_jsx("span", { id: labelId, "data-slot": "radio-option-label", className: "text-body-sm text-ink", children: label }), description ? (_jsx("span", { id: descriptionId, "data-slot": "radio-option-description", className: "text-caption text-faint", children: description })) : null] })] }), children && checked ? (_jsx("div", { "data-slot": "radio-option-detail",
|
|
96
|
-
// Indented to the label's edge: the control is
|
|
97
|
-
// 10px, so the text column starts at
|
|
98
|
-
className: "grid gap-2 ps-
|
|
113
|
+
className: "mt-0.5" }), _jsxs("span", { className: "grid gap-0.5", children: [_jsx("span", { id: labelId, "data-slot": "radio-option-label", className: "text-body-sm text-ink", children: label }), description ? (_jsx("span", { id: descriptionId, "data-slot": "radio-option-description", className: "text-caption text-faint-strong", children: description })) : null] })] }), children && checked ? (_jsx("div", { "data-slot": "radio-option-detail",
|
|
114
|
+
// Indented to the label's edge: the control is 18px and the gap is
|
|
115
|
+
// 10px, so the text column starts at 28px.
|
|
116
|
+
className: "grid gap-2 ps-7", children: children })) : null] }));
|
|
99
117
|
}
|
|
100
118
|
export { Radio, RadioGroup, RadioOption };
|
|
101
119
|
//# sourceMappingURL=radio-group.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../../src/ui/radio-group.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,EAAE,UAAU,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAE9E,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC
|
|
1
|
+
{"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../../src/ui/radio-group.tsx"],"names":[],"mappings":"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"}
|
package/dist/ui/select.d.ts
CHANGED
|
@@ -3,6 +3,16 @@ import { Select as SelectPrimitive } from "@base-ui/react/select";
|
|
|
3
3
|
declare const Select: typeof SelectPrimitive.Root;
|
|
4
4
|
declare function SelectGroup({ className, ...props }: SelectPrimitive.Group.Props): React.JSX.Element;
|
|
5
5
|
declare function SelectValue({ className, ...props }: SelectPrimitive.Value.Props): React.JSX.Element;
|
|
6
|
+
/**
|
|
7
|
+
* The filter dropdown above every Admin list, as the 2026 Figma draws it
|
|
8
|
+
* (#384; 7404:5007, 7414:5979): 40 tall, radius 12 (`--radius-md`), white, a 1px
|
|
9
|
+
* N3 border, padding 12/20 from the outer edge (11/19 inside the border), Manrope
|
|
10
|
+
* Regular 15 ink, a 16px caret 16px after the value. Two side by side sit 12px
|
|
11
|
+
* apart; that is the caller's `gap-3`. On the purple panel and ink the border
|
|
12
|
+
* falls back to the scope's control line, as `Input` does.
|
|
13
|
+
*
|
|
14
|
+
* `size="sm"` keeps its compact pre-#384 metrics for dense rows.
|
|
15
|
+
*/
|
|
6
16
|
declare function SelectTrigger({ className, size, children, ...props }: SelectPrimitive.Trigger.Props & {
|
|
7
17
|
size?: "sm" | "default";
|
|
8
18
|
}): React.JSX.Element;
|
package/dist/ui/select.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/ui/select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAKjE,QAAA,MAAM,MAAM,6BAAuB,CAAA;AAEnC,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,qBAQxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,qBAQxE;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,IAAgB,EAChB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,GAAG;IACjC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;CACxB,qBAmBA;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,IAAe,EACf,UAAc,EACd,KAAgB,EAChB,WAAe,EACf,oBAA2B,EAC3B,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,GAC5B,IAAI,CACF,eAAe,CAAC,UAAU,CAAC,KAAK,EAChC,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,sBAAsB,CACzE,qBAwBF;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,UAAU,CAAC,KAAK,qBAQlC;AAED,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,qBAsB5B;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,SAAS,CAAC,KAAK,qBAQjC;AAED,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,aAAa,CAAC,qBAa5D;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,eAAe,CAAC,qBAa9D;AAED,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,CAAA"}
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/ui/select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAKjE,QAAA,MAAM,MAAM,6BAAuB,CAAA;AAEnC,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,qBAQxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,qBAQxE;AAED;;;;;;;;;GASG;AACH,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,IAAgB,EAChB,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,GAAG;IACjC,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;CACxB,qBAmBA;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,QAAQ,EACR,IAAe,EACf,UAAc,EACd,KAAgB,EAChB,WAAe,EACf,oBAA2B,EAC3B,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,GAC5B,IAAI,CACF,eAAe,CAAC,UAAU,CAAC,KAAK,EAChC,OAAO,GAAG,aAAa,GAAG,MAAM,GAAG,YAAY,GAAG,sBAAsB,CACzE,qBAwBF;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,UAAU,CAAC,KAAK,qBAQlC;AAED,iBAAS,UAAU,CAAC,EAClB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,qBAsB5B;AAED,iBAAS,eAAe,CAAC,EACvB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,CAAC,SAAS,CAAC,KAAK,qBAQjC;AAED,iBAAS,oBAAoB,CAAC,EAC5B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,aAAa,CAAC,qBAa5D;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,eAAe,CAAC,qBAa9D;AAED,OAAO,EACL,MAAM,EACN,aAAa,EACb,WAAW,EACX,UAAU,EACV,WAAW,EACX,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,WAAW,GACZ,CAAA"}
|
package/dist/ui/select.js
CHANGED
|
@@ -11,8 +11,18 @@ function SelectGroup({ className, ...props }) {
|
|
|
11
11
|
function SelectValue({ className, ...props }) {
|
|
12
12
|
return (_jsx(SelectPrimitive.Value, { "data-slot": "select-value", className: cn("flex flex-1 text-left", className), ...props }));
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* The filter dropdown above every Admin list, as the 2026 Figma draws it
|
|
16
|
+
* (#384; 7404:5007, 7414:5979): 40 tall, radius 12 (`--radius-md`), white, a 1px
|
|
17
|
+
* N3 border, padding 12/20 from the outer edge (11/19 inside the border), Manrope
|
|
18
|
+
* Regular 15 ink, a 16px caret 16px after the value. Two side by side sit 12px
|
|
19
|
+
* apart; that is the caller's `gap-3`. On the purple panel and ink the border
|
|
20
|
+
* falls back to the scope's control line, as `Input` does.
|
|
21
|
+
*
|
|
22
|
+
* `size="sm"` keeps its compact pre-#384 metrics for dense rows.
|
|
23
|
+
*/
|
|
14
24
|
function SelectTrigger({ className, size = "default", children, ...props }) {
|
|
15
|
-
return (_jsxs(SelectPrimitive.Trigger, { "data-slot": "select-trigger", "data-size": size, className: cn("flex w-fit items-center justify-between gap-
|
|
25
|
+
return (_jsxs(SelectPrimitive.Trigger, { "data-slot": "select-trigger", "data-size": size, className: cn("flex w-fit items-center justify-between gap-4 rounded-md border border-steel bg-card px-[19px] py-[11px] text-body-sm text-foreground whitespace-nowrap transition-colors outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-placeholder:text-steel in-data-[cg-surface=panel]:data-placeholder:text-muted-foreground in-data-[cg-surface=ink]:data-placeholder:text-muted-foreground data-[size=default]:h-10 data-[size=sm]:h-7 data-[size=sm]:gap-1.5 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-2 data-[size=sm]:pr-2 data-[size=sm]:pl-2.5 in-data-[cg-surface=panel]:border-input in-data-[cg-surface=ink]:border-input *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-1.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className), ...props, children: [children, _jsx(SelectPrimitive.Icon, { render: _jsx(ChevronDownIcon, { className: "pointer-events-none size-4 text-muted-foreground" }) })] }));
|
|
16
26
|
}
|
|
17
27
|
function SelectContent({ className, children, side = "bottom", sideOffset = 4, align = "center", alignOffset = 0, alignItemWithTrigger = true, ...props }) {
|
|
18
28
|
return (_jsx(SelectPrimitive.Portal, { children: _jsx(SelectPrimitive.Positioner, { side: side, sideOffset: sideOffset, align: align, alignOffset: alignOffset, alignItemWithTrigger: alignItemWithTrigger, className: "isolate z-50", children: _jsxs(SelectPrimitive.Popup, { "data-slot": "select-content", "data-align-trigger": alignItemWithTrigger, className: cn("relative isolate z-50 max-h-(--available-height) w-(--anchor-width) min-w-36 origin-(--transform-origin) overflow-x-hidden overflow-y-auto rounded-lg bg-popover text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[align-trigger=true]:animate-none data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className), ...props, children: [_jsx(SelectScrollUpButton, {}), _jsx(SelectPrimitive.List, { children: children }), _jsx(SelectScrollDownButton, {})] }) }) }));
|
package/dist/ui/select.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/ui/select.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEjE,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAE/E,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAA;AAEnC,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACvE,OAAO,CACL,KAAC,eAAe,CAAC,KAAK,iBACV,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,KACvC,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAA+B;IACvE,OAAO,CACL,KAAC,eAAe,CAAC,KAAK,iBACV,cAAc,EACxB,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,SAAS,CAAC,KAC7C,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,EACrB,SAAS,EACT,IAAI,GAAG,SAAS,EAChB,QAAQ,EACR,GAAG,KAAK,EAGT;IACC,OAAO,CACL,MAAC,eAAe,CAAC,OAAO,iBACZ,gBAAgB,eACf,IAAI,EACf,SAAS,EAAE,EAAE,CACX,
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/ui/select.tsx"],"names":[],"mappings":"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"}
|
package/dist/ui/textarea.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* The multi-line text field: the 2026 text field's border, radius, ground and
|
|
4
|
+
* horizontal padding (#384), growing with its content. The block padding is 8,
|
|
5
|
+
* not the Input's 11: a content-sized textarea is line box + padding + border,
|
|
6
|
+
* and 11 made one row 46. With 8 one row is 40 (21.9 + 16 + 2 at 15/1.46). See `input.tsx`
|
|
7
|
+
* for the metrics, the dark-ground fallback, and the label and helper pattern.
|
|
8
|
+
*/
|
|
2
9
|
declare function Textarea({ className, ...props }: React.ComponentProps<"textarea">): React.JSX.Element;
|
|
3
10
|
export { Textarea };
|
|
4
11
|
//# sourceMappingURL=textarea.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../src/ui/textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,qBAW1E;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"textarea.d.ts","sourceRoot":"","sources":["../../src/ui/textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B;;;;;;GAMG;AACH,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,qBAW1E;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
package/dist/ui/textarea.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { cn } from "../lib/cloudgrid-cn.js";
|
|
4
|
+
/**
|
|
5
|
+
* The multi-line text field: the 2026 text field's border, radius, ground and
|
|
6
|
+
* horizontal padding (#384), growing with its content. The block padding is 8,
|
|
7
|
+
* not the Input's 11: a content-sized textarea is line box + padding + border,
|
|
8
|
+
* and 11 made one row 46. With 8 one row is 40 (21.9 + 16 + 2 at 15/1.46). See `input.tsx`
|
|
9
|
+
* for the metrics, the dark-ground fallback, and the label and helper pattern.
|
|
10
|
+
*/
|
|
4
11
|
function Textarea({ className, ...props }) {
|
|
5
|
-
return (_jsx("textarea", { "data-slot": "textarea", className: cn("flex field-sizing-content min-h-
|
|
12
|
+
return (_jsx("textarea", { "data-slot": "textarea", className: cn("flex field-sizing-content min-h-10 w-full rounded-xl border border-steel bg-card px-[19px] py-2 text-body-md text-foreground transition-colors outline-none placeholder:text-steel focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-body-sm in-data-[cg-surface=panel]:border-input in-data-[cg-surface=ink]:border-input in-data-[cg-surface=panel]:placeholder:text-muted-foreground in-data-[cg-surface=ink]:placeholder:text-muted-foreground dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40", className), ...props }));
|
|
6
13
|
}
|
|
7
14
|
export { Textarea };
|
|
8
15
|
//# sourceMappingURL=textarea.js.map
|
package/dist/ui/textarea.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../src/ui/textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAoC;IACzE,OAAO,CACL,gCACY,UAAU,EACpB,SAAS,EAAE,EAAE,CACX,
|
|
1
|
+
{"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../src/ui/textarea.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAEvC;;;;;;GAMG;AACH,SAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAoC;IACzE,OAAO,CACL,gCACY,UAAU,EACpB,SAAS,EAAE,EAAE,CACX,ouBAAouB,EACpuB,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
package/package.json
CHANGED