@bison-lab/admin-ui 3.24.0 → 3.26.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/index.d.mts +9 -5
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +29 -12
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,7 +6,8 @@ checkbox, input, switch, textarea, a stacked `Field`/`Label` (12px/700,
|
|
|
6
6
|
8px above the control), `Kicker` (uppercase eyebrow), `Fold` (accordion
|
|
7
7
|
that keeps its own open state and leaves children mounted), `Stack` (locked
|
|
8
8
|
12px column gap for a list of folds and the add button after them), a Radix
|
|
9
|
-
select (not a native `<select
|
|
9
|
+
select (not a native `<select>`; a custom closed face such as a swatch +
|
|
10
|
+
label goes in `SelectTrigger` — skip `SelectValue`), and the glyphs a rail uses. Wrap a screen
|
|
10
11
|
in `KitProvider` once so those styles mount. Field adapters in
|
|
11
12
|
`@bison-lab/payload-blocks/admin` (and later `@bison-lab/payload-core/admin`)
|
|
12
13
|
compose them and own `useField` / `useForm`.
|
package/dist/index.d.mts
CHANGED
|
@@ -166,10 +166,7 @@ declare function ConfirmDialog({
|
|
|
166
166
|
}): react_jsx_runtime0.JSX.Element;
|
|
167
167
|
//#endregion
|
|
168
168
|
//#region src/input.d.ts
|
|
169
|
-
declare
|
|
170
|
-
className,
|
|
171
|
-
...props
|
|
172
|
-
}: InputHTMLAttributes<HTMLInputElement>): react_jsx_runtime0.JSX.Element;
|
|
169
|
+
declare const Input: react.ForwardRefExoticComponent<InputHTMLAttributes<HTMLInputElement> & react.RefAttributes<HTMLInputElement>>;
|
|
173
170
|
//#endregion
|
|
174
171
|
//#region src/switch.d.ts
|
|
175
172
|
declare function Switch({
|
|
@@ -220,17 +217,24 @@ declare function TypeCard({
|
|
|
220
217
|
//#endregion
|
|
221
218
|
//#region src/select.d.ts
|
|
222
219
|
declare const Select: react.FC<Select$1.SelectProps>;
|
|
223
|
-
|
|
220
|
+
/** Text-only closed face. For a swatch + label, put that row in `SelectTrigger` and skip this. */
|
|
221
|
+
declare function SelectValue({
|
|
222
|
+
className,
|
|
223
|
+
...props
|
|
224
|
+
}: ComponentPropsWithoutRef<typeof Select$1.Value>): react_jsx_runtime0.JSX.Element;
|
|
224
225
|
declare function SelectTrigger({
|
|
225
226
|
children,
|
|
227
|
+
className,
|
|
226
228
|
...props
|
|
227
229
|
}: ComponentPropsWithoutRef<typeof Select$1.Trigger>): react_jsx_runtime0.JSX.Element;
|
|
228
230
|
declare function SelectContent({
|
|
229
231
|
children,
|
|
232
|
+
className,
|
|
230
233
|
...props
|
|
231
234
|
}: ComponentPropsWithoutRef<typeof Select$1.Content>): react_jsx_runtime0.JSX.Element;
|
|
232
235
|
declare function SelectItem({
|
|
233
236
|
children,
|
|
237
|
+
className,
|
|
234
238
|
...props
|
|
235
239
|
}: ComponentPropsWithoutRef<typeof Select$1.Item>): react_jsx_runtime0.JSX.Element;
|
|
236
240
|
//#endregion
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/badge.tsx","../src/button.tsx","../src/checkbox.tsx","../src/provider.tsx","../src/label.tsx","../src/kicker.tsx","../src/fold.tsx","../src/stack.tsx","../src/dialog.tsx","../src/confirm-dialog.tsx","../src/input.tsx","../src/switch.tsx","../src/textarea.tsx","../src/glyphs.tsx","../src/type-cards.tsx","../src/select.tsx","../src/workspace.tsx"],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/badge.tsx","../src/button.tsx","../src/checkbox.tsx","../src/provider.tsx","../src/label.tsx","../src/kicker.tsx","../src/fold.tsx","../src/stack.tsx","../src/dialog.tsx","../src/confirm-dialog.tsx","../src/input.tsx","../src/switch.tsx","../src/textarea.tsx","../src/glyphs.tsx","../src/type-cards.tsx","../src/select.tsx","../src/workspace.tsx"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { Checkbox as Checkbox$1, Select as Select$1, Switch as Switch$1 } from "radix-ui";
|
|
4
|
-
import { useId, useState } from "react";
|
|
4
|
+
import { forwardRef, useId, useState } from "react";
|
|
5
5
|
//#region src/badge.tsx
|
|
6
6
|
const BADGE_VARIANTS = [
|
|
7
7
|
"primary",
|
|
@@ -117,11 +117,13 @@ const CSS = `
|
|
|
117
117
|
.bl-nav-kit__switch[data-disabled]{opacity:.5;cursor:not-allowed}
|
|
118
118
|
.bl-nav-kit__switch-thumb{display:block;width:18px;height:18px;border-radius:999px;background:#fff;transform:translateX(2px);transition:transform .12s ease}
|
|
119
119
|
.bl-nav-kit__switch[data-state="checked"] .bl-nav-kit__switch-thumb{transform:translateX(20px)}
|
|
120
|
-
.bl-nav-kit__select-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:38px;padding:
|
|
120
|
+
.bl-nav-kit__select-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;box-sizing:border-box;min-height:38px;height:38px;padding:0 10px;border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:8px;background:var(--theme-input-bg,var(--theme-elevation-0,#fff));color:var(--theme-elevation-800,#27272a);font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:14px;text-align:left;cursor:pointer}
|
|
121
121
|
.bl-nav-kit__select-trigger:hover,.bl-nav-kit__select-trigger[data-state="open"]{border-color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)))}
|
|
122
122
|
.bl-nav-kit__select-trigger[data-disabled]{opacity:.5;cursor:not-allowed}
|
|
123
|
-
.bl-nav-kit__select-value{
|
|
123
|
+
.bl-nav-kit__select-value{display:flex;align-items:center;flex:1;min-width:0;overflow:visible}
|
|
124
|
+
.bl-nav-kit__select-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:20px;font-size:14px}
|
|
124
125
|
.bl-nav-kit__select-chevron{flex:none;color:var(--theme-elevation-500,#71717a);display:grid;place-items:center}
|
|
126
|
+
.bl-nav-kit__select-chevron svg{display:block}
|
|
125
127
|
.bl-nav-kit__select-content{z-index:10050;min-width:var(--radix-select-trigger-width);background:var(--theme-elevation-0,#fff);border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:10px;padding:4px;box-shadow:0 12px 32px rgba(0,0,0,.45);color:var(--theme-elevation-800,#27272a);font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif}
|
|
126
128
|
.bl-nav-kit__select-viewport{display:grid;gap:2px}
|
|
127
129
|
.bl-nav-kit__select-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:7px;cursor:pointer;outline:none;font:inherit}
|
|
@@ -161,6 +163,14 @@ button.bl-nav-kit__badge{cursor:pointer;font-family:Inter,ui-sans-serif,system-u
|
|
|
161
163
|
.bl-nav-kit__fold-menu-pop{position:absolute;right:0;top:34px;z-index:12;min-width:140px;padding:4px;border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:8px;background:var(--theme-elevation-0,#fff)}
|
|
162
164
|
.bl-nav-kit__fold-menu-pop button{display:block;width:100%;text-align:left;border:0;background:transparent;padding:7px 8px;border-radius:6px;color:var(--theme-elevation-800,#27272a);cursor:pointer}
|
|
163
165
|
.bl-nav-kit__fold-menu-pop button:disabled{opacity:.45;cursor:not-allowed}
|
|
166
|
+
.bl-nav-kit__picker{position:relative}
|
|
167
|
+
.bl-nav-kit__picker-control{display:flex;align-items:center;gap:8px;min-height:38px;padding:8px 10px;border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:8px;background:var(--theme-input-bg,var(--theme-elevation-0,#fff));color:var(--theme-elevation-800,#27272a);font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif}
|
|
168
|
+
.bl-nav-kit__picker-menu{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:20;margin:0;padding:4px;list-style:none;border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:10px;background:var(--theme-elevation-0,#fff);box-shadow:0 12px 32px rgba(0,0,0,.45)}
|
|
169
|
+
.bl-nav-kit__picker-option{display:flex;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:7px;cursor:pointer;font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif}
|
|
170
|
+
.bl-nav-kit__picker-option[aria-selected="true"]{background:color-mix(in srgb,var(--bl-kit-accent,#2563eb) 12%,var(--theme-elevation-0,#fff))}
|
|
171
|
+
.bl-nav-kit__picker-path{color:var(--theme-elevation-500,#71717a);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
|
|
172
|
+
.bl-nav-kit__picker-address{display:flex;align-items:flex-start;gap:8px}
|
|
173
|
+
.bl-nav-kit__picker-address .bl-nav-kit__input{flex:1}
|
|
164
174
|
`;
|
|
165
175
|
function KitStyles() {
|
|
166
176
|
return /* @__PURE__ */ jsx("style", {
|
|
@@ -361,12 +371,13 @@ function ConfirmDialog({ open, title, children, cancelLabel, confirmLabel, onCan
|
|
|
361
371
|
}
|
|
362
372
|
//#endregion
|
|
363
373
|
//#region src/input.tsx
|
|
364
|
-
function Input({ className, ...props }) {
|
|
374
|
+
const Input = forwardRef(function Input({ className, ...props }, ref) {
|
|
365
375
|
return /* @__PURE__ */ jsx("input", {
|
|
376
|
+
ref,
|
|
366
377
|
className: ["bl-nav-kit__input", className].filter(Boolean).join(" "),
|
|
367
378
|
...props
|
|
368
379
|
});
|
|
369
|
-
}
|
|
380
|
+
});
|
|
370
381
|
//#endregion
|
|
371
382
|
//#region src/switch.tsx
|
|
372
383
|
function Switch({ className, ...props }) {
|
|
@@ -466,10 +477,16 @@ function TypeCard({ icon, label, description, onClick, active, disabled }) {
|
|
|
466
477
|
//#endregion
|
|
467
478
|
//#region src/select.tsx
|
|
468
479
|
const Select = Select$1.Root;
|
|
469
|
-
|
|
470
|
-
function
|
|
480
|
+
/** Text-only closed face. For a swatch + label, put that row in `SelectTrigger` and skip this. */
|
|
481
|
+
function SelectValue({ className, ...props }) {
|
|
482
|
+
return /* @__PURE__ */ jsx("span", {
|
|
483
|
+
className: ["bl-nav-kit__select-label", className].filter(Boolean).join(" "),
|
|
484
|
+
children: /* @__PURE__ */ jsx(Select$1.Value, { ...props })
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
function SelectTrigger({ children, className, ...props }) {
|
|
471
488
|
return /* @__PURE__ */ jsxs(Select$1.Trigger, {
|
|
472
|
-
className: "bl-nav-kit__select-trigger",
|
|
489
|
+
className: ["bl-nav-kit__select-trigger", className].filter(Boolean).join(" "),
|
|
473
490
|
...props,
|
|
474
491
|
children: [/* @__PURE__ */ jsx("span", {
|
|
475
492
|
className: "bl-nav-kit__select-value",
|
|
@@ -481,9 +498,9 @@ function SelectTrigger({ children, ...props }) {
|
|
|
481
498
|
})]
|
|
482
499
|
});
|
|
483
500
|
}
|
|
484
|
-
function SelectContent({ children, ...props }) {
|
|
501
|
+
function SelectContent({ children, className, ...props }) {
|
|
485
502
|
return /* @__PURE__ */ jsx(Select$1.Portal, { children: /* @__PURE__ */ jsx(Select$1.Content, {
|
|
486
|
-
className: "bl-nav-kit__select-content",
|
|
503
|
+
className: ["bl-nav-kit__select-content", className].filter(Boolean).join(" "),
|
|
487
504
|
position: "popper",
|
|
488
505
|
sideOffset: 6,
|
|
489
506
|
...props,
|
|
@@ -493,9 +510,9 @@ function SelectContent({ children, ...props }) {
|
|
|
493
510
|
})
|
|
494
511
|
}) });
|
|
495
512
|
}
|
|
496
|
-
function SelectItem({ children, ...props }) {
|
|
513
|
+
function SelectItem({ children, className, ...props }) {
|
|
497
514
|
return /* @__PURE__ */ jsxs(Select$1.Item, {
|
|
498
|
-
className: "bl-nav-kit__select-item",
|
|
515
|
+
className: ["bl-nav-kit__select-item", className].filter(Boolean).join(" "),
|
|
499
516
|
...props,
|
|
500
517
|
children: [/* @__PURE__ */ jsx(Select$1.ItemText, { children }), /* @__PURE__ */ jsx(Select$1.ItemIndicator, {
|
|
501
518
|
className: "bl-nav-kit__select-check",
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["CheckboxPrimitive","SwitchPrimitive","SelectPrimitive"],"sources":["../src/badge.tsx","../src/button.tsx","../src/checkbox.tsx","../src/styles.tsx","../src/provider.tsx","../src/label.tsx","../src/kicker.tsx","../src/fold.tsx","../src/stack.tsx","../src/dialog.tsx","../src/confirm-dialog.tsx","../src/input.tsx","../src/switch.tsx","../src/textarea.tsx","../src/glyphs.tsx","../src/type-cards.tsx","../src/select.tsx","../src/workspace.tsx"],"sourcesContent":["import type { ButtonHTMLAttributes, HTMLAttributes } from \"react\";\n\nexport const BADGE_VARIANTS = [\n \"primary\",\n \"secondary\",\n \"success\",\n \"danger\",\n \"warning\",\n \"info\",\n \"neutral-subtle\",\n \"neutral-strong\",\n] as const;\n\nexport type BadgeVariant = (typeof BADGE_VARIANTS)[number];\n\ntype BadgeCommon = {\n variant?: BadgeVariant;\n className?: string;\n};\n\nexport type BadgeProps =\n | (BadgeCommon & { as?: \"span\" } & HTMLAttributes<HTMLSpanElement>)\n | (BadgeCommon & { as: \"button\" } & ButtonHTMLAttributes<HTMLButtonElement>);\n\n/** Pill status. Span by default; pass `as=\"button\"` for a clickable chip. Label case is the caller's. */\nexport function Badge({ variant = \"neutral-subtle\", as, className, ...props }: BadgeProps) {\n const Tag = as ?? \"span\";\n return (\n <Tag\n className={[\"bl-nav-kit__badge\", `bl-nav-kit__badge--${variant}`, className].filter(Boolean).join(\" \")}\n {...(Tag === \"button\" ? { type: \"button\" } : {})}\n {...props}\n />\n );\n}\n","import type { ButtonHTMLAttributes } from \"react\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"outline\" | \"ghost\" | \"danger\";\n\nexport function Button({\n variant = \"primary\",\n className,\n type = \"button\",\n children,\n ...props\n}: ButtonHTMLAttributes<HTMLButtonElement> & { variant?: ButtonVariant }) {\n return (\n <button\n type={type}\n className={[\"bl-nav-kit__btn\", `bl-nav-kit__btn--${variant}`, className].filter(Boolean).join(\" \")}\n {...props}\n >\n {children}\n </button>\n );\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\n\nexport function Checkbox({\n className,\n ...props\n}: ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root className={[\"bl-nav-kit__checkbox\", className].filter(Boolean).join(\" \")} {...props}>\n <CheckboxPrimitive.Indicator className=\"bl-nav-kit__checkbox-mark\" aria-hidden>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden>\n <path\n d=\"M20 6 9 17l-5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"2.25\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n","const CSS = `\n.bl-nav-kit__types{display:grid;grid-template-columns:1fr 1fr;gap:12px}\n.bl-nav-kit__types--compact{margin:0 0 10px;gap:6px}\n.bl-nav-kit__type{display:flex;flex-direction:column;align-items:stretch;gap:0;border:1px solid var(--theme-elevation-150,#e4e4e7);background:var(--theme-elevation-50,#f4f4f5);border-radius:10px;padding:16px;text-align:left;color:var(--theme-elevation-800,#27272a);cursor:pointer;font:inherit}\n.bl-nav-kit__type-row{display:flex;align-items:center;gap:12px;min-width:0}\n.bl-nav-kit__types--compact .bl-nav-kit__type{align-items:center;justify-content:center;border-radius:7px;padding:8px 6px;font-size:12px;background:var(--theme-elevation-0,#fff)}\n.bl-nav-kit__type small{display:block;margin-top:.3rem;color:var(--theme-elevation-500,#71717a);font-weight:400}\n.bl-nav-kit__type-icon{display:grid;place-items:center;width:2rem;height:2rem;border-radius:7px;background:var(--theme-elevation-150,#e4e4e7);flex:none}\n.bl-nav-kit__glyph{width:28px;height:28px;display:grid;place-items:center;border-radius:7px;background:var(--theme-elevation-150,#e4e4e7);color:var(--theme-elevation-800,#27272a);flex:none}\n.bl-nav-kit__glyph[data-kind=\"megaMenu\"]{background:color-mix(in srgb,var(--bl-kit-accent,#2563eb) 18%,var(--theme-elevation-0,#fff));color:var(--bl-kit-accent,#2563eb)}\n.bl-nav-kit__type-icon .bl-nav-kit__glyph{width:100%;height:100%;background:transparent;color:inherit}\n.bl-nav-kit__types--compact .bl-nav-kit__type-icon{width:1.25rem;height:1.25rem;background:transparent}\n.bl-nav-kit__type:hover{border-color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)))}\n.bl-nav-kit__type.is-active,.bl-nav-kit__types--compact .bl-nav-kit__type.is-active{border-color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)));background:color-mix(in srgb,var(--bl-kit-accent,#2563eb) 12%,var(--theme-elevation-0,#fff))}\n.bl-nav-kit__modal{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:var(--theme-overlay,rgba(0,0,0,.62));font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif;color:var(--theme-elevation-800,#27272a)}\n.bl-nav-kit__modal-card{width:min(36rem,calc(100vw - 2rem));background:var(--theme-elevation-0,#fff);border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:12px;padding:1.25rem 0 0;overflow:hidden;box-shadow:0 12px 32px rgba(0,0,0,.45)}\n.bl-nav-kit__modal-card h2{margin:0 1.25rem .75rem;font-size:18px}\n.bl-nav-kit__modal-card p{margin:0;color:var(--theme-elevation-500,#71717a)}\n.bl-nav-kit__modal-body{min-width:0;padding:0 1.25rem}\n.bl-nav-kit__modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.25rem;padding:1rem 1.25rem;border-top:1px solid var(--theme-elevation-150,#e4e4e7)}\n.bl-nav-kit__danger{color:var(--theme-error-500,#ff7381)}\n.bl-nav-kit__btn{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 14px;border-radius:8px;font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif;font-weight:550;cursor:pointer}\n.bl-nav-kit__btn:disabled{opacity:.5;cursor:not-allowed}\n.bl-nav-kit__btn--primary{border:0;background:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)));color:#fff}\n.bl-nav-kit__btn--primary:hover{filter:brightness(1.08)}\n.bl-nav-kit__btn--secondary{border:0;background:var(--theme-elevation-800,#27272a);color:var(--theme-elevation-0,#fff)}\n.bl-nav-kit__btn--secondary:hover{filter:brightness(1.08)}\n.bl-nav-kit__btn--outline{border:1px solid var(--theme-elevation-250,#d4d4d8);background:transparent;color:var(--theme-elevation-800,#27272a)}\n.bl-nav-kit__btn--outline:hover{border-color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)))}\n.bl-nav-kit__btn--ghost{border:1px solid transparent;background:transparent;color:var(--theme-elevation-800,#27272a)}\n.bl-nav-kit__btn--ghost:hover{background:var(--theme-elevation-100,#f4f4f5)}\n.bl-nav-kit__btn--danger{border:1px solid var(--theme-error-500,#ff7381);background:color-mix(in srgb,var(--theme-error-500,#ff7381) 16%,var(--theme-elevation-0,#fff));color:var(--theme-error-500,#ff7381)}\n.bl-nav-kit__btn--danger:hover{background:color-mix(in srgb,var(--theme-error-500,#ff7381) 24%,var(--theme-elevation-0,#fff))}\n.bl-nav-kit__input,.bl-nav-kit__textarea{width:100%;min-height:38px;padding:8px 10px;border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:8px;background:var(--theme-input-bg,var(--theme-elevation-0,#fff));color:var(--theme-elevation-800,#27272a);font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif}\n.bl-nav-kit__textarea{min-height:5.5rem;resize:vertical}\n.bl-nav-kit__input:hover,.bl-nav-kit__textarea:hover,.bl-nav-kit__input:focus,.bl-nav-kit__textarea:focus{border-color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)));outline:none}\n.bl-nav-kit__input:disabled,.bl-nav-kit__textarea:disabled{opacity:.5;cursor:not-allowed}\n.bl-nav-kit__input::placeholder,.bl-nav-kit__textarea::placeholder{color:var(--theme-elevation-500,#71717a)}\n.bl-nav-kit__check{display:flex;align-items:center;gap:10px;font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif;color:var(--theme-elevation-800,#27272a);cursor:pointer}\n.bl-nav-kit__check:has(.bl-nav-kit__checkbox[data-disabled]){opacity:.5;cursor:not-allowed}\n.bl-nav-kit__checkbox{position:relative;width:18px;height:18px;flex:none;border:1px solid var(--theme-elevation-250,#a1a1aa);border-radius:3px;background:var(--theme-elevation-0,#fff);color:#fff;cursor:pointer;padding:0}\n.bl-nav-kit__checkbox:hover,.bl-nav-kit__checkbox[data-state=\"checked\"]{border-color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)))}\n.bl-nav-kit__checkbox[data-state=\"checked\"]{background:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)))}\n.bl-nav-kit__checkbox[data-disabled]{opacity:.5;cursor:not-allowed}\n.bl-nav-kit__checkbox-mark{position:absolute;inset:0;display:grid;place-items:center}\n.bl-nav-kit__checkbox-mark svg{width:12px;height:12px;display:block}\n.bl-nav-kit__switch{width:40px;height:22px;flex:none;padding:0;border:0;border-radius:999px;background:var(--theme-elevation-250,#d4d4d8);position:relative;cursor:pointer}\n.bl-nav-kit__switch[data-state=\"checked\"]{background:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)))}\n.bl-nav-kit__switch[data-disabled]{opacity:.5;cursor:not-allowed}\n.bl-nav-kit__switch-thumb{display:block;width:18px;height:18px;border-radius:999px;background:#fff;transform:translateX(2px);transition:transform .12s ease}\n.bl-nav-kit__switch[data-state=\"checked\"] .bl-nav-kit__switch-thumb{transform:translateX(20px)}\n.bl-nav-kit__select-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:38px;padding:8px 10px;border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:8px;background:var(--theme-input-bg,var(--theme-elevation-0,#fff));color:var(--theme-elevation-800,#27272a);font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif;text-align:left;cursor:pointer}\n.bl-nav-kit__select-trigger:hover,.bl-nav-kit__select-trigger[data-state=\"open\"]{border-color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)))}\n.bl-nav-kit__select-trigger[data-disabled]{opacity:.5;cursor:not-allowed}\n.bl-nav-kit__select-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n.bl-nav-kit__select-chevron{flex:none;color:var(--theme-elevation-500,#71717a);display:grid;place-items:center}\n.bl-nav-kit__select-content{z-index:10050;min-width:var(--radix-select-trigger-width);background:var(--theme-elevation-0,#fff);border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:10px;padding:4px;box-shadow:0 12px 32px rgba(0,0,0,.45);color:var(--theme-elevation-800,#27272a);font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif}\n.bl-nav-kit__select-viewport{display:grid;gap:2px}\n.bl-nav-kit__select-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:7px;cursor:pointer;outline:none;font:inherit}\n.bl-nav-kit__select-item[data-highlighted],.bl-nav-kit__select-item[data-state=\"checked\"]{background:color-mix(in srgb,var(--bl-kit-accent,#2563eb) 12%,var(--theme-elevation-0,#fff))}\n.bl-nav-kit__select-item[data-disabled]{opacity:.45;pointer-events:none}\n.bl-nav-kit__select-check{flex:none;color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)));display:grid;place-items:center}\n.bl-nav-kit__field{display:flex;flex-direction:column;align-items:stretch;gap:8px;margin:0 0 16px}\n.bl-nav-kit__label{display:block;font:12px/1.2 Inter,ui-sans-serif,system-ui,sans-serif;font-weight:700;color:inherit}\n.bl-nav-kit__badge{display:inline-flex;align-items:center;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:10px;font-weight:700;line-height:1.2;padding:.32rem .55rem;border:0;border-radius:999px;background:transparent;color:inherit}\nbutton.bl-nav-kit__badge{cursor:pointer;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:10px;font-weight:700;line-height:1.2}\n.bl-nav-kit__badge--primary{background:var(--bl-kit-accent,var(--brand-primary,#2563eb));color:#fff}\n.bl-nav-kit__badge--secondary{background:#71717a;color:#fff}\n.bl-nav-kit__badge--success{background:#16a34a;color:#fff}\n.bl-nav-kit__badge--danger{background:#e5484d;color:#fff}\n.bl-nav-kit__badge--warning{background:#d97706;color:#fff}\n.bl-nav-kit__badge--info{background:#0889b2;color:#fff}\n.bl-nav-kit__badge--neutral-subtle{background:var(--theme-elevation-150,#e4e4e7);color:var(--theme-elevation-800,#27272a)}\n.bl-nav-kit__badge--neutral-strong{background:var(--theme-elevation-800,#27272a);color:var(--theme-elevation-0,#fff)}\n.bl-nav-kit__kicker{margin:0;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted,#989daa);font-weight:800}\n.bl-nav-kit__fold{border:1px solid var(--theme-elevation-150,#e4e4e7);overflow:visible;margin:0;min-width:0;color:var(--theme-elevation-800,#27272a)}\n.bl-nav-kit__fold--light{background:var(--theme-elevation-50,#f4f4f5);border-color:var(--theme-elevation-150,#e4e4e7);border-radius:12px}\n.bl-nav-kit__fold--dark{background:var(--theme-elevation-0,#fff);border-radius:10px}\n.bl-nav-kit__fold-head{padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--theme-elevation-150,#e4e4e7)}\n.bl-nav-kit__fold--light .bl-nav-kit__fold-head{background:var(--theme-elevation-100,#f4f4f5)}\n.bl-nav-kit__fold[data-open=\"false\"] .bl-nav-kit__fold-head{border-bottom:0}\n.bl-nav-kit__fold-toggle{flex:1;display:flex;align-items:center;gap:8px;min-width:0;border:0;background:transparent;padding:0;text-align:left;color:inherit;cursor:pointer;font:inherit}\n.bl-nav-kit__fold-chevron{flex:none;transition:transform .12s ease}\n.bl-nav-kit__fold[data-open=\"false\"] .bl-nav-kit__fold-chevron{transform:rotate(-90deg)}\n.bl-nav-kit__fold-title{font-size:13px;font-weight:700}\n.bl-nav-kit__fold-badge{font-size:11px;color:var(--theme-elevation-800,#27272a);background:var(--theme-elevation-150,#e4e4e7);border-radius:999px;padding:3px 8px}\n.bl-nav-kit__fold-toggle > small{color:var(--theme-elevation-500,#71717a)}\n.bl-nav-kit__fold-body{padding:16px}\n.bl-nav-kit__fold-body[hidden]{display:none}\n.bl-nav-kit__stack{display:flex;flex-direction:column;gap:12px}\n.bl-nav-kit__fold-menu{position:relative}\n.bl-nav-kit__fold-menu > button{border:0;background:transparent;color:inherit;cursor:pointer}\n.bl-nav-kit__fold-menu-pop{position:absolute;right:0;top:34px;z-index:12;min-width:140px;padding:4px;border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:8px;background:var(--theme-elevation-0,#fff)}\n.bl-nav-kit__fold-menu-pop button{display:block;width:100%;text-align:left;border:0;background:transparent;padding:7px 8px;border-radius:6px;color:var(--theme-elevation-800,#27272a);cursor:pointer}\n.bl-nav-kit__fold-menu-pop button:disabled{opacity:.45;cursor:not-allowed}\n`;\n\nexport function KitStyles() {\n return (\n <style href=\"bl-admin-ui\" precedence=\"default\">\n {CSS}\n </style>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { KitStyles } from \"./styles\";\n\nconst ACCENT = /^#[0-9A-Fa-f]{6}$/;\n\n/** A `#rrggbb` the kit may write onto `--bl-kit-accent`. Anything else is ignored. */\nexport function kitAccent(value: string | undefined): string | undefined {\n return value && ACCENT.test(value) ? value : undefined;\n}\n\n/**\n * Mount once around kit chrome. Primitives read these styles; they do not\n * inject them. Pass `accent` to set `--bl-kit-accent` on `:root` so portaled\n * dialogs and selects follow it. Sites can also set that variable themselves.\n */\nexport function KitProvider({\n children,\n accent,\n}: {\n children: ReactNode;\n accent?: string;\n}) {\n const hex = kitAccent(accent);\n return (\n <>\n <KitStyles />\n {hex ? (\n <style href=\"bl-admin-ui-accent\" precedence=\"high\">\n {`:root{--bl-kit-accent:${hex};--pink:${hex};--brand-primary:${hex}}`}\n </style>\n ) : null}\n {children}\n </>\n );\n}\n","import type { HTMLAttributes } from \"react\";\n\ntype FieldTag = \"label\" | \"div\";\n\n/** Stack a label above its control. The label class owns type; this owns the 8px gap. */\nexport function Field({\n as: Tag = \"label\",\n className,\n ...props\n}: HTMLAttributes<HTMLElement> & { as?: FieldTag }) {\n return <Tag className={[\"bl-nav-kit__field\", className].filter(Boolean).join(\" \")} {...props} />;\n}\n\n/** Visible field name. Sit this in `Field` above the control — do not restyle per screen. */\nexport function Label({ className, ...props }: HTMLAttributes<HTMLSpanElement>) {\n return <span className={[\"bl-nav-kit__label\", className].filter(Boolean).join(\" \")} {...props} />;\n}\n","import type { HTMLAttributes } from \"react\";\n\n/** Uppercase eyebrow. MainHead, the preview note, and later chrome all use this. */\nexport function Kicker({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={[\"bl-nav-kit__kicker\", className].filter(Boolean).join(\" \")} {...props} />;\n}\n","import { useState, type ReactNode } from \"react\";\n\nexport type FoldAction = {\n label: string;\n onClick: () => void;\n disabled?: boolean;\n danger?: boolean;\n};\n\nexport type FoldTone = \"light\" | \"dark\";\n\nexport function Fold({\n title,\n tone = \"light\",\n badge,\n meta,\n actions,\n defaultOpen = true,\n open: openProp,\n onOpenChange,\n className,\n children,\n}: {\n title: string;\n tone?: FoldTone;\n badge?: ReactNode;\n meta?: ReactNode | ((open: boolean) => ReactNode);\n actions?: FoldAction[];\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n className?: string;\n children?: ReactNode;\n}) {\n const controlled = openProp !== undefined;\n const [uncontrolled, setUncontrolled] = useState(defaultOpen);\n const [menu, setMenu] = useState(false);\n const open = controlled ? openProp : uncontrolled;\n\n function setOpen(next: boolean) {\n if (!controlled) setUncontrolled(next);\n onOpenChange?.(next);\n }\n\n const metaNode = typeof meta === \"function\" ? meta(open) : meta;\n const badgeNode =\n badge == null\n ? null\n : typeof badge === \"string\" || typeof badge === \"number\" ? (\n <span className=\"bl-nav-kit__fold-badge\">{badge}</span>\n ) : (\n badge\n );\n\n return (\n <section\n role=\"group\"\n aria-label={title}\n data-open={open ? \"true\" : \"false\"}\n className={[\"bl-nav-kit__fold\", `bl-nav-kit__fold--${tone}`, className].filter(Boolean).join(\" \")}\n >\n <div className=\"bl-nav-kit__fold-head\">\n <button\n type=\"button\"\n className=\"bl-nav-kit__fold-toggle\"\n aria-expanded={open}\n aria-label={open ? `Collapse ${title}` : `Expand ${title}`}\n onClick={() => setOpen(!open)}\n >\n <svg\n className=\"bl-nav-kit__fold-chevron\"\n viewBox=\"0 0 24 24\"\n width=\"14\"\n height=\"14\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n aria-hidden\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n <strong className=\"bl-nav-kit__fold-title\">{title}</strong>\n {badgeNode}\n {metaNode}\n </button>\n {actions?.length ? (\n <div className=\"bl-nav-kit__fold-menu\">\n <button type=\"button\" aria-label={`${title} actions`} onClick={() => setMenu((next) => !next)}>\n ⋯\n </button>\n {menu ? (\n <div className=\"bl-nav-kit__fold-menu-pop\">\n {actions.map((action) => (\n <button\n key={action.label}\n type=\"button\"\n disabled={action.disabled}\n className={action.danger ? \"bl-nav-kit__danger\" : undefined}\n onClick={() => {\n action.onClick();\n setMenu(false);\n }}\n >\n {action.label}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n <div className=\"bl-nav-kit__fold-body\" hidden={!open}>\n {children}\n </div>\n </section>\n );\n}\n","import type { HTMLAttributes } from \"react\";\n\n/** Vertical list with a locked gap — sections in a column, links in a section, and their add buttons. */\nexport function Stack({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={[\"bl-nav-kit__stack\", className].filter(Boolean).join(\" \")} {...props} />;\n}\n","import { useId, type ReactNode } from \"react\";\n\nimport { Button, type ButtonVariant } from \"./button\";\n\nexport type DialogConfirmVariant = Extract<ButtonVariant, \"primary\" | \"danger\">;\n\nexport function Dialog({\n open,\n title,\n children,\n cancelLabel = \"Cancel\",\n onCancel,\n confirmLabel,\n onConfirm,\n confirmVariant = \"primary\",\n confirmDisabled = false,\n}: {\n open: boolean;\n title: string;\n children: ReactNode;\n cancelLabel?: string;\n onCancel: () => void;\n confirmLabel?: string;\n onConfirm?: () => void;\n confirmVariant?: DialogConfirmVariant;\n confirmDisabled?: boolean;\n}) {\n const titleId = useId();\n if (!open) return null;\n return (\n <div className=\"bl-nav-kit__modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby={titleId}>\n <div className=\"bl-nav-kit__modal-card\">\n <h2 id={titleId}>{title}</h2>\n <div className=\"bl-nav-kit__modal-body\">{children}</div>\n <div className=\"bl-nav-kit__modal-actions\">\n <Button variant=\"outline\" onClick={onCancel}>\n {cancelLabel}\n </Button>\n {confirmLabel && onConfirm ? (\n <Button variant={confirmVariant} onClick={onConfirm} disabled={confirmDisabled}>\n {confirmLabel}\n </Button>\n ) : null}\n </div>\n </div>\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { Dialog, type DialogConfirmVariant } from \"./dialog\";\n\nexport function ConfirmDialog({\n open,\n title,\n children,\n cancelLabel,\n confirmLabel,\n onCancel,\n onConfirm,\n confirmVariant = \"primary\",\n}: {\n open: boolean;\n title: string;\n children: ReactNode;\n cancelLabel: string;\n confirmLabel: string;\n onCancel: () => void;\n onConfirm: () => void;\n confirmVariant?: DialogConfirmVariant;\n}) {\n return (\n <Dialog\n open={open}\n title={title}\n cancelLabel={cancelLabel}\n confirmLabel={confirmLabel}\n confirmVariant={confirmVariant}\n onCancel={onCancel}\n onConfirm={onConfirm}\n >\n <p>{children}</p>\n </Dialog>\n );\n}\n","import type { InputHTMLAttributes } from \"react\";\n\nexport function Input({ className, ...props }: InputHTMLAttributes<HTMLInputElement>) {\n return <input className={[\"bl-nav-kit__input\", className].filter(Boolean).join(\" \")} {...props} />;\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport { Switch as SwitchPrimitive } from \"radix-ui\";\n\nexport function Switch({ className, ...props }: ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root className={[\"bl-nav-kit__switch\", className].filter(Boolean).join(\" \")} {...props}>\n <SwitchPrimitive.Thumb className=\"bl-nav-kit__switch-thumb\" />\n </SwitchPrimitive.Root>\n );\n}\n","import type { TextareaHTMLAttributes } from \"react\";\n\nexport function Textarea({ className, ...props }: TextareaHTMLAttributes<HTMLTextAreaElement>) {\n return <textarea className={[\"bl-nav-kit__textarea\", className].filter(Boolean).join(\" \")} {...props} />;\n}\n","export type ItemKind = \"navLink\" | \"megaMenu\";\n\n/** Rail / type-card mark. The kit owns the badge; pass `kind` only. */\nexport function KindGlyph({ kind }: { kind: ItemKind }) {\n return (\n <span className=\"bl-nav-kit__glyph\" data-kind={kind} aria-hidden>\n {kind === \"megaMenu\" ? <MegaMark /> : <LinkMark />}\n </span>\n );\n}\n\nexport function LinkGlyph() {\n return <KindGlyph kind=\"navLink\" />;\n}\n\nexport function MegaGlyph() {\n return <KindGlyph kind=\"megaMenu\" />;\n}\n\nfunction LinkMark() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />\n </svg>\n );\n}\n\nfunction MegaMark() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n <path d=\"M15 3v18\" />\n </svg>\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport function TypeCards({\n compact,\n children,\n}: {\n compact?: boolean;\n children: ReactNode;\n}) {\n return (\n <div className={compact ? \"bl-nav-kit__types bl-nav-kit__types--compact\" : \"bl-nav-kit__types\"}>\n {children}\n </div>\n );\n}\n\nexport function TypeCard({\n icon,\n label,\n description,\n onClick,\n active,\n disabled,\n}: {\n icon?: ReactNode;\n label: string;\n description?: string;\n onClick: () => void;\n active?: boolean;\n disabled?: boolean;\n}) {\n return (\n <button\n type=\"button\"\n className={active ? \"bl-nav-kit__type is-active\" : \"bl-nav-kit__type\"}\n disabled={disabled}\n onClick={onClick}\n >\n <span className=\"bl-nav-kit__type-row\">\n {icon ? (\n <span className=\"bl-nav-kit__type-icon\" aria-hidden>\n {icon}\n </span>\n ) : null}\n {label}\n </span>\n {description ? <small>{description}</small> : null}\n </button>\n );\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\n\nexport const Select = SelectPrimitive.Root;\nexport const SelectValue = SelectPrimitive.Value;\n\nexport function SelectTrigger({\n children,\n ...props\n}: ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>) {\n return (\n <SelectPrimitive.Trigger className=\"bl-nav-kit__select-trigger\" {...props}>\n <span className=\"bl-nav-kit__select-value\">{children}</span>\n <span className=\"bl-nav-kit__select-chevron\" aria-hidden>\n <ChevronGlyph />\n </span>\n </SelectPrimitive.Trigger>\n );\n}\n\nexport function SelectContent({\n children,\n ...props\n}: ComponentPropsWithoutRef<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n className=\"bl-nav-kit__select-content\"\n position=\"popper\"\n sideOffset={6}\n {...props}\n >\n <SelectPrimitive.Viewport className=\"bl-nav-kit__select-viewport\">{children}</SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nexport function SelectItem({\n children,\n ...props\n}: ComponentPropsWithoutRef<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item className=\"bl-nav-kit__select-item\" {...props}>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className=\"bl-nav-kit__select-check\" aria-hidden>\n <CheckGlyph />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n}\n\nfunction ChevronGlyph() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n\nfunction CheckGlyph() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { Kicker } from \"./kicker\";\n\n/**\n * Presentational workspace chrome. Surfaces come from the adapter CSS\n * (Payload theme tokens). Field adapters own form writes.\n */\nexport function MainHead({\n kicker,\n title,\n description,\n children,\n}: {\n kicker?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n}) {\n return (\n <header className=\"bl-workspace__main-head\">\n <div>\n {kicker ? <Kicker>{kicker}</Kicker> : null}\n <h1>{title}</h1>\n {description ? <p>{description}</p> : null}\n </div>\n {children}\n </header>\n );\n}\n\n/** Aside chrome only. The adapter supplies children — nothing here is a link list. */\nexport function ItemRail({ children }: { children: ReactNode }) {\n return <aside className=\"bl-workspace__rail\">{children}</aside>;\n}\n\nexport function RailSlot({ children }: { children: ReactNode }) {\n return <div className=\"bl-workspace__rail-slot\">{children}</div>;\n}\n\nexport function Canvas({ children }: { children: ReactNode }) {\n return <div className=\"bl-workspace__canvas\">{children}</div>;\n}\n"],"mappings":";;;;;AAEA,MAAa,iBAAiB;CAC5B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;;AAcD,SAAgB,MAAM,EAAE,UAAU,kBAAkB,IAAI,WAAW,GAAG,SAAqB;CACzF,MAAM,MAAM,MAAM;AAClB,QACE,oBAAC,KAAD;EACE,WAAW;GAAC;GAAqB,sBAAsB;GAAW;GAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EACtG,GAAK,QAAQ,WAAW,EAAE,MAAM,UAAU,GAAG,EAAE;EAC/C,GAAI;EACJ,CAAA;;;;AC5BN,SAAgB,OAAO,EACrB,UAAU,WACV,WACA,OAAO,UACP,UACA,GAAG,SACqE;AACxE,QACE,oBAAC,UAAD;EACQ;EACN,WAAW;GAAC;GAAmB,oBAAoB;GAAW;GAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAClG,GAAI;EAEH;EACM,CAAA;;;;ACfb,SAAgB,SAAS,EACvB,WACA,GAAG,SACuD;AAC1D,QACE,oBAACA,WAAkB,MAAnB;EAAwB,WAAW,CAAC,wBAAwB,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAAE,GAAI;YACpG,oBAACA,WAAkB,WAAnB;GAA6B,WAAU;GAA4B,eAAA;aACjE,oBAAC,OAAD;IAAK,SAAQ;IAAY,MAAK;IAAO,eAAA;cACnC,oBAAC,QAAD;KACE,GAAE;KACF,QAAO;KACP,aAAY;KACZ,eAAc;KACd,gBAAe;KACf,CAAA;IACE,CAAA;GACsB,CAAA;EACP,CAAA;;;;ACpB7B,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiGZ,SAAgB,YAAY;AAC1B,QACE,oBAAC,SAAD;EAAO,MAAK;EAAc,YAAW;YAClC;EACK,CAAA;;;;ACjGZ,MAAM,SAAS;;AAGf,SAAgB,UAAU,OAA+C;AACvE,QAAO,SAAS,OAAO,KAAK,MAAM,GAAG,QAAQ,KAAA;;;;;;;AAQ/C,SAAgB,YAAY,EAC1B,UACA,UAIC;CACD,MAAM,MAAM,UAAU,OAAO;AAC7B,QACE,qBAAA,UAAA,EAAA,UAAA;EACE,oBAAC,WAAD,EAAa,CAAA;EACZ,MACC,oBAAC,SAAD;GAAO,MAAK;GAAqB,YAAW;aACzC,yBAAyB,IAAI,UAAU,IAAI,mBAAmB,IAAI;GAC7D,CAAA,GACN;EACH;EACA,EAAA,CAAA;;;;;AC5BP,SAAgB,MAAM,EACpB,IAAI,MAAM,SACV,WACA,GAAG,SAC+C;AAClD,QAAO,oBAAC,KAAD;EAAK,WAAW,CAAC,qBAAqB,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAAE,GAAI;EAAS,CAAA;;;AAIlG,SAAgB,MAAM,EAAE,WAAW,GAAG,SAA0C;AAC9E,QAAO,oBAAC,QAAD;EAAM,WAAW,CAAC,qBAAqB,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAAE,GAAI;EAAS,CAAA;;;;;ACZnG,SAAgB,OAAO,EAAE,WAAW,GAAG,SAA+C;AACpF,QAAO,oBAAC,KAAD;EAAG,WAAW,CAAC,sBAAsB,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAAE,GAAI;EAAS,CAAA;;;;ACOjG,SAAgB,KAAK,EACnB,OACA,OAAO,SACP,OACA,MACA,SACA,cAAc,MACd,MAAM,UACN,cACA,WACA,YAYC;CACD,MAAM,aAAa,aAAa,KAAA;CAChC,MAAM,CAAC,cAAc,mBAAmB,SAAS,YAAY;CAC7D,MAAM,CAAC,MAAM,WAAW,SAAS,MAAM;CACvC,MAAM,OAAO,aAAa,WAAW;CAErC,SAAS,QAAQ,MAAe;AAC9B,MAAI,CAAC,WAAY,iBAAgB,KAAK;AACtC,iBAAe,KAAK;;CAGtB,MAAM,WAAW,OAAO,SAAS,aAAa,KAAK,KAAK,GAAG;CAC3D,MAAM,YACJ,SAAS,OACL,OACA,OAAO,UAAU,YAAY,OAAO,UAAU,WAC5C,oBAAC,QAAD;EAAM,WAAU;YAA0B;EAAa,CAAA,GAEvD;AAGR,QACE,qBAAC,WAAD;EACE,MAAK;EACL,cAAY;EACZ,aAAW,OAAO,SAAS;EAC3B,WAAW;GAAC;GAAoB,qBAAqB;GAAQ;GAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;YAJnG,CAME,qBAAC,OAAD;GAAK,WAAU;aAAf,CACE,qBAAC,UAAD;IACE,MAAK;IACL,WAAU;IACV,iBAAe;IACf,cAAY,OAAO,YAAY,UAAU,UAAU;IACnD,eAAe,QAAQ,CAAC,KAAK;cAL/B;KAOE,oBAAC,OAAD;MACE,WAAU;MACV,SAAQ;MACR,OAAM;MACN,QAAO;MACP,MAAK;MACL,QAAO;MACP,aAAY;MACZ,eAAA;gBAEA,oBAAC,QAAD,EAAM,GAAE,gBAAiB,CAAA;MACrB,CAAA;KACN,oBAAC,UAAD;MAAQ,WAAU;gBAA0B;MAAe,CAAA;KAC1D;KACA;KACM;OACR,SAAS,SACR,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,oBAAC,UAAD;KAAQ,MAAK;KAAS,cAAY,GAAG,MAAM;KAAW,eAAe,SAAS,SAAS,CAAC,KAAK;eAAE;KAEtF,CAAA,EACR,OACC,oBAAC,OAAD;KAAK,WAAU;eACZ,QAAQ,KAAK,WACZ,oBAAC,UAAD;MAEE,MAAK;MACL,UAAU,OAAO;MACjB,WAAW,OAAO,SAAS,uBAAuB,KAAA;MAClD,eAAe;AACb,cAAO,SAAS;AAChB,eAAQ,MAAM;;gBAGf,OAAO;MACD,EAVF,OAAO,MAUL,CACT;KACE,CAAA,GACJ,KACA;QACJ,KACA;MACN,oBAAC,OAAD;GAAK,WAAU;GAAwB,QAAQ,CAAC;GAC7C;GACG,CAAA,CACE;;;;;;AC/Gd,SAAgB,MAAM,EAAE,WAAW,GAAG,SAAyC;AAC7E,QAAO,oBAAC,OAAD;EAAK,WAAW,CAAC,qBAAqB,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAAE,GAAI;EAAS,CAAA;;;;ACElG,SAAgB,OAAO,EACrB,MACA,OACA,UACA,cAAc,UACd,UACA,cACA,WACA,iBAAiB,WACjB,kBAAkB,SAWjB;CACD,MAAM,UAAU,OAAO;AACvB,KAAI,CAAC,KAAM,QAAO;AAClB,QACE,oBAAC,OAAD;EAAK,WAAU;EAAoB,MAAK;EAAS,cAAW;EAAO,mBAAiB;YAClF,qBAAC,OAAD;GAAK,WAAU;aAAf;IACE,oBAAC,MAAD;KAAI,IAAI;eAAU;KAAW,CAAA;IAC7B,oBAAC,OAAD;KAAK,WAAU;KAA0B;KAAe,CAAA;IACxD,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,oBAAC,QAAD;MAAQ,SAAQ;MAAU,SAAS;gBAChC;MACM,CAAA,EACR,gBAAgB,YACf,oBAAC,QAAD;MAAQ,SAAS;MAAgB,SAAS;MAAW,UAAU;gBAC5D;MACM,CAAA,GACP,KACA;;IACF;;EACF,CAAA;;;;ACzCV,SAAgB,cAAc,EAC5B,MACA,OACA,UACA,aACA,cACA,UACA,WACA,iBAAiB,aAUhB;AACD,QACE,oBAAC,QAAD;EACQ;EACC;EACM;EACC;EACE;EACN;EACC;YAEX,oBAAC,KAAD,EAAI,UAAa,CAAA;EACV,CAAA;;;;AChCb,SAAgB,MAAM,EAAE,WAAW,GAAG,SAAgD;AACpF,QAAO,oBAAC,SAAD;EAAO,WAAW,CAAC,qBAAqB,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAAE,GAAI;EAAS,CAAA;;;;ACApG,SAAgB,OAAO,EAAE,WAAW,GAAG,SAAgE;AACrG,QACE,oBAACC,SAAgB,MAAjB;EAAsB,WAAW,CAAC,sBAAsB,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAAE,GAAI;YAChG,oBAACA,SAAgB,OAAjB,EAAuB,WAAU,4BAA6B,CAAA;EACzC,CAAA;;;;ACL3B,SAAgB,SAAS,EAAE,WAAW,GAAG,SAAsD;AAC7F,QAAO,oBAAC,YAAD;EAAU,WAAW,CAAC,wBAAwB,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;EAAE,GAAI;EAAS,CAAA;;;;;ACA1G,SAAgB,UAAU,EAAE,QAA4B;AACtD,QACE,oBAAC,QAAD;EAAM,WAAU;EAAoB,aAAW;EAAM,eAAA;YAClD,SAAS,aAAa,oBAAC,UAAD,EAAY,CAAA,GAAG,oBAAC,UAAD,EAAY,CAAA;EAC7C,CAAA;;AAIX,SAAgB,YAAY;AAC1B,QAAO,oBAAC,WAAD,EAAW,MAAK,WAAY,CAAA;;AAGrC,SAAgB,YAAY;AAC1B,QAAO,oBAAC,WAAD,EAAW,MAAK,YAAa,CAAA;;AAGtC,SAAS,WAAW;AAClB,QACE,qBAAC,OAAD;EAAK,OAAM;EAA6B,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;EAAO,QAAO;EAAe,aAAY;EAAI,eAAc;EAAQ,gBAAe;YAA1K,CACE,oBAAC,QAAD,EAAM,GAAE,+DAAgE,CAAA,EACxE,oBAAC,QAAD,EAAM,GAAE,gEAAiE,CAAA,CACrE;;;AAIV,SAAS,WAAW;AAClB,QACE,qBAAC,OAAD;EAAK,OAAM;EAA6B,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;EAAO,QAAO;EAAe,aAAY;EAAI,eAAc;EAAQ,gBAAe;YAA1K;GACE,oBAAC,QAAD;IAAM,OAAM;IAAK,QAAO;IAAK,GAAE;IAAI,GAAE;IAAI,IAAG;IAAM,CAAA;GAClD,oBAAC,QAAD,EAAM,GAAE,WAAY,CAAA;GACpB,oBAAC,QAAD,EAAM,GAAE,YAAa,CAAA;GACjB;;;;;AChCV,SAAgB,UAAU,EACxB,SACA,YAIC;AACD,QACE,oBAAC,OAAD;EAAK,WAAW,UAAU,iDAAiD;EACxE;EACG,CAAA;;AAIV,SAAgB,SAAS,EACvB,MACA,OACA,aACA,SACA,QACA,YAQC;AACD,QACE,qBAAC,UAAD;EACE,MAAK;EACL,WAAW,SAAS,+BAA+B;EACzC;EACD;YAJX,CAME,qBAAC,QAAD;GAAM,WAAU;aAAhB,CACG,OACC,oBAAC,QAAD;IAAM,WAAU;IAAwB,eAAA;cACrC;IACI,CAAA,GACL,MACH,MACI;MACN,cAAc,oBAAC,SAAD,EAAA,UAAQ,aAAoB,CAAA,GAAG,KACvC;;;;;AC5Cb,MAAa,SAASC,SAAgB;AACtC,MAAa,cAAcA,SAAgB;AAE3C,SAAgB,cAAc,EAC5B,UACA,GAAG,SACwD;AAC3D,QACE,qBAACA,SAAgB,SAAjB;EAAyB,WAAU;EAA6B,GAAI;YAApE,CACE,oBAAC,QAAD;GAAM,WAAU;GAA4B;GAAgB,CAAA,EAC5D,oBAAC,QAAD;GAAM,WAAU;GAA6B,eAAA;aAC3C,oBAAC,cAAD,EAAgB,CAAA;GACX,CAAA,CACiB;;;AAI9B,SAAgB,cAAc,EAC5B,UACA,GAAG,SACwD;AAC3D,QACE,oBAACA,SAAgB,QAAjB,EAAA,UACE,oBAACA,SAAgB,SAAjB;EACE,WAAU;EACV,UAAS;EACT,YAAY;EACZ,GAAI;YAEJ,oBAACA,SAAgB,UAAjB;GAA0B,WAAU;GAA+B;GAAoC,CAAA;EAC/E,CAAA,EACH,CAAA;;AAI7B,SAAgB,WAAW,EACzB,UACA,GAAG,SACqD;AACxD,QACE,qBAACA,SAAgB,MAAjB;EAAsB,WAAU;EAA0B,GAAI;YAA9D,CACE,oBAACA,SAAgB,UAAjB,EAA2B,UAAoC,CAAA,EAC/D,oBAACA,SAAgB,eAAjB;GAA+B,WAAU;GAA2B,eAAA;aAClE,oBAAC,YAAD,EAAc,CAAA;GACgB,CAAA,CACX;;;AAI3B,SAAS,eAAe;AACtB,QACE,oBAAC,OAAD;EAAK,OAAM;EAA6B,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;EAAO,QAAO;EAAe,aAAY;EAAI,eAAc;EAAQ,gBAAe;YACxK,oBAAC,QAAD,EAAM,GAAE,gBAAiB,CAAA;EACrB,CAAA;;AAIV,SAAS,aAAa;AACpB,QACE,oBAAC,OAAD;EAAK,OAAM;EAA6B,OAAM;EAAK,QAAO;EAAK,SAAQ;EAAY,MAAK;EAAO,QAAO;EAAe,aAAY;EAAI,eAAc;EAAQ,gBAAe;YACxK,oBAAC,QAAD,EAAM,GAAE,mBAAoB,CAAA;EACxB,CAAA;;;;;;;;ACxDV,SAAgB,SAAS,EACvB,QACA,OACA,aACA,YAMC;AACD,QACE,qBAAC,UAAD;EAAQ,WAAU;YAAlB,CACE,qBAAC,OAAD,EAAA,UAAA;GACG,SAAS,oBAAC,QAAD,EAAA,UAAS,QAAgB,CAAA,GAAG;GACtC,oBAAC,MAAD,EAAA,UAAK,OAAW,CAAA;GACf,cAAc,oBAAC,KAAD,EAAA,UAAI,aAAgB,CAAA,GAAG;GAClC,EAAA,CAAA,EACL,SACM;;;;AAKb,SAAgB,SAAS,EAAE,YAAqC;AAC9D,QAAO,oBAAC,SAAD;EAAO,WAAU;EAAsB;EAAiB,CAAA;;AAGjE,SAAgB,SAAS,EAAE,YAAqC;AAC9D,QAAO,oBAAC,OAAD;EAAK,WAAU;EAA2B;EAAe,CAAA;;AAGlE,SAAgB,OAAO,EAAE,YAAqC;AAC5D,QAAO,oBAAC,OAAD;EAAK,WAAU;EAAwB;EAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["CheckboxPrimitive","SwitchPrimitive","SelectPrimitive"],"sources":["../src/badge.tsx","../src/button.tsx","../src/checkbox.tsx","../src/styles.tsx","../src/provider.tsx","../src/label.tsx","../src/kicker.tsx","../src/fold.tsx","../src/stack.tsx","../src/dialog.tsx","../src/confirm-dialog.tsx","../src/input.tsx","../src/switch.tsx","../src/textarea.tsx","../src/glyphs.tsx","../src/type-cards.tsx","../src/select.tsx","../src/workspace.tsx"],"sourcesContent":["import type { ButtonHTMLAttributes, HTMLAttributes } from \"react\";\n\nexport const BADGE_VARIANTS = [\n \"primary\",\n \"secondary\",\n \"success\",\n \"danger\",\n \"warning\",\n \"info\",\n \"neutral-subtle\",\n \"neutral-strong\",\n] as const;\n\nexport type BadgeVariant = (typeof BADGE_VARIANTS)[number];\n\ntype BadgeCommon = {\n variant?: BadgeVariant;\n className?: string;\n};\n\nexport type BadgeProps =\n | (BadgeCommon & { as?: \"span\" } & HTMLAttributes<HTMLSpanElement>)\n | (BadgeCommon & { as: \"button\" } & ButtonHTMLAttributes<HTMLButtonElement>);\n\n/** Pill status. Span by default; pass `as=\"button\"` for a clickable chip. Label case is the caller's. */\nexport function Badge({ variant = \"neutral-subtle\", as, className, ...props }: BadgeProps) {\n const Tag = as ?? \"span\";\n return (\n <Tag\n className={[\"bl-nav-kit__badge\", `bl-nav-kit__badge--${variant}`, className].filter(Boolean).join(\" \")}\n {...(Tag === \"button\" ? { type: \"button\" } : {})}\n {...props}\n />\n );\n}\n","import type { ButtonHTMLAttributes } from \"react\";\n\nexport type ButtonVariant = \"primary\" | \"secondary\" | \"outline\" | \"ghost\" | \"danger\";\n\nexport function Button({\n variant = \"primary\",\n className,\n type = \"button\",\n children,\n ...props\n}: ButtonHTMLAttributes<HTMLButtonElement> & { variant?: ButtonVariant }) {\n return (\n <button\n type={type}\n className={[\"bl-nav-kit__btn\", `bl-nav-kit__btn--${variant}`, className].filter(Boolean).join(\" \")}\n {...props}\n >\n {children}\n </button>\n );\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport { Checkbox as CheckboxPrimitive } from \"radix-ui\";\n\nexport function Checkbox({\n className,\n ...props\n}: ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root className={[\"bl-nav-kit__checkbox\", className].filter(Boolean).join(\" \")} {...props}>\n <CheckboxPrimitive.Indicator className=\"bl-nav-kit__checkbox-mark\" aria-hidden>\n <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden>\n <path\n d=\"M20 6 9 17l-5-5\"\n stroke=\"currentColor\"\n strokeWidth=\"2.25\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n","const CSS = `\n.bl-nav-kit__types{display:grid;grid-template-columns:1fr 1fr;gap:12px}\n.bl-nav-kit__types--compact{margin:0 0 10px;gap:6px}\n.bl-nav-kit__type{display:flex;flex-direction:column;align-items:stretch;gap:0;border:1px solid var(--theme-elevation-150,#e4e4e7);background:var(--theme-elevation-50,#f4f4f5);border-radius:10px;padding:16px;text-align:left;color:var(--theme-elevation-800,#27272a);cursor:pointer;font:inherit}\n.bl-nav-kit__type-row{display:flex;align-items:center;gap:12px;min-width:0}\n.bl-nav-kit__types--compact .bl-nav-kit__type{align-items:center;justify-content:center;border-radius:7px;padding:8px 6px;font-size:12px;background:var(--theme-elevation-0,#fff)}\n.bl-nav-kit__type small{display:block;margin-top:.3rem;color:var(--theme-elevation-500,#71717a);font-weight:400}\n.bl-nav-kit__type-icon{display:grid;place-items:center;width:2rem;height:2rem;border-radius:7px;background:var(--theme-elevation-150,#e4e4e7);flex:none}\n.bl-nav-kit__glyph{width:28px;height:28px;display:grid;place-items:center;border-radius:7px;background:var(--theme-elevation-150,#e4e4e7);color:var(--theme-elevation-800,#27272a);flex:none}\n.bl-nav-kit__glyph[data-kind=\"megaMenu\"]{background:color-mix(in srgb,var(--bl-kit-accent,#2563eb) 18%,var(--theme-elevation-0,#fff));color:var(--bl-kit-accent,#2563eb)}\n.bl-nav-kit__type-icon .bl-nav-kit__glyph{width:100%;height:100%;background:transparent;color:inherit}\n.bl-nav-kit__types--compact .bl-nav-kit__type-icon{width:1.25rem;height:1.25rem;background:transparent}\n.bl-nav-kit__type:hover{border-color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)))}\n.bl-nav-kit__type.is-active,.bl-nav-kit__types--compact .bl-nav-kit__type.is-active{border-color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)));background:color-mix(in srgb,var(--bl-kit-accent,#2563eb) 12%,var(--theme-elevation-0,#fff))}\n.bl-nav-kit__modal{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:var(--theme-overlay,rgba(0,0,0,.62));font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif;color:var(--theme-elevation-800,#27272a)}\n.bl-nav-kit__modal-card{width:min(36rem,calc(100vw - 2rem));background:var(--theme-elevation-0,#fff);border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:12px;padding:1.25rem 0 0;overflow:hidden;box-shadow:0 12px 32px rgba(0,0,0,.45)}\n.bl-nav-kit__modal-card h2{margin:0 1.25rem .75rem;font-size:18px}\n.bl-nav-kit__modal-card p{margin:0;color:var(--theme-elevation-500,#71717a)}\n.bl-nav-kit__modal-body{min-width:0;padding:0 1.25rem}\n.bl-nav-kit__modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1.25rem;padding:1rem 1.25rem;border-top:1px solid var(--theme-elevation-150,#e4e4e7)}\n.bl-nav-kit__danger{color:var(--theme-error-500,#ff7381)}\n.bl-nav-kit__btn{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 14px;border-radius:8px;font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif;font-weight:550;cursor:pointer}\n.bl-nav-kit__btn:disabled{opacity:.5;cursor:not-allowed}\n.bl-nav-kit__btn--primary{border:0;background:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)));color:#fff}\n.bl-nav-kit__btn--primary:hover{filter:brightness(1.08)}\n.bl-nav-kit__btn--secondary{border:0;background:var(--theme-elevation-800,#27272a);color:var(--theme-elevation-0,#fff)}\n.bl-nav-kit__btn--secondary:hover{filter:brightness(1.08)}\n.bl-nav-kit__btn--outline{border:1px solid var(--theme-elevation-250,#d4d4d8);background:transparent;color:var(--theme-elevation-800,#27272a)}\n.bl-nav-kit__btn--outline:hover{border-color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)))}\n.bl-nav-kit__btn--ghost{border:1px solid transparent;background:transparent;color:var(--theme-elevation-800,#27272a)}\n.bl-nav-kit__btn--ghost:hover{background:var(--theme-elevation-100,#f4f4f5)}\n.bl-nav-kit__btn--danger{border:1px solid var(--theme-error-500,#ff7381);background:color-mix(in srgb,var(--theme-error-500,#ff7381) 16%,var(--theme-elevation-0,#fff));color:var(--theme-error-500,#ff7381)}\n.bl-nav-kit__btn--danger:hover{background:color-mix(in srgb,var(--theme-error-500,#ff7381) 24%,var(--theme-elevation-0,#fff))}\n.bl-nav-kit__input,.bl-nav-kit__textarea{width:100%;min-height:38px;padding:8px 10px;border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:8px;background:var(--theme-input-bg,var(--theme-elevation-0,#fff));color:var(--theme-elevation-800,#27272a);font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif}\n.bl-nav-kit__textarea{min-height:5.5rem;resize:vertical}\n.bl-nav-kit__input:hover,.bl-nav-kit__textarea:hover,.bl-nav-kit__input:focus,.bl-nav-kit__textarea:focus{border-color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)));outline:none}\n.bl-nav-kit__input:disabled,.bl-nav-kit__textarea:disabled{opacity:.5;cursor:not-allowed}\n.bl-nav-kit__input::placeholder,.bl-nav-kit__textarea::placeholder{color:var(--theme-elevation-500,#71717a)}\n.bl-nav-kit__check{display:flex;align-items:center;gap:10px;font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif;color:var(--theme-elevation-800,#27272a);cursor:pointer}\n.bl-nav-kit__check:has(.bl-nav-kit__checkbox[data-disabled]){opacity:.5;cursor:not-allowed}\n.bl-nav-kit__checkbox{position:relative;width:18px;height:18px;flex:none;border:1px solid var(--theme-elevation-250,#a1a1aa);border-radius:3px;background:var(--theme-elevation-0,#fff);color:#fff;cursor:pointer;padding:0}\n.bl-nav-kit__checkbox:hover,.bl-nav-kit__checkbox[data-state=\"checked\"]{border-color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)))}\n.bl-nav-kit__checkbox[data-state=\"checked\"]{background:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)))}\n.bl-nav-kit__checkbox[data-disabled]{opacity:.5;cursor:not-allowed}\n.bl-nav-kit__checkbox-mark{position:absolute;inset:0;display:grid;place-items:center}\n.bl-nav-kit__checkbox-mark svg{width:12px;height:12px;display:block}\n.bl-nav-kit__switch{width:40px;height:22px;flex:none;padding:0;border:0;border-radius:999px;background:var(--theme-elevation-250,#d4d4d8);position:relative;cursor:pointer}\n.bl-nav-kit__switch[data-state=\"checked\"]{background:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)))}\n.bl-nav-kit__switch[data-disabled]{opacity:.5;cursor:not-allowed}\n.bl-nav-kit__switch-thumb{display:block;width:18px;height:18px;border-radius:999px;background:#fff;transform:translateX(2px);transition:transform .12s ease}\n.bl-nav-kit__switch[data-state=\"checked\"] .bl-nav-kit__switch-thumb{transform:translateX(20px)}\n.bl-nav-kit__select-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;box-sizing:border-box;min-height:38px;height:38px;padding:0 10px;border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:8px;background:var(--theme-input-bg,var(--theme-elevation-0,#fff));color:var(--theme-elevation-800,#27272a);font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:14px;text-align:left;cursor:pointer}\n.bl-nav-kit__select-trigger:hover,.bl-nav-kit__select-trigger[data-state=\"open\"]{border-color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)))}\n.bl-nav-kit__select-trigger[data-disabled]{opacity:.5;cursor:not-allowed}\n.bl-nav-kit__select-value{display:flex;align-items:center;flex:1;min-width:0;overflow:visible}\n.bl-nav-kit__select-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:20px;font-size:14px}\n.bl-nav-kit__select-chevron{flex:none;color:var(--theme-elevation-500,#71717a);display:grid;place-items:center}\n.bl-nav-kit__select-chevron svg{display:block}\n.bl-nav-kit__select-content{z-index:10050;min-width:var(--radix-select-trigger-width);background:var(--theme-elevation-0,#fff);border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:10px;padding:4px;box-shadow:0 12px 32px rgba(0,0,0,.45);color:var(--theme-elevation-800,#27272a);font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif}\n.bl-nav-kit__select-viewport{display:grid;gap:2px}\n.bl-nav-kit__select-item{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:7px;cursor:pointer;outline:none;font:inherit}\n.bl-nav-kit__select-item[data-highlighted],.bl-nav-kit__select-item[data-state=\"checked\"]{background:color-mix(in srgb,var(--bl-kit-accent,#2563eb) 12%,var(--theme-elevation-0,#fff))}\n.bl-nav-kit__select-item[data-disabled]{opacity:.45;pointer-events:none}\n.bl-nav-kit__select-check{flex:none;color:var(--bl-kit-accent,var(--brand-primary,var(--pink,#2563eb)));display:grid;place-items:center}\n.bl-nav-kit__field{display:flex;flex-direction:column;align-items:stretch;gap:8px;margin:0 0 16px}\n.bl-nav-kit__label{display:block;font:12px/1.2 Inter,ui-sans-serif,system-ui,sans-serif;font-weight:700;color:inherit}\n.bl-nav-kit__badge{display:inline-flex;align-items:center;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:10px;font-weight:700;line-height:1.2;padding:.32rem .55rem;border:0;border-radius:999px;background:transparent;color:inherit}\nbutton.bl-nav-kit__badge{cursor:pointer;font-family:Inter,ui-sans-serif,system-ui,sans-serif;font-size:10px;font-weight:700;line-height:1.2}\n.bl-nav-kit__badge--primary{background:var(--bl-kit-accent,var(--brand-primary,#2563eb));color:#fff}\n.bl-nav-kit__badge--secondary{background:#71717a;color:#fff}\n.bl-nav-kit__badge--success{background:#16a34a;color:#fff}\n.bl-nav-kit__badge--danger{background:#e5484d;color:#fff}\n.bl-nav-kit__badge--warning{background:#d97706;color:#fff}\n.bl-nav-kit__badge--info{background:#0889b2;color:#fff}\n.bl-nav-kit__badge--neutral-subtle{background:var(--theme-elevation-150,#e4e4e7);color:var(--theme-elevation-800,#27272a)}\n.bl-nav-kit__badge--neutral-strong{background:var(--theme-elevation-800,#27272a);color:var(--theme-elevation-0,#fff)}\n.bl-nav-kit__kicker{margin:0;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted,#989daa);font-weight:800}\n.bl-nav-kit__fold{border:1px solid var(--theme-elevation-150,#e4e4e7);overflow:visible;margin:0;min-width:0;color:var(--theme-elevation-800,#27272a)}\n.bl-nav-kit__fold--light{background:var(--theme-elevation-50,#f4f4f5);border-color:var(--theme-elevation-150,#e4e4e7);border-radius:12px}\n.bl-nav-kit__fold--dark{background:var(--theme-elevation-0,#fff);border-radius:10px}\n.bl-nav-kit__fold-head{padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--theme-elevation-150,#e4e4e7)}\n.bl-nav-kit__fold--light .bl-nav-kit__fold-head{background:var(--theme-elevation-100,#f4f4f5)}\n.bl-nav-kit__fold[data-open=\"false\"] .bl-nav-kit__fold-head{border-bottom:0}\n.bl-nav-kit__fold-toggle{flex:1;display:flex;align-items:center;gap:8px;min-width:0;border:0;background:transparent;padding:0;text-align:left;color:inherit;cursor:pointer;font:inherit}\n.bl-nav-kit__fold-chevron{flex:none;transition:transform .12s ease}\n.bl-nav-kit__fold[data-open=\"false\"] .bl-nav-kit__fold-chevron{transform:rotate(-90deg)}\n.bl-nav-kit__fold-title{font-size:13px;font-weight:700}\n.bl-nav-kit__fold-badge{font-size:11px;color:var(--theme-elevation-800,#27272a);background:var(--theme-elevation-150,#e4e4e7);border-radius:999px;padding:3px 8px}\n.bl-nav-kit__fold-toggle > small{color:var(--theme-elevation-500,#71717a)}\n.bl-nav-kit__fold-body{padding:16px}\n.bl-nav-kit__fold-body[hidden]{display:none}\n.bl-nav-kit__stack{display:flex;flex-direction:column;gap:12px}\n.bl-nav-kit__fold-menu{position:relative}\n.bl-nav-kit__fold-menu > button{border:0;background:transparent;color:inherit;cursor:pointer}\n.bl-nav-kit__fold-menu-pop{position:absolute;right:0;top:34px;z-index:12;min-width:140px;padding:4px;border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:8px;background:var(--theme-elevation-0,#fff)}\n.bl-nav-kit__fold-menu-pop button{display:block;width:100%;text-align:left;border:0;background:transparent;padding:7px 8px;border-radius:6px;color:var(--theme-elevation-800,#27272a);cursor:pointer}\n.bl-nav-kit__fold-menu-pop button:disabled{opacity:.45;cursor:not-allowed}\n.bl-nav-kit__picker{position:relative}\n.bl-nav-kit__picker-control{display:flex;align-items:center;gap:8px;min-height:38px;padding:8px 10px;border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:8px;background:var(--theme-input-bg,var(--theme-elevation-0,#fff));color:var(--theme-elevation-800,#27272a);font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif}\n.bl-nav-kit__picker-menu{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:20;margin:0;padding:4px;list-style:none;border:1px solid var(--theme-elevation-150,#e4e4e7);border-radius:10px;background:var(--theme-elevation-0,#fff);box-shadow:0 12px 32px rgba(0,0,0,.45)}\n.bl-nav-kit__picker-option{display:flex;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:7px;cursor:pointer;font:14px/1.45 Inter,ui-sans-serif,system-ui,sans-serif}\n.bl-nav-kit__picker-option[aria-selected=\"true\"]{background:color-mix(in srgb,var(--bl-kit-accent,#2563eb) 12%,var(--theme-elevation-0,#fff))}\n.bl-nav-kit__picker-path{color:var(--theme-elevation-500,#71717a);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}\n.bl-nav-kit__picker-address{display:flex;align-items:flex-start;gap:8px}\n.bl-nav-kit__picker-address .bl-nav-kit__input{flex:1}\n`;\n\nexport function KitStyles() {\n return (\n <style href=\"bl-admin-ui\" precedence=\"default\">\n {CSS}\n </style>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { KitStyles } from \"./styles\";\n\nconst ACCENT = /^#[0-9A-Fa-f]{6}$/;\n\n/** A `#rrggbb` the kit may write onto `--bl-kit-accent`. Anything else is ignored. */\nexport function kitAccent(value: string | undefined): string | undefined {\n return value && ACCENT.test(value) ? value : undefined;\n}\n\n/**\n * Mount once around kit chrome. Primitives read these styles; they do not\n * inject them. Pass `accent` to set `--bl-kit-accent` on `:root` so portaled\n * dialogs and selects follow it. Sites can also set that variable themselves.\n */\nexport function KitProvider({\n children,\n accent,\n}: {\n children: ReactNode;\n accent?: string;\n}) {\n const hex = kitAccent(accent);\n return (\n <>\n <KitStyles />\n {hex ? (\n <style href=\"bl-admin-ui-accent\" precedence=\"high\">\n {`:root{--bl-kit-accent:${hex};--pink:${hex};--brand-primary:${hex}}`}\n </style>\n ) : null}\n {children}\n </>\n );\n}\n","import type { HTMLAttributes } from \"react\";\n\ntype FieldTag = \"label\" | \"div\";\n\n/** Stack a label above its control. The label class owns type; this owns the 8px gap. */\nexport function Field({\n as: Tag = \"label\",\n className,\n ...props\n}: HTMLAttributes<HTMLElement> & { as?: FieldTag }) {\n return <Tag className={[\"bl-nav-kit__field\", className].filter(Boolean).join(\" \")} {...props} />;\n}\n\n/** Visible field name. Sit this in `Field` above the control — do not restyle per screen. */\nexport function Label({ className, ...props }: HTMLAttributes<HTMLSpanElement>) {\n return <span className={[\"bl-nav-kit__label\", className].filter(Boolean).join(\" \")} {...props} />;\n}\n","import type { HTMLAttributes } from \"react\";\n\n/** Uppercase eyebrow. MainHead, the preview note, and later chrome all use this. */\nexport function Kicker({ className, ...props }: HTMLAttributes<HTMLParagraphElement>) {\n return <p className={[\"bl-nav-kit__kicker\", className].filter(Boolean).join(\" \")} {...props} />;\n}\n","import { useState, type ReactNode } from \"react\";\n\nexport type FoldAction = {\n label: string;\n onClick: () => void;\n disabled?: boolean;\n danger?: boolean;\n};\n\nexport type FoldTone = \"light\" | \"dark\";\n\nexport function Fold({\n title,\n tone = \"light\",\n badge,\n meta,\n actions,\n defaultOpen = true,\n open: openProp,\n onOpenChange,\n className,\n children,\n}: {\n title: string;\n tone?: FoldTone;\n badge?: ReactNode;\n meta?: ReactNode | ((open: boolean) => ReactNode);\n actions?: FoldAction[];\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n className?: string;\n children?: ReactNode;\n}) {\n const controlled = openProp !== undefined;\n const [uncontrolled, setUncontrolled] = useState(defaultOpen);\n const [menu, setMenu] = useState(false);\n const open = controlled ? openProp : uncontrolled;\n\n function setOpen(next: boolean) {\n if (!controlled) setUncontrolled(next);\n onOpenChange?.(next);\n }\n\n const metaNode = typeof meta === \"function\" ? meta(open) : meta;\n const badgeNode =\n badge == null\n ? null\n : typeof badge === \"string\" || typeof badge === \"number\" ? (\n <span className=\"bl-nav-kit__fold-badge\">{badge}</span>\n ) : (\n badge\n );\n\n return (\n <section\n role=\"group\"\n aria-label={title}\n data-open={open ? \"true\" : \"false\"}\n className={[\"bl-nav-kit__fold\", `bl-nav-kit__fold--${tone}`, className].filter(Boolean).join(\" \")}\n >\n <div className=\"bl-nav-kit__fold-head\">\n <button\n type=\"button\"\n className=\"bl-nav-kit__fold-toggle\"\n aria-expanded={open}\n aria-label={open ? `Collapse ${title}` : `Expand ${title}`}\n onClick={() => setOpen(!open)}\n >\n <svg\n className=\"bl-nav-kit__fold-chevron\"\n viewBox=\"0 0 24 24\"\n width=\"14\"\n height=\"14\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n aria-hidden\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n <strong className=\"bl-nav-kit__fold-title\">{title}</strong>\n {badgeNode}\n {metaNode}\n </button>\n {actions?.length ? (\n <div className=\"bl-nav-kit__fold-menu\">\n <button type=\"button\" aria-label={`${title} actions`} onClick={() => setMenu((next) => !next)}>\n ⋯\n </button>\n {menu ? (\n <div className=\"bl-nav-kit__fold-menu-pop\">\n {actions.map((action) => (\n <button\n key={action.label}\n type=\"button\"\n disabled={action.disabled}\n className={action.danger ? \"bl-nav-kit__danger\" : undefined}\n onClick={() => {\n action.onClick();\n setMenu(false);\n }}\n >\n {action.label}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n <div className=\"bl-nav-kit__fold-body\" hidden={!open}>\n {children}\n </div>\n </section>\n );\n}\n","import type { HTMLAttributes } from \"react\";\n\n/** Vertical list with a locked gap — sections in a column, links in a section, and their add buttons. */\nexport function Stack({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={[\"bl-nav-kit__stack\", className].filter(Boolean).join(\" \")} {...props} />;\n}\n","import { useId, type ReactNode } from \"react\";\n\nimport { Button, type ButtonVariant } from \"./button\";\n\nexport type DialogConfirmVariant = Extract<ButtonVariant, \"primary\" | \"danger\">;\n\nexport function Dialog({\n open,\n title,\n children,\n cancelLabel = \"Cancel\",\n onCancel,\n confirmLabel,\n onConfirm,\n confirmVariant = \"primary\",\n confirmDisabled = false,\n}: {\n open: boolean;\n title: string;\n children: ReactNode;\n cancelLabel?: string;\n onCancel: () => void;\n confirmLabel?: string;\n onConfirm?: () => void;\n confirmVariant?: DialogConfirmVariant;\n confirmDisabled?: boolean;\n}) {\n const titleId = useId();\n if (!open) return null;\n return (\n <div className=\"bl-nav-kit__modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby={titleId}>\n <div className=\"bl-nav-kit__modal-card\">\n <h2 id={titleId}>{title}</h2>\n <div className=\"bl-nav-kit__modal-body\">{children}</div>\n <div className=\"bl-nav-kit__modal-actions\">\n <Button variant=\"outline\" onClick={onCancel}>\n {cancelLabel}\n </Button>\n {confirmLabel && onConfirm ? (\n <Button variant={confirmVariant} onClick={onConfirm} disabled={confirmDisabled}>\n {confirmLabel}\n </Button>\n ) : null}\n </div>\n </div>\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { Dialog, type DialogConfirmVariant } from \"./dialog\";\n\nexport function ConfirmDialog({\n open,\n title,\n children,\n cancelLabel,\n confirmLabel,\n onCancel,\n onConfirm,\n confirmVariant = \"primary\",\n}: {\n open: boolean;\n title: string;\n children: ReactNode;\n cancelLabel: string;\n confirmLabel: string;\n onCancel: () => void;\n onConfirm: () => void;\n confirmVariant?: DialogConfirmVariant;\n}) {\n return (\n <Dialog\n open={open}\n title={title}\n cancelLabel={cancelLabel}\n confirmLabel={confirmLabel}\n confirmVariant={confirmVariant}\n onCancel={onCancel}\n onConfirm={onConfirm}\n >\n <p>{children}</p>\n </Dialog>\n );\n}\n","import { forwardRef, type InputHTMLAttributes } from \"react\";\n\nexport const Input = forwardRef<HTMLInputElement, InputHTMLAttributes<HTMLInputElement>>(\n function Input({ className, ...props }, ref) {\n return <input ref={ref} className={[\"bl-nav-kit__input\", className].filter(Boolean).join(\" \")} {...props} />;\n },\n);\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport { Switch as SwitchPrimitive } from \"radix-ui\";\n\nexport function Switch({ className, ...props }: ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>) {\n return (\n <SwitchPrimitive.Root className={[\"bl-nav-kit__switch\", className].filter(Boolean).join(\" \")} {...props}>\n <SwitchPrimitive.Thumb className=\"bl-nav-kit__switch-thumb\" />\n </SwitchPrimitive.Root>\n );\n}\n","import type { TextareaHTMLAttributes } from \"react\";\n\nexport function Textarea({ className, ...props }: TextareaHTMLAttributes<HTMLTextAreaElement>) {\n return <textarea className={[\"bl-nav-kit__textarea\", className].filter(Boolean).join(\" \")} {...props} />;\n}\n","export type ItemKind = \"navLink\" | \"megaMenu\";\n\n/** Rail / type-card mark. The kit owns the badge; pass `kind` only. */\nexport function KindGlyph({ kind }: { kind: ItemKind }) {\n return (\n <span className=\"bl-nav-kit__glyph\" data-kind={kind} aria-hidden>\n {kind === \"megaMenu\" ? <MegaMark /> : <LinkMark />}\n </span>\n );\n}\n\nexport function LinkGlyph() {\n return <KindGlyph kind=\"navLink\" />;\n}\n\nexport function MegaGlyph() {\n return <KindGlyph kind=\"megaMenu\" />;\n}\n\nfunction LinkMark() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" />\n <path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" />\n </svg>\n );\n}\n\nfunction MegaMark() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" />\n <path d=\"M9 3v18\" />\n <path d=\"M15 3v18\" />\n </svg>\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport function TypeCards({\n compact,\n children,\n}: {\n compact?: boolean;\n children: ReactNode;\n}) {\n return (\n <div className={compact ? \"bl-nav-kit__types bl-nav-kit__types--compact\" : \"bl-nav-kit__types\"}>\n {children}\n </div>\n );\n}\n\nexport function TypeCard({\n icon,\n label,\n description,\n onClick,\n active,\n disabled,\n}: {\n icon?: ReactNode;\n label: string;\n description?: string;\n onClick: () => void;\n active?: boolean;\n disabled?: boolean;\n}) {\n return (\n <button\n type=\"button\"\n className={active ? \"bl-nav-kit__type is-active\" : \"bl-nav-kit__type\"}\n disabled={disabled}\n onClick={onClick}\n >\n <span className=\"bl-nav-kit__type-row\">\n {icon ? (\n <span className=\"bl-nav-kit__type-icon\" aria-hidden>\n {icon}\n </span>\n ) : null}\n {label}\n </span>\n {description ? <small>{description}</small> : null}\n </button>\n );\n}\n","import type { ComponentPropsWithoutRef } from \"react\";\nimport { Select as SelectPrimitive } from \"radix-ui\";\n\nexport const Select = SelectPrimitive.Root;\n\n/** Text-only closed face. For a swatch + label, put that row in `SelectTrigger` and skip this. */\nexport function SelectValue({\n className,\n ...props\n}: ComponentPropsWithoutRef<typeof SelectPrimitive.Value>) {\n return (\n <span className={[\"bl-nav-kit__select-label\", className].filter(Boolean).join(\" \")}>\n <SelectPrimitive.Value {...props} />\n </span>\n );\n}\n\nexport function SelectTrigger({\n children,\n className,\n ...props\n}: ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>) {\n return (\n <SelectPrimitive.Trigger\n className={[\"bl-nav-kit__select-trigger\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n <span className=\"bl-nav-kit__select-value\">{children}</span>\n <span className=\"bl-nav-kit__select-chevron\" aria-hidden>\n <ChevronGlyph />\n </span>\n </SelectPrimitive.Trigger>\n );\n}\n\nexport function SelectContent({\n children,\n className,\n ...props\n}: ComponentPropsWithoutRef<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n className={[\"bl-nav-kit__select-content\", className].filter(Boolean).join(\" \")}\n position=\"popper\"\n sideOffset={6}\n {...props}\n >\n <SelectPrimitive.Viewport className=\"bl-nav-kit__select-viewport\">{children}</SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n );\n}\n\nexport function SelectItem({\n children,\n className,\n ...props\n}: ComponentPropsWithoutRef<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n className={[\"bl-nav-kit__select-item\", className].filter(Boolean).join(\" \")}\n {...props}\n >\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className=\"bl-nav-kit__select-check\" aria-hidden>\n <CheckGlyph />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n );\n}\n\nfunction ChevronGlyph() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n\nfunction CheckGlyph() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <path d=\"M20 6 9 17l-5-5\" />\n </svg>\n );\n}\n","import type { ReactNode } from \"react\";\n\nimport { Kicker } from \"./kicker\";\n\n/**\n * Presentational workspace chrome. Surfaces come from the adapter CSS\n * (Payload theme tokens). Field adapters own form writes.\n */\nexport function MainHead({\n kicker,\n title,\n description,\n children,\n}: {\n kicker?: ReactNode;\n title: ReactNode;\n description?: ReactNode;\n children?: ReactNode;\n}) {\n return (\n <header className=\"bl-workspace__main-head\">\n <div>\n {kicker ? <Kicker>{kicker}</Kicker> : null}\n <h1>{title}</h1>\n {description ? <p>{description}</p> : null}\n </div>\n {children}\n </header>\n );\n}\n\n/** Aside chrome only. The adapter supplies children — nothing here is a link list. */\nexport function ItemRail({ children }: { children: ReactNode }) {\n return <aside className=\"bl-workspace__rail\">{children}</aside>;\n}\n\nexport function RailSlot({ children }: { children: ReactNode }) {\n return <div className=\"bl-workspace__rail-slot\">{children}</div>;\n}\n\nexport function Canvas({ children }: { children: ReactNode }) {\n return <div className=\"bl-workspace__canvas\">{children}</div>;\n}\n"],"mappings":"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"}
|