@conscia-labs/design-system 0.2.0 → 0.3.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.
@@ -6,6 +6,7 @@ import {
6
6
  CardHeader,
7
7
  CardTitle,
8
8
  Checkbox,
9
+ Input,
9
10
  Select,
10
11
  SelectContent,
11
12
  SelectGroup,
@@ -18,7 +19,7 @@ import {
18
19
  TableHead,
19
20
  TableHeader,
20
21
  TableRow
21
- } from "./chunk-YHPZ5CQU.js";
22
+ } from "./chunk-HLND6FZS.js";
22
23
  import {
23
24
  cn
24
25
  } from "./chunk-JU5DQXFC.js";
@@ -155,34 +156,15 @@ function Badge({
155
156
  return /* @__PURE__ */ jsx3("span", { "data-slot": "badge", className: cn(badgeVariants({ variant, className })), ...props });
156
157
  }
157
158
 
158
- // src/primitives/input.tsx
159
- import { jsx as jsx4 } from "react/jsx-runtime";
160
- function Input({ className, type, ...props }) {
161
- return /* @__PURE__ */ jsx4(
162
- "input",
163
- {
164
- type,
165
- "data-slot": "input",
166
- className: cn(
167
- "border-input bg-card flex h-[var(--ds-field-control-height)] w-full min-w-0 rounded-[var(--ds-field-control-radius)] border px-[var(--ds-field-control-padding-x)] py-2 text-base shadow-none transition-colors outline-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
168
- "focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
169
- "aria-invalid:border-danger aria-invalid:ring-danger/20 dark:aria-invalid:ring-danger/40",
170
- className
171
- ),
172
- ...props
173
- }
174
- );
175
- }
176
-
177
159
  // src/primitives/switch.tsx
178
160
  import * as SwitchPrimitive from "@radix-ui/react-switch";
179
- import { jsx as jsx5 } from "react/jsx-runtime";
161
+ import { jsx as jsx4 } from "react/jsx-runtime";
180
162
  function Switch({
181
163
  className,
182
164
  size = "default",
183
165
  ...props
184
166
  }) {
185
- return /* @__PURE__ */ jsx5(
167
+ return /* @__PURE__ */ jsx4(
186
168
  SwitchPrimitive.Root,
187
169
  {
188
170
  "data-slot": "switch",
@@ -192,7 +174,7 @@ function Switch({
192
174
  className
193
175
  ),
194
176
  ...props,
195
- children: /* @__PURE__ */ jsx5(
177
+ children: /* @__PURE__ */ jsx4(
196
178
  SwitchPrimitive.Thumb,
197
179
  {
198
180
  "data-slot": "switch-thumb",
@@ -204,9 +186,9 @@ function Switch({
204
186
  }
205
187
 
206
188
  // src/primitives/textarea.tsx
207
- import { jsx as jsx6 } from "react/jsx-runtime";
189
+ import { jsx as jsx5 } from "react/jsx-runtime";
208
190
  function Textarea({ className, ...props }) {
209
- return /* @__PURE__ */ jsx6(
191
+ return /* @__PURE__ */ jsx5(
210
192
  "textarea",
211
193
  {
212
194
  "data-slot": "textarea",
@@ -217,13 +199,13 @@ function Textarea({ className, ...props }) {
217
199
  }
218
200
 
219
201
  // src/primitives/compat.tsx
220
- import { jsx as jsx7, jsxs } from "react/jsx-runtime";
202
+ import { jsx as jsx6, jsxs } from "react/jsx-runtime";
221
203
  var ConsciaButton = Button;
222
204
  function ConsciaIconButton({
223
205
  size = "icon",
224
206
  ...props
225
207
  }) {
226
- return /* @__PURE__ */ jsx7(Button, { size, ...props });
208
+ return /* @__PURE__ */ jsx6(Button, { size, ...props });
227
209
  }
228
210
  var ConsciaCard = Card;
229
211
  var ConsciaCardContent = CardContent;
@@ -235,7 +217,7 @@ function ConsciaCardHeader({
235
217
  ...props
236
218
  }) {
237
219
  if (!actionRight) {
238
- return /* @__PURE__ */ jsx7(CardHeader, { className, ...props, children });
220
+ return /* @__PURE__ */ jsx6(CardHeader, { className, ...props, children });
239
221
  }
240
222
  return /* @__PURE__ */ jsxs(
241
223
  CardHeader,
@@ -246,8 +228,8 @@ function ConsciaCardHeader({
246
228
  ),
247
229
  ...props,
248
230
  children: [
249
- /* @__PURE__ */ jsx7("div", { className: "grid gap-2", children }),
250
- /* @__PURE__ */ jsx7("div", { className: "justify-self-end", children: actionRight })
231
+ /* @__PURE__ */ jsx6("div", { className: "grid gap-2", children }),
232
+ /* @__PURE__ */ jsx6("div", { className: "justify-self-end", children: actionRight })
251
233
  ]
252
234
  }
253
235
  );
@@ -271,12 +253,12 @@ var ConsciaTableHead = TableHead;
271
253
  var ConsciaTableRow = TableRow;
272
254
 
273
255
  // src/primitives/field.tsx
274
- import { jsx as jsx8 } from "react/jsx-runtime";
256
+ import { jsx as jsx7 } from "react/jsx-runtime";
275
257
  function Field({
276
258
  className,
277
259
  ...props
278
260
  }) {
279
- return /* @__PURE__ */ jsx8(
261
+ return /* @__PURE__ */ jsx7(
280
262
  "div",
281
263
  {
282
264
  "data-slot": "field",
@@ -289,7 +271,7 @@ function FieldGroup({
289
271
  className,
290
272
  ...props
291
273
  }) {
292
- return /* @__PURE__ */ jsx8(
274
+ return /* @__PURE__ */ jsx7(
293
275
  "div",
294
276
  {
295
277
  "data-slot": "field-group",
@@ -302,7 +284,7 @@ function FieldLabel({
302
284
  className,
303
285
  ...props
304
286
  }) {
305
- return /* @__PURE__ */ jsx8(
287
+ return /* @__PURE__ */ jsx7(
306
288
  "label",
307
289
  {
308
290
  "data-slot": "field-label",
@@ -315,7 +297,7 @@ function FieldDescription({
315
297
  className,
316
298
  ...props
317
299
  }) {
318
- return /* @__PURE__ */ jsx8(
300
+ return /* @__PURE__ */ jsx7(
319
301
  "p",
320
302
  {
321
303
  "data-slot": "field-description",
@@ -328,7 +310,7 @@ function FieldError({
328
310
  className,
329
311
  ...props
330
312
  }) {
331
- return /* @__PURE__ */ jsx8(
313
+ return /* @__PURE__ */ jsx7(
332
314
  "p",
333
315
  {
334
316
  "data-slot": "field-error",
@@ -340,7 +322,7 @@ function FieldError({
340
322
 
341
323
  // src/primitives/form-select.tsx
342
324
  import * as React from "react";
343
- import { jsx as jsx9, jsxs as jsxs2 } from "react/jsx-runtime";
325
+ import { jsx as jsx8, jsxs as jsxs2 } from "react/jsx-runtime";
344
326
  var emptyValue = "__conscia_empty_select_value__";
345
327
  function toSelectValue(value) {
346
328
  if (value === void 0) {
@@ -376,7 +358,7 @@ function FormSelect({
376
358
  }
377
359
  onValueChange?.(actualValue);
378
360
  }
379
- return /* @__PURE__ */ jsx9("div", { className: cn("min-w-0", className), onClick, children: /* @__PURE__ */ jsxs2(
361
+ return /* @__PURE__ */ jsx8("div", { className: cn("min-w-0", className), onClick, children: /* @__PURE__ */ jsxs2(
380
362
  Select,
381
363
  {
382
364
  name,
@@ -385,8 +367,8 @@ function FormSelect({
385
367
  disabled,
386
368
  onValueChange: handleValueChange,
387
369
  children: [
388
- /* @__PURE__ */ jsx9(SelectTrigger, { id, "aria-label": ariaLabel, className: triggerClassName, children: /* @__PURE__ */ jsx9(SelectValue, { placeholder }) }),
389
- /* @__PURE__ */ jsx9(SelectContent, { className: contentClassName, children: /* @__PURE__ */ jsx9(SelectGroup, { children: options.map((option) => /* @__PURE__ */ jsx9(
370
+ /* @__PURE__ */ jsx8(SelectTrigger, { id, "aria-label": ariaLabel, className: triggerClassName, children: /* @__PURE__ */ jsx8(SelectValue, { placeholder }) }),
371
+ /* @__PURE__ */ jsx8(SelectContent, { className: contentClassName, children: /* @__PURE__ */ jsx8(SelectGroup, { children: options.map((option) => /* @__PURE__ */ jsx8(
390
372
  SelectItem,
391
373
  {
392
374
  value: toSelectValue(option.value) ?? emptyValue,
@@ -403,12 +385,12 @@ var ConsciaFormSelect = FormSelect;
403
385
 
404
386
  // src/primitives/label.tsx
405
387
  import * as LabelPrimitive from "@radix-ui/react-label";
406
- import { jsx as jsx10 } from "react/jsx-runtime";
388
+ import { jsx as jsx9 } from "react/jsx-runtime";
407
389
  function Label({
408
390
  className,
409
391
  ...props
410
392
  }) {
411
- return /* @__PURE__ */ jsx10(
393
+ return /* @__PURE__ */ jsx9(
412
394
  LabelPrimitive.Root,
413
395
  {
414
396
  "data-slot": "label",
@@ -424,7 +406,7 @@ function Label({
424
406
  // src/primitives/searchable-select.tsx
425
407
  import * as React2 from "react";
426
408
  import { Check, ChevronsUpDown, Search, X } from "lucide-react";
427
- import { jsx as jsx11, jsxs as jsxs3 } from "react/jsx-runtime";
409
+ import { jsx as jsx10, jsxs as jsxs3 } from "react/jsx-runtime";
428
410
  function SearchableSelect({
429
411
  id,
430
412
  name,
@@ -521,10 +503,10 @@ function SearchableSelect({
521
503
  }
522
504
  }
523
505
  return /* @__PURE__ */ jsxs3("div", { ref: rootRef, "data-slot": "searchable-select", className: cn("relative min-w-0", className), children: [
524
- name ? /* @__PURE__ */ jsx11("input", { type: "hidden", name, value }) : null,
506
+ name ? /* @__PURE__ */ jsx10("input", { type: "hidden", name, value }) : null,
525
507
  /* @__PURE__ */ jsxs3("div", { className: "relative", children: [
526
- /* @__PURE__ */ jsx11(Search, { className: "pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground", "aria-hidden": "true" }),
527
- /* @__PURE__ */ jsx11(
508
+ /* @__PURE__ */ jsx10(Search, { className: "pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground", "aria-hidden": "true" }),
509
+ /* @__PURE__ */ jsx10(
528
510
  Input,
529
511
  {
530
512
  id,
@@ -558,7 +540,7 @@ function SearchableSelect({
558
540
  onKeyDown
559
541
  }
560
542
  ),
561
- clearable && value ? /* @__PURE__ */ jsx11(
543
+ clearable && value ? /* @__PURE__ */ jsx10(
562
544
  Button,
563
545
  {
564
546
  type: "button",
@@ -572,12 +554,12 @@ function SearchableSelect({
572
554
  onValueChange("");
573
555
  setSearch("");
574
556
  },
575
- children: /* @__PURE__ */ jsx11(X, {})
557
+ children: /* @__PURE__ */ jsx10(X, {})
576
558
  }
577
559
  ) : null,
578
- /* @__PURE__ */ jsx11(ChevronsUpDown, { className: "pointer-events-none absolute right-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground", "aria-hidden": "true" })
560
+ /* @__PURE__ */ jsx10(ChevronsUpDown, { className: "pointer-events-none absolute right-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground", "aria-hidden": "true" })
579
561
  ] }),
580
- open ? /* @__PURE__ */ jsx11(
562
+ open ? /* @__PURE__ */ jsx10(
581
563
  "div",
582
564
  {
583
565
  id: listboxId,
@@ -602,14 +584,14 @@ function SearchableSelect({
602
584
  onClick: () => select(option),
603
585
  children: [
604
586
  /* @__PURE__ */ jsxs3("span", { className: "grid min-w-0 flex-1 gap-0.5", children: [
605
- /* @__PURE__ */ jsx11("span", { className: "truncate font-medium", children: option.label }),
606
- option.description ? /* @__PURE__ */ jsx11("span", { className: "truncate text-[length:var(--ds-menu-label-size)] text-muted-foreground", children: option.description }) : null
587
+ /* @__PURE__ */ jsx10("span", { className: "truncate font-medium", children: option.label }),
588
+ option.description ? /* @__PURE__ */ jsx10("span", { className: "truncate text-[length:var(--ds-menu-label-size)] text-muted-foreground", children: option.description }) : null
607
589
  ] }),
608
- option.value === value ? /* @__PURE__ */ jsx11(Check, { className: "size-4 shrink-0 text-success-foreground", "aria-hidden": "true" }) : null
590
+ option.value === value ? /* @__PURE__ */ jsx10(Check, { className: "size-4 shrink-0 text-success-foreground", "aria-hidden": "true" }) : null
609
591
  ]
610
592
  },
611
593
  option.value
612
- )) : /* @__PURE__ */ jsx11("p", { className: "px-3 py-6 text-center text-[length:var(--ds-menu-item-size)] text-muted-foreground", children: emptyMessage })
594
+ )) : /* @__PURE__ */ jsx10("p", { className: "px-3 py-6 text-center text-[length:var(--ds-menu-item-size)] text-muted-foreground", children: emptyMessage })
613
595
  }
614
596
  ) : null
615
597
  ] });
@@ -625,7 +607,6 @@ export {
625
607
  AvatarFallback,
626
608
  badgeVariants,
627
609
  Badge,
628
- Input,
629
610
  Switch,
630
611
  Textarea,
631
612
  ConsciaButton,
@@ -661,4 +642,4 @@ export {
661
642
  Label,
662
643
  SearchableSelect
663
644
  };
664
- //# sourceMappingURL=chunk-CU3OXBFI.js.map
645
+ //# sourceMappingURL=chunk-VVTTFVCC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/primitives/alert.tsx","../src/primitives/avatar.tsx","../src/primitives/badge.tsx","../src/primitives/switch.tsx","../src/primitives/textarea.tsx","../src/primitives/compat.tsx","../src/primitives/field.tsx","../src/primitives/form-select.tsx","../src/primitives/label.tsx","../src/primitives/searchable-select.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\n\nconst alertVariants = cva(\n \"relative grid w-full grid-cols-[auto_1fr] items-start gap-x-3 rounded-[var(--ds-radius-surface)] border px-4 py-3.5 text-sm [&>svg]:mt-0.5 [&>svg]:size-5\",\n {\n variants: {\n variant: {\n default: \"border-border-default bg-card text-foreground\",\n information:\n \"border-information-border bg-information-background text-information-foreground\",\n success:\n \"border-success-border bg-success-background text-success-foreground\",\n warning:\n \"border-warning-border bg-warning-background text-warning-foreground\",\n danger: \"border-danger-border bg-danger-background text-danger-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nfunction Alert({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof alertVariants>) {\n return (\n <div\n data-slot=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AlertTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-title\"\n className={cn(\"font-medium leading-5\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\"col-start-2 mt-0.5 text-sm leading-5 opacity-80\", className)}\n {...props}\n />\n );\n}\n\nexport { Alert, AlertDescription, AlertTitle, alertVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\n\nimport { cn } from \"./utils\";\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\"relative flex size-8 shrink-0 overflow-hidden rounded-full\", className)}\n {...props}\n />\n );\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n );\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\"flex size-full items-center justify-center rounded-full bg-surface-muted text-xs font-medium text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport { Avatar, AvatarFallback, AvatarImage };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"./utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-md border px-1.5 py-0.5 text-[var(--ds-metadata)] font-medium leading-4 transition-colors\",\n {\n variants: {\n variant: {\n default: \"border-primary bg-primary text-primary-foreground\",\n accent: \"border-selection-border bg-selection-background text-selection-foreground\",\n secondary: \"border-neutral-border bg-neutral-background text-neutral-foreground\",\n neutral: \"border-neutral-border bg-neutral-background text-neutral-foreground\",\n outline: \"border-border-default text-foreground\",\n information: \"border-information-border bg-information-background text-information-foreground\",\n info: \"border-information-border bg-information-background text-information-foreground\",\n success: \"border-success-border bg-success-background text-success-foreground\",\n warning: \"border-warning-border bg-warning-background text-warning-foreground\",\n danger: \"border-danger-border bg-danger-background text-danger-foreground\",\n destructive: \"border-danger-border bg-danger-background text-danger-foreground\"\n }\n },\n defaultVariants: {\n variant: \"neutral\"\n }\n },\n);\n\nfunction Badge({\n className,\n variant,\n ...props\n}: React.ComponentProps<\"span\"> & VariantProps<typeof badgeVariants>) {\n return <span data-slot=\"badge\" className={cn(badgeVariants({ variant, className }))} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\n\nimport { cn } from \"./utils\";\n\nfunction Switch({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<typeof SwitchPrimitive.Root> & {\n size?: \"sm\" | \"default\";\n}) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n data-size={size}\n className={cn(\n \"peer group/switch inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80\",\n className,\n )}\n {...props}\n >\n <SwitchPrimitive.Thumb\n data-slot=\"switch-thumb\"\n className=\"pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0 dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground\"\n />\n </SwitchPrimitive.Root>\n );\n}\n\nexport { Switch };\n","import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\"min-h-28 w-full rounded-[var(--ds-field-control-radius)] border border-input bg-card px-[var(--ds-field-control-padding-x)] py-3 text-sm outline-none transition-colors placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50\", className)}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","import * as React from \"react\";\n\nimport { Button } from \"./button\";\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"./card\";\nimport { Checkbox } from \"./checkbox\";\nimport { Input } from \"./input\";\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"./select\";\nimport { Switch } from \"./switch\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"./table\";\nimport { Textarea } from \"./textarea\";\nimport { cn } from \"./utils\";\n\n/**\n * Temporary Admin UI migration aliases. New product code should import the\n * clean primitive names from @conscia-labs/design-system.\n */\nconst ConsciaButton = Button;\n\nfunction ConsciaIconButton({\n size = \"icon\",\n ...props\n}: React.ComponentProps<typeof Button>) {\n return <Button size={size} {...props} />;\n}\n\nconst ConsciaCard = Card;\nconst ConsciaCardContent = CardContent;\nconst ConsciaCardDescription = CardDescription;\n\nfunction ConsciaCardHeader({\n actionRight,\n className,\n children,\n ...props\n}: React.ComponentProps<typeof CardHeader> & {\n actionRight?: React.ReactNode;\n}) {\n if (!actionRight) {\n return (\n <CardHeader className={className} {...props}>\n {children}\n </CardHeader>\n );\n }\n\n return (\n <CardHeader\n className={cn(\n \"grid grid-cols-[minmax(0,1fr)_auto] items-start gap-4\",\n className,\n )}\n {...props}\n >\n <div className=\"grid gap-2\">{children}</div>\n <div className=\"justify-self-end\">{actionRight}</div>\n </CardHeader>\n );\n}\n\nconst ConsciaCardTitle = CardTitle;\nconst ConsciaCheckbox = Checkbox;\nconst ConsciaInput = Input;\nconst ConsciaSwitch = Switch;\nconst ConsciaTextarea = Textarea;\nconst ConsciaSelect = Select;\nconst ConsciaSelectContent = SelectContent;\nconst ConsciaSelectGroup = SelectGroup;\nconst ConsciaSelectItem = SelectItem;\nconst ConsciaSelectTrigger = SelectTrigger;\nconst ConsciaSelectValue = SelectValue;\nconst ConsciaTable = Table;\nconst ConsciaTableBody = TableBody;\nconst ConsciaTableCell = TableCell;\nconst ConsciaTableHeader = TableHeader;\nconst ConsciaTableHead = TableHead;\nconst ConsciaTableRow = TableRow;\n\nexport {\n ConsciaButton,\n ConsciaCard,\n ConsciaCardContent,\n ConsciaCardDescription,\n ConsciaCardHeader,\n ConsciaCardTitle,\n ConsciaCheckbox,\n ConsciaIconButton,\n ConsciaInput,\n ConsciaSwitch,\n ConsciaTextarea,\n ConsciaSelect,\n ConsciaSelectContent,\n ConsciaSelectGroup,\n ConsciaSelectItem,\n ConsciaSelectTrigger,\n ConsciaSelectValue,\n ConsciaTable,\n ConsciaTableBody,\n ConsciaTableCell,\n ConsciaTableHeader,\n ConsciaTableHead,\n ConsciaTableRow,\n};\n","import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nfunction Field({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field\"\n className={cn(\"grid gap-[var(--ds-field-label-gap)]\", className)}\n {...props}\n />\n );\n}\n\nfunction FieldGroup({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\"grid gap-[var(--ds-field-gap)]\", className)}\n {...props}\n />\n );\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"field-label\"\n className={cn(\"text-[length:var(--ds-field-label-size)] font-medium leading-[var(--ds-field-label-line-height)] text-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction FieldDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\"mt-[var(--ds-field-message-gap)] text-[var(--ds-metadata)] text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction FieldError({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-error\"\n className={cn(\"mt-[var(--ds-field-message-gap)] text-[var(--ds-metadata)] font-medium text-danger-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport { Field, FieldDescription, FieldError, FieldGroup, FieldLabel };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"./select\";\nimport { cn } from \"./utils\";\n\ntype FormSelectOption = {\n value: string;\n label: React.ReactNode;\n disabled?: boolean;\n};\n\ntype FormSelectProps = {\n id?: string;\n name?: string;\n value?: string;\n defaultValue?: string;\n required?: boolean;\n disabled?: boolean;\n placeholder?: string;\n options: FormSelectOption[];\n className?: string;\n triggerClassName?: string;\n contentClassName?: string;\n onValueChange?: (value: string) => void;\n onClick?: React.MouseEventHandler<HTMLDivElement>;\n \"aria-label\"?: string;\n};\n\nconst emptyValue = \"__conscia_empty_select_value__\";\n\nfunction toSelectValue(value: string | undefined) {\n if (value === undefined) {\n return undefined;\n }\n\n return value === \"\" ? emptyValue : value;\n}\n\nfunction fromSelectValue(value: string) {\n return value === emptyValue ? \"\" : value;\n}\n\nfunction FormSelect({\n name,\n id,\n value,\n defaultValue,\n required,\n disabled,\n placeholder,\n options,\n className,\n triggerClassName,\n contentClassName,\n onValueChange,\n onClick,\n \"aria-label\": ariaLabel,\n}: FormSelectProps) {\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? \"\");\n const currentValue = value ?? internalValue;\n\n function handleValueChange(nextValue: string) {\n const actualValue = fromSelectValue(nextValue);\n\n if (value === undefined) {\n setInternalValue(actualValue);\n }\n\n onValueChange?.(actualValue);\n }\n\n return (\n <div className={cn(\"min-w-0\", className)} onClick={onClick}>\n <Select\n name={name}\n value={toSelectValue(currentValue)}\n required={required}\n disabled={disabled}\n onValueChange={handleValueChange}\n >\n <SelectTrigger id={id} aria-label={ariaLabel} className={triggerClassName}>\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent className={contentClassName}>\n <SelectGroup>\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={toSelectValue(option.value) ?? emptyValue}\n disabled={option.disabled}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectGroup>\n </SelectContent>\n </Select>\n </div>\n );\n}\n\nconst ConsciaFormSelect = FormSelect;\n\nexport { ConsciaFormSelect, FormSelect };\nexport type { FormSelectOption, FormSelectProps };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\n\nimport { cn } from \"./utils\";\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-[length:var(--ds-field-label-size)] font-medium leading-[var(--ds-field-label-line-height)] text-foreground select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Label };\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Check, ChevronsUpDown, Search, X } from \"lucide-react\";\n\nimport { Button } from \"./button\";\nimport { Input } from \"./input\";\nimport { cn } from \"./utils\";\n\ntype SearchableSelectOption = {\n value: string;\n label: string;\n description?: string;\n keywords?: string[];\n disabled?: boolean;\n};\n\ntype SearchableSelectProps = {\n id?: string;\n name?: string;\n value?: string;\n options: SearchableSelectOption[];\n onValueChange: (value: string) => void;\n placeholder?: string;\n searchPlaceholder?: string;\n emptyMessage?: string;\n disabled?: boolean;\n clearable?: boolean;\n clearLabel?: string;\n optionsLabel?: string;\n className?: string;\n \"aria-label\"?: string;\n};\n\nfunction SearchableSelect({\n id,\n name,\n value = \"\",\n options,\n onValueChange,\n placeholder = \"Select an option\",\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No matching options.\",\n disabled = false,\n clearable = false,\n clearLabel = \"Clear selection\",\n optionsLabel,\n className,\n \"aria-label\": ariaLabel,\n}: SearchableSelectProps) {\n const generatedId = React.useId();\n const listboxId = `${id ?? generatedId}-listbox`;\n const rootRef = React.useRef<HTMLDivElement>(null);\n const activeOptionRef = React.useRef<HTMLButtonElement>(null);\n const [open, setOpen] = React.useState(false);\n const [search, setSearch] = React.useState(\"\");\n const [activeIndex, setActiveIndex] = React.useState(0);\n const selected = options.find((option) => option.value === value);\n const normalizedSearch = search.trim().toLowerCase();\n const filteredOptions = normalizedSearch\n ? options.filter((option) =>\n [option.label, option.description, ...(option.keywords ?? [])]\n .filter(Boolean)\n .join(\" \")\n .toLowerCase()\n .includes(normalizedSearch),\n )\n : options;\n const enabledIndexes = filteredOptions.reduce<number[]>((indexes, option, index) => {\n if (!option.disabled) {\n indexes.push(index);\n }\n\n return indexes;\n }, []);\n const resolvedActiveIndex = enabledIndexes.includes(activeIndex)\n ? activeIndex\n : (enabledIndexes[0] ?? -1);\n\n React.useEffect(() => {\n if (!open) {\n return;\n }\n\n function closeWhenOutside(event: PointerEvent) {\n if (!rootRef.current?.contains(event.target as Node)) {\n setOpen(false);\n setSearch(\"\");\n }\n }\n document.addEventListener(\"pointerdown\", closeWhenOutside);\n return () => document.removeEventListener(\"pointerdown\", closeWhenOutside);\n }, [open]);\n\n React.useEffect(() => {\n if (open) {\n activeOptionRef.current?.scrollIntoView({ block: \"nearest\" });\n }\n }, [open, resolvedActiveIndex]);\n\n function select(option: SearchableSelectOption) {\n if (option.disabled) {\n return;\n }\n\n onValueChange(option.value);\n setSearch(\"\");\n setOpen(false);\n }\n\n function onKeyDown(event: React.KeyboardEvent<HTMLInputElement>) {\n if (event.key === \"ArrowDown\") {\n event.preventDefault();\n setOpen(true);\n setActiveIndex((current) => {\n const position = enabledIndexes.indexOf(current);\n return enabledIndexes[Math.min(enabledIndexes.length - 1, position + 1)] ?? -1;\n });\n } else if (event.key === \"ArrowUp\") {\n event.preventDefault();\n setOpen(true);\n setActiveIndex((current) => {\n const position = enabledIndexes.indexOf(current);\n return enabledIndexes[Math.max(0, position === -1 ? 0 : position - 1)] ?? -1;\n });\n } else if (event.key === \"Home\") {\n event.preventDefault();\n setOpen(true);\n setActiveIndex(enabledIndexes[0] ?? -1);\n } else if (event.key === \"End\") {\n event.preventDefault();\n setOpen(true);\n setActiveIndex(enabledIndexes.at(-1) ?? -1);\n } else if (event.key === \"Enter\" && open && filteredOptions[resolvedActiveIndex]) {\n event.preventDefault();\n select(filteredOptions[resolvedActiveIndex]);\n } else if (event.key === \"Escape\") {\n setOpen(false);\n setSearch(\"\");\n } else if (event.key === \"Tab\") {\n setOpen(false);\n setSearch(\"\");\n }\n }\n\n return (\n <div ref={rootRef} data-slot=\"searchable-select\" className={cn(\"relative min-w-0\", className)}>\n {name ? <input type=\"hidden\" name={name} value={value} /> : null}\n <div className=\"relative\">\n <Search className=\"pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground\" aria-hidden=\"true\" />\n <Input\n id={id}\n role=\"combobox\"\n aria-label={ariaLabel}\n aria-autocomplete=\"list\"\n aria-expanded={open}\n aria-controls={open ? listboxId : undefined}\n aria-activedescendant={open && filteredOptions[resolvedActiveIndex] ? `${listboxId}-${resolvedActiveIndex}` : undefined}\n autoComplete=\"off\"\n className=\"px-9\"\n disabled={disabled}\n placeholder={open ? searchPlaceholder : placeholder}\n value={open ? search : selected?.label ?? \"\"}\n onFocus={(event) => {\n setOpen(true);\n setSearch(\"\");\n event.currentTarget.select();\n }}\n onClick={() => {\n if (!open) {\n setOpen(true);\n setSearch(\"\");\n }\n }}\n onChange={(event) => {\n setSearch(event.target.value);\n setOpen(true);\n setActiveIndex(0);\n }}\n onKeyDown={onKeyDown}\n />\n {clearable && value ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n disabled={disabled}\n className=\"absolute right-8 top-1/2 -translate-y-1/2\"\n aria-label={clearLabel}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => {\n onValueChange(\"\");\n setSearch(\"\");\n }}\n >\n <X />\n </Button>\n ) : null}\n <ChevronsUpDown className=\"pointer-events-none absolute right-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground\" aria-hidden=\"true\" />\n </div>\n\n {open ? (\n <div\n id={listboxId}\n role=\"listbox\"\n aria-label={optionsLabel ?? (ariaLabel ? `${ariaLabel} options` : \"Options\")}\n className=\"absolute z-50 mt-1 max-h-72 w-full overflow-y-auto rounded-md border border-border-subtle bg-popover p-1 text-popover-foreground shadow-md\"\n >\n {filteredOptions.length ? filteredOptions.map((option, index) => (\n <button\n key={option.value}\n id={`${listboxId}-${index}`}\n type=\"button\"\n role=\"option\"\n aria-selected={option.value === value}\n aria-disabled={option.disabled || undefined}\n disabled={option.disabled}\n tabIndex={-1}\n ref={index === resolvedActiveIndex ? activeOptionRef : undefined}\n data-active={index === resolvedActiveIndex}\n className=\"flex w-full items-center gap-3 rounded-sm px-3 py-2 text-left text-[length:var(--ds-menu-item-size)] outline-none hover:bg-surface-muted focus-visible:bg-surface-muted data-[active=true]:bg-surface-muted disabled:pointer-events-none disabled:opacity-50\"\n onMouseDown={(event) => event.preventDefault()}\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => select(option)}\n >\n <span className=\"grid min-w-0 flex-1 gap-0.5\">\n <span className=\"truncate font-medium\">{option.label}</span>\n {option.description ? <span className=\"truncate text-[length:var(--ds-menu-label-size)] text-muted-foreground\">{option.description}</span> : null}\n </span>\n {option.value === value ? <Check className=\"size-4 shrink-0 text-success-foreground\" aria-hidden=\"true\" /> : null}\n </button>\n )) : <p className=\"px-3 py-6 text-center text-[length:var(--ds-menu-item-size)] text-muted-foreground\">{emptyMessage}</p>}\n </div>\n ) : null}\n </div>\n );\n}\n\nexport { SearchableSelect };\nexport type { SearchableSelectOption, SearchableSelectProps };\n"],"mappings":"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","names":["jsx","cva","jsx","cva","jsx","jsx","jsx","jsx","jsx","jsxs","jsx","React","jsx","jsxs"]}
@@ -117,6 +117,24 @@
117
117
  --sidebar-active-foreground: #ffffff;
118
118
  --sidebar-active-indicator: #7f8ae8;
119
119
  --sidebar-border: rgb(255 255 255 / 8%);
120
+ /*
121
+ * Sidebar semantics intentionally sit on top of the existing palette. The
122
+ * legacy aliases above remain the compatibility surface for consumers that
123
+ * still use bg-sidebar and text-sidebar-foreground.
124
+ */
125
+ --sidebar-canvas: var(--sidebar);
126
+ --sidebar-header: var(--sidebar);
127
+ --sidebar-content: var(--sidebar);
128
+ --sidebar-hover: var(--sidebar-accent);
129
+ --sidebar-primary-text: var(--sidebar-foreground);
130
+ --sidebar-secondary-text: color-mix(in oklab, var(--sidebar-foreground) 78%, transparent);
131
+ --sidebar-metadata-text: color-mix(in oklab, var(--sidebar-foreground) 62%, transparent);
132
+ --sidebar-icon: color-mix(in oklab, var(--sidebar-foreground) 72%, transparent);
133
+ --sidebar-search: var(--sidebar-accent);
134
+ --sidebar-footer: var(--sidebar);
135
+ --sidebar-group-label: color-mix(in oklab, var(--sidebar-foreground) 72%, transparent);
136
+ --sidebar-group-count: color-mix(in oklab, var(--sidebar-foreground) 62%, transparent);
137
+ --sidebar-focus-ring: var(--ring);
120
138
  --font-sans: "Saans", "Inter", "Aptos", "Segoe UI", Arial, sans-serif;
121
139
  --ds-space-inline: 0.5rem;
122
140
  --ds-space-control: 0.625rem;
@@ -139,7 +157,16 @@
139
157
  --ds-control-height-sm: 2rem;
140
158
  --ds-control-height-lg: 2.75rem;
141
159
  --ds-control-padding-x: 1rem;
160
+ --ds-sidebar-width: 16rem;
161
+ --ds-sidebar-width-mobile: 18rem;
142
162
  --ds-sidebar-item-height: 2.25rem;
163
+ --ds-sidebar-item-height-touch: 2.75rem;
164
+ --ds-sidebar-header-height: 3.5rem;
165
+ --ds-sidebar-content-padding-x: 0.625rem;
166
+ --ds-sidebar-content-padding-y: 0.75rem;
167
+ --ds-sidebar-footer-padding: 0.625rem;
168
+ --ds-sidebar-group-gap: 0.25rem;
169
+ --ds-sidebar-group-label-size: 0.75rem;
143
170
  --ds-surface-padding: 1.25rem;
144
171
  --ds-table-header-height: 2.25rem;
145
172
  --ds-row-height: 2.75rem;
@@ -170,6 +197,8 @@
170
197
  --ds-control-height-sm: 1.75rem;
171
198
  --ds-control-height-lg: 2.25rem;
172
199
  --ds-control-padding-x: 0.75rem;
200
+ --ds-sidebar-width: 15rem;
201
+ --ds-sidebar-width-mobile: 17rem;
173
202
  --ds-sidebar-item-height: 2rem;
174
203
  --ds-surface-padding: 1rem;
175
204
  --ds-table-header-height: 2rem;
@@ -259,10 +288,53 @@
259
288
  --sidebar-active-foreground: #ffffff;
260
289
  --sidebar-active-indicator: #7c86df;
261
290
  --sidebar-border: rgb(255 255 255 / 8%);
291
+ --sidebar-canvas: var(--sidebar);
292
+ --sidebar-header: var(--sidebar);
293
+ --sidebar-content: var(--sidebar);
294
+ --sidebar-hover: var(--sidebar-accent);
295
+ --sidebar-primary-text: var(--sidebar-foreground);
296
+ --sidebar-secondary-text: color-mix(in oklab, var(--sidebar-foreground) 78%, transparent);
297
+ --sidebar-metadata-text: color-mix(in oklab, var(--sidebar-foreground) 62%, transparent);
298
+ --sidebar-icon: color-mix(in oklab, var(--sidebar-foreground) 72%, transparent);
299
+ --sidebar-search: var(--sidebar-accent);
300
+ --sidebar-footer: var(--sidebar);
301
+ --sidebar-group-label: color-mix(in oklab, var(--sidebar-foreground) 72%, transparent);
302
+ --sidebar-group-count: color-mix(in oklab, var(--sidebar-foreground) 62%, transparent);
303
+ --sidebar-focus-ring: var(--ring);
262
304
  --ds-shadow-raised: 0 1px 2px rgb(0 0 0 / 28%);
263
305
  --ds-shadow-floating: 0 16px 32px rgb(0 0 0 / 34%);
264
306
  }
265
307
 
308
+ /*
309
+ * Light sidebars use the same semantic surface family as the rest of the
310
+ * light theme. The variant is scoped to the sidebar so an application can
311
+ * keep a dark sidebar by default and opt into this hierarchy per shell.
312
+ */
313
+ [data-sidebar-variant="light"],
314
+ :root:not(.dark):not([data-appearance="dark"])
315
+ [data-sidebar-variant="auto"] {
316
+ --sidebar: var(--surface-muted);
317
+ --sidebar-foreground: var(--text-primary);
318
+ --sidebar-accent: var(--surface-raised);
319
+ --sidebar-active: var(--accent-background);
320
+ --sidebar-active-foreground: var(--selection-foreground);
321
+ --sidebar-active-indicator: var(--selection-indicator);
322
+ --sidebar-border: var(--border-subtle);
323
+ --sidebar-canvas: var(--surface-muted);
324
+ --sidebar-header: var(--surface);
325
+ --sidebar-content: var(--surface-muted);
326
+ --sidebar-hover: var(--surface-raised);
327
+ --sidebar-primary-text: var(--text-primary);
328
+ --sidebar-secondary-text: var(--text-secondary);
329
+ --sidebar-metadata-text: var(--text-supporting);
330
+ --sidebar-icon: var(--text-secondary);
331
+ --sidebar-search: var(--surface-raised);
332
+ --sidebar-footer: var(--surface);
333
+ --sidebar-group-label: var(--text-secondary);
334
+ --sidebar-group-count: var(--text-supporting);
335
+ --sidebar-focus-ring: var(--border-focus);
336
+ }
337
+
266
338
  @theme inline {
267
339
  --radius-sm: calc(var(--radius) - 4px);
268
340
  --radius-md: calc(var(--radius) - 2px);
@@ -341,6 +413,19 @@
341
413
  --color-sidebar-accent: var(--sidebar-accent);
342
414
  --color-sidebar-active: var(--sidebar-active);
343
415
  --color-sidebar-active-foreground: var(--sidebar-active-foreground);
416
+ --color-sidebar-canvas: var(--sidebar-canvas);
417
+ --color-sidebar-header: var(--sidebar-header);
418
+ --color-sidebar-content: var(--sidebar-content);
419
+ --color-sidebar-hover: var(--sidebar-hover);
420
+ --color-sidebar-primary-text: var(--sidebar-primary-text);
421
+ --color-sidebar-secondary-text: var(--sidebar-secondary-text);
422
+ --color-sidebar-metadata-text: var(--sidebar-metadata-text);
423
+ --color-sidebar-icon: var(--sidebar-icon);
424
+ --color-sidebar-search: var(--sidebar-search);
425
+ --color-sidebar-footer: var(--sidebar-footer);
426
+ --color-sidebar-group-label: var(--sidebar-group-label);
427
+ --color-sidebar-group-count: var(--sidebar-group-count);
428
+ --color-sidebar-focus-ring: var(--sidebar-focus-ring);
344
429
  --color-sidebar-border: var(--sidebar-border);
345
430
  --font-sans: var(--font-sans);
346
431
  }
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { ConsciaAppearance, ConsciaDensity, appearanceOptions, applyConsciaPreferences, densityOptions } from './foundation/index.js';
2
- export { ActivityItem, ActivityItemProps, ActivityList, AppShell, AppSidebar, AppSidebarContent, AppSidebarFooter, AppSidebarHeader, AppearanceControl, CodeBlock, CodeBlockProps, CodeBlockSnippet, ConfirmationDialog, ConfirmationDialogProps, DataTable, DataTableColumn, DataTableProps, DensityControl, DesignPreferenceControls, DesignSystemPreferenceSync, DetailBackLink, DetailBackLinkProps, DetailSection, DetailSectionProps, DetailSections, EntityTable, EntityTableColumn, EntityTableProps, ErrorState, InspectorRegion, InventoryDesktop, InventoryMobile, InventorySurface, KeyValueItem, KeyValueList, LoadingRows, MainRegion, MetricBand, MetricBandItem, MetricBandItemProps, MetricBandProps, NavigationGroup, NavigationItem, NavigationSubItem, NavigationSubList, PageBoundary, PageContent, PageFrame, PageHeader, PageHeaderProps, PageToolbar, PageToolbarProps, PaginationControls, PaginationControlsProps, ProductIdentity, ProviderMark, ProviderMarkProps, ResourceSummary, ResourceSummaryProps, SidebarNavigation, SidebarNavigationEntry, SidebarNavigationItem, SidebarNavigationLinkProps, SidebarNavigationSection, SidebarSeparator, SidebarTrigger, StateView, StateViewProps, TopBar, ValueMeter, ValueMeterProps, useAppShell, useConsciaPreferences } from './patterns/index.js';
3
- export { Alert, AlertDescription, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, ConsciaButton, ConsciaCard, ConsciaCardContent, ConsciaCardDescription, ConsciaCardHeader, ConsciaCardTitle, ConsciaCheckbox, ConsciaFormSelect, ConsciaIconButton, ConsciaInput, ConsciaSelect, ConsciaSelectContent, ConsciaSelectGroup, ConsciaSelectItem, ConsciaSelectTrigger, ConsciaSelectValue, ConsciaSwitch, ConsciaTable, ConsciaTableBody, ConsciaTableCell, ConsciaTableHead, ConsciaTableHeader, ConsciaTableRow, ConsciaTextarea, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Field, FieldDescription, FieldError, FieldGroup, FieldLabel, FormSelect, FormSelectOption, FormSelectProps, Input, Label, NavigationTab, NavigationTabs, NavigationTabsList, SearchableSelect, SearchableSelectOption, SearchableSelectProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Switch, Table, TableBody, TableCell, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsSize, TabsTrigger, TabsVariant, Textarea, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, alertVariants, badgeVariants } from './primitives/index.js';
4
- export { B as Button, C as Card, a as CardContent, b as CardDescription, c as CardHeader, d as CardTitle, S as Separator, e as buttonVariants } from './card-DqFHjLjm.js';
2
+ export { ActivityItem, ActivityItemProps, ActivityList, AppShell, AppSidebar, AppSidebarContent, AppSidebarFooter, AppSidebarHeader, AppearanceControl, CodeBlock, CodeBlockProps, CodeBlockSnippet, ConfirmationDialog, ConfirmationDialogProps, DataTable, DataTableColumn, DataTableProps, DensityControl, DesignPreferenceControls, DesignSystemPreferenceSync, DetailBackLink, DetailBackLinkProps, DetailSection, DetailSectionProps, DetailSections, EntityTable, EntityTableColumn, EntityTableProps, ErrorState, InspectorRegion, InventoryDesktop, InventoryMobile, InventorySurface, KeyValueItem, KeyValueList, LoadingRows, MainRegion, MetricBand, MetricBandItem, MetricBandItemProps, MetricBandProps, NavigationGroup, NavigationItem, NavigationSubItem, NavigationSubList, PageBoundary, PageContent, PageFrame, PageHeader, PageHeaderProps, PageToolbar, PageToolbarProps, PaginationControls, PaginationControlsProps, ProductIdentity, ProviderMark, ProviderMarkProps, ResourceSummary, ResourceSummaryProps, SidebarNavigation, SidebarNavigationEntry, SidebarNavigationItem, SidebarNavigationLinkProps, SidebarNavigationSection, SidebarSearch, SidebarSeparator, SidebarTrigger, StateView, StateViewProps, TopBar, ValueMeter, ValueMeterProps, useAppShell, useConsciaPreferences } from './patterns/index.js';
3
+ export { Alert, AlertDescription, AlertTitle, Avatar, AvatarFallback, AvatarImage, Badge, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, ConsciaButton, ConsciaCard, ConsciaCardContent, ConsciaCardDescription, ConsciaCardHeader, ConsciaCardTitle, ConsciaCheckbox, ConsciaFormSelect, ConsciaIconButton, ConsciaInput, ConsciaSelect, ConsciaSelectContent, ConsciaSelectGroup, ConsciaSelectItem, ConsciaSelectTrigger, ConsciaSelectValue, ConsciaSwitch, ConsciaTable, ConsciaTableBody, ConsciaTableCell, ConsciaTableHead, ConsciaTableHeader, ConsciaTableRow, ConsciaTextarea, Dialog, DialogBody, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Field, FieldDescription, FieldError, FieldGroup, FieldLabel, FormSelect, FormSelectOption, FormSelectProps, Label, NavigationTab, NavigationTabs, NavigationTabsList, SearchableSelect, SearchableSelectOption, SearchableSelectProps, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Sheet, SheetBody, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Skeleton, Switch, Table, TableBody, TableCell, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsSize, TabsTrigger, TabsVariant, Textarea, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, alertVariants, badgeVariants } from './primitives/index.js';
4
+ export { B as Button, C as Card, a as CardContent, b as CardDescription, c as CardHeader, d as CardTitle, I as Input, S as Separator, e as buttonVariants } from './card-BFUHJgV-.js';
5
5
  export { cn } from './utils/index.js';
6
6
  export { PaginationState, SortingState } from '@tanstack/react-table';
7
7
  import 'react';
package/dist/index.js CHANGED
@@ -44,6 +44,7 @@ import {
44
44
  ProviderMark,
45
45
  ResourceSummary,
46
46
  SidebarNavigation,
47
+ SidebarSearch,
47
48
  SidebarSeparator,
48
49
  SidebarTrigger,
49
50
  StateView,
@@ -51,7 +52,7 @@ import {
51
52
  ValueMeter,
52
53
  useAppShell,
53
54
  useConsciaPreferences
54
- } from "./chunk-5MGPU2JE.js";
55
+ } from "./chunk-6VZDLHRF.js";
55
56
  import {
56
57
  appearanceOptions,
57
58
  applyConsciaPreferences,
@@ -95,14 +96,13 @@ import {
95
96
  FieldGroup,
96
97
  FieldLabel,
97
98
  FormSelect,
98
- Input,
99
99
  Label,
100
100
  SearchableSelect,
101
101
  Switch,
102
102
  Textarea,
103
103
  alertVariants,
104
104
  badgeVariants
105
- } from "./chunk-CU3OXBFI.js";
105
+ } from "./chunk-VVTTFVCC.js";
106
106
  import {
107
107
  Button,
108
108
  Card,
@@ -135,6 +135,7 @@ import {
135
135
  DropdownMenuSubContent,
136
136
  DropdownMenuSubTrigger,
137
137
  DropdownMenuTrigger,
138
+ Input,
138
139
  NavigationTab,
139
140
  NavigationTabs,
140
141
  NavigationTabsList,
@@ -176,7 +177,7 @@ import {
176
177
  TooltipProvider,
177
178
  TooltipTrigger,
178
179
  buttonVariants
179
- } from "./chunk-YHPZ5CQU.js";
180
+ } from "./chunk-HLND6FZS.js";
180
181
  import {
181
182
  cn
182
183
  } from "./chunk-JU5DQXFC.js";
@@ -320,6 +321,7 @@ export {
320
321
  SheetTitle,
321
322
  SheetTrigger,
322
323
  SidebarNavigation,
324
+ SidebarSearch,
323
325
  SidebarSeparator,
324
326
  SidebarTrigger,
325
327
  Skeleton,
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import { SortingState, PaginationState } from '@tanstack/react-table';
3
3
  export { PaginationState, SortingState } from '@tanstack/react-table';
4
- import { S as Separator, B as Button, C as Card } from '../card-DqFHjLjm.js';
4
+ import { I as Input, S as Separator, B as Button, C as Card } from '../card-BFUHJgV-.js';
5
5
  import { ConsciaAppearance, ConsciaDensity } from '../foundation/index.js';
6
6
  import 'class-variance-authority/types';
7
7
  import 'class-variance-authority';
@@ -80,8 +80,10 @@ declare function useAppShell(): AppShellContextValue;
80
80
  declare function AppShell({ defaultSidebarOpen, children, className, style, ...props }: React.ComponentProps<"div"> & {
81
81
  defaultSidebarOpen?: boolean;
82
82
  }): React.JSX.Element;
83
- declare function AppSidebar({ side, className, children, title, description, ...props }: React.ComponentProps<"aside"> & {
83
+ declare function AppSidebar({ side, variant, className, children, title, description, ...props }: React.ComponentProps<"aside"> & {
84
84
  side?: "left" | "right";
85
+ /** Preserve the historical dark sidebar by default; auto follows appearance. */
86
+ variant?: "light" | "dark" | "auto";
85
87
  title?: string;
86
88
  description?: string;
87
89
  }): React.JSX.Element;
@@ -95,8 +97,9 @@ declare function ProductIdentity({ label, description, icon, className, }: {
95
97
  className?: string;
96
98
  }): React.JSX.Element;
97
99
  declare function SidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>): React.JSX.Element;
98
- declare function NavigationGroup({ label, children, className, }: {
100
+ declare function NavigationGroup({ label, count, children, className, }: {
99
101
  label?: React.ReactNode;
102
+ count?: React.ReactNode;
100
103
  children: React.ReactNode;
101
104
  className?: string;
102
105
  }): React.JSX.Element;
@@ -111,6 +114,19 @@ declare function NavigationSubItem({ asChild, active, className, ...props }: Rea
111
114
  }): React.JSX.Element;
112
115
  declare function NavigationSubList({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
113
116
  declare function SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>): React.JSX.Element;
117
+ type SidebarSearchProps = Omit<React.ComponentProps<typeof Input>, "type"> & {
118
+ expanded?: boolean;
119
+ defaultExpanded?: boolean;
120
+ onExpandedChange?: (expanded: boolean) => void;
121
+ triggerLabel?: string;
122
+ shortcut?: string;
123
+ };
124
+ /**
125
+ * Shared search affordance for sidebars. Applications own query state and
126
+ * filtering; this component owns the compact trigger, focus handoff, and
127
+ * keyboard-accessible expanded field.
128
+ */
129
+ declare function SidebarSearch({ expanded: expandedProp, defaultExpanded, onExpandedChange, triggerLabel, shortcut, className, onKeyDown, ...props }: SidebarSearchProps): React.JSX.Element;
114
130
  declare function MainRegion({ className, ...props }: React.ComponentProps<"div">): React.JSX.Element;
115
131
  declare function TopBar({ className, ...props }: React.ComponentProps<"header">): React.JSX.Element;
116
132
  declare function PageFrame({ width, className, ...props }: React.ComponentProps<"main"> & {
@@ -314,4 +330,4 @@ type ValueMeterProps = React.ComponentProps<"div"> & {
314
330
  };
315
331
  declare function ValueMeter({ label, value, maximum, valueLabel, detail, tone, className, ...props }: ValueMeterProps): React.JSX.Element;
316
332
 
317
- export { ActivityItem, type ActivityItemProps, ActivityList, AppShell, AppSidebar, AppSidebarContent, AppSidebarFooter, AppSidebarHeader, AppearanceControl, CodeBlock, type CodeBlockProps, type CodeBlockSnippet, ConfirmationDialog, type ConfirmationDialogProps, DataTable, type DataTableColumn, type DataTableProps, DensityControl, DesignPreferenceControls, DesignSystemPreferenceSync, DetailBackLink, type DetailBackLinkProps, DetailSection, type DetailSectionProps, DetailSections, EntityTable, type EntityTableColumn, type EntityTableProps, ErrorState, InspectorRegion, InventoryDesktop, InventoryMobile, InventorySurface, KeyValueItem, KeyValueList, LoadingRows, MainRegion, MetricBand, MetricBandItem, type MetricBandItemProps, type MetricBandProps, NavigationGroup, NavigationItem, NavigationSubItem, NavigationSubList, PageBoundary, PageContent, PageFrame, PageHeader, type PageHeaderProps, PageToolbar, type PageToolbarProps, PaginationControls, type PaginationControlsProps, ProductIdentity, ProviderMark, type ProviderMarkProps, ResourceSummary, type ResourceSummaryProps, SidebarNavigation, type SidebarNavigationEntry, type SidebarNavigationItem, type SidebarNavigationLinkProps, type SidebarNavigationSection, SidebarSeparator, SidebarTrigger, StateView, type StateViewProps, TopBar, ValueMeter, type ValueMeterProps, useAppShell, useConsciaPreferences };
333
+ export { ActivityItem, type ActivityItemProps, ActivityList, AppShell, AppSidebar, AppSidebarContent, AppSidebarFooter, AppSidebarHeader, AppearanceControl, CodeBlock, type CodeBlockProps, type CodeBlockSnippet, ConfirmationDialog, type ConfirmationDialogProps, DataTable, type DataTableColumn, type DataTableProps, DensityControl, DesignPreferenceControls, DesignSystemPreferenceSync, DetailBackLink, type DetailBackLinkProps, DetailSection, type DetailSectionProps, DetailSections, EntityTable, type EntityTableColumn, type EntityTableProps, ErrorState, InspectorRegion, InventoryDesktop, InventoryMobile, InventorySurface, KeyValueItem, KeyValueList, LoadingRows, MainRegion, MetricBand, MetricBandItem, type MetricBandItemProps, type MetricBandProps, NavigationGroup, NavigationItem, NavigationSubItem, NavigationSubList, PageBoundary, PageContent, PageFrame, PageHeader, type PageHeaderProps, PageToolbar, type PageToolbarProps, PaginationControls, type PaginationControlsProps, ProductIdentity, ProviderMark, type ProviderMarkProps, ResourceSummary, type ResourceSummaryProps, SidebarNavigation, type SidebarNavigationEntry, type SidebarNavigationItem, type SidebarNavigationLinkProps, type SidebarNavigationSection, SidebarSearch, SidebarSeparator, SidebarTrigger, StateView, type StateViewProps, TopBar, ValueMeter, type ValueMeterProps, useAppShell, useConsciaPreferences };
@@ -43,6 +43,7 @@ import {
43
43
  ProviderMark,
44
44
  ResourceSummary,
45
45
  SidebarNavigation,
46
+ SidebarSearch,
46
47
  SidebarSeparator,
47
48
  SidebarTrigger,
48
49
  StateView,
@@ -50,9 +51,9 @@ import {
50
51
  ValueMeter,
51
52
  useAppShell,
52
53
  useConsciaPreferences
53
- } from "../chunk-5MGPU2JE.js";
54
+ } from "../chunk-6VZDLHRF.js";
54
55
  import "../chunk-D5LYROOM.js";
55
- import "../chunk-YHPZ5CQU.js";
56
+ import "../chunk-HLND6FZS.js";
56
57
  import "../chunk-JU5DQXFC.js";
57
58
  export {
58
59
  ActivityItem,
@@ -98,6 +99,7 @@ export {
98
99
  ProviderMark,
99
100
  ResourceSummary,
100
101
  SidebarNavigation,
102
+ SidebarSearch,
101
103
  SidebarSeparator,
102
104
  SidebarTrigger,
103
105
  StateView,