@conscia-labs/design-system 0.3.4 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +117 -1
- package/dist/{chunk-CTRJ24EO.js → chunk-C44RGLGF.js} +10 -10
- package/dist/chunk-C44RGLGF.js.map +1 -0
- package/dist/{chunk-VIVMQAJM.js → chunk-KYH7IZ3Z.js} +146 -31
- package/dist/chunk-KYH7IZ3Z.js.map +1 -0
- package/dist/{chunk-ZCBZHRTV.js → chunk-RAGHGWLB.js} +14 -14
- package/dist/chunk-RAGHGWLB.js.map +1 -0
- package/dist/{chunk-D5LYROOM.js → chunk-YNQWIH6V.js} +2 -2
- package/dist/chunk-YNQWIH6V.js.map +1 -0
- package/dist/foundation/index.d.ts +1 -1
- package/dist/foundation/index.js +1 -1
- package/dist/foundation.css +580 -34
- package/dist/index.d.ts +1 -1
- package/dist/index.js +36 -4
- package/dist/patterns/index.d.ts +330 -1
- package/dist/patterns/index.js +35 -3
- package/dist/primitives/index.js +2 -2
- package/dist/standalone.css +1 -1
- package/dist/styles.css +580 -34
- package/package.json +1 -1
- package/dist/chunk-CTRJ24EO.js.map +0 -1
- package/dist/chunk-D5LYROOM.js.map +0 -1
- package/dist/chunk-VIVMQAJM.js.map +0 -1
- package/dist/chunk-ZCBZHRTV.js.map +0 -1
package/README.md
CHANGED
|
@@ -160,10 +160,31 @@ Supported values:
|
|
|
160
160
|
| Preference | Values |
|
|
161
161
|
| --- | --- |
|
|
162
162
|
| `data-appearance` | `light`, `dark`, `system` |
|
|
163
|
-
| `data-density` | `comfortable`, `compact` |
|
|
163
|
+
| `data-density` | `comfortable`, `compact`, `operational` |
|
|
164
164
|
|
|
165
165
|
Comfortable density is the default for general product interfaces. Compact density is intended for high-volume operational workflows such as inventories and data-heavy administration.
|
|
166
166
|
|
|
167
|
+
Operational density is an explicit opt-in preset for interfaces that prioritize
|
|
168
|
+
information throughput and deliberate hierarchy: admin pages, chat shells,
|
|
169
|
+
connectors, catalogs, and Workspace-like surfaces. It tightens the shared type
|
|
170
|
+
scale to approximately 13px body/UI text, 12px metadata, 15–16px section titles,
|
|
171
|
+
and a 26px page title with a 650 weight, `-0.04em` tracking, and `1.08` line
|
|
172
|
+
height. It also tightens reusable spacing and control rhythm while preserving
|
|
173
|
+
the existing touch-target, focus-ring, color, radius, and shadow contracts.
|
|
174
|
+
|
|
175
|
+
```tsx
|
|
176
|
+
<html data-appearance="system" data-density="operational">
|
|
177
|
+
{/* admin, chat, catalog, connector, or workspace-like application */}
|
|
178
|
+
</html>
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Use comfortable density for general product reading and mixed-purpose pages.
|
|
182
|
+
Use compact density when an existing consumer already depends on its smaller
|
|
183
|
+
layout preset. Use operational density when the interface needs Workspace-like
|
|
184
|
+
hierarchy across shared components. Do not make 13px the global default: that
|
|
185
|
+
would make narrative, setup, and accessibility-critical product surfaces feel
|
|
186
|
+
compressed.
|
|
187
|
+
|
|
167
188
|
### 4. Use a component
|
|
168
189
|
|
|
169
190
|
```tsx
|
|
@@ -271,6 +292,64 @@ export function ProductShell({
|
|
|
271
292
|
}
|
|
272
293
|
```
|
|
273
294
|
|
|
295
|
+
## Building a workbench surface
|
|
296
|
+
|
|
297
|
+
Workbench patterns provide a reusable composition for applications that need
|
|
298
|
+
global navigation, a contextual rail, a primary work area, and an inspector.
|
|
299
|
+
They own the shell geometry, responsive rail behavior, resource-row rhythm,
|
|
300
|
+
and inspector hierarchy; the host application supplies its routes, data, and
|
|
301
|
+
actions.
|
|
302
|
+
|
|
303
|
+
```tsx
|
|
304
|
+
import {
|
|
305
|
+
ResourceRow,
|
|
306
|
+
ResourceRowContent,
|
|
307
|
+
ResourceRowIcon,
|
|
308
|
+
ResourceRowMeta,
|
|
309
|
+
ResourceRowTitle,
|
|
310
|
+
WorkbenchInspector,
|
|
311
|
+
WorkbenchInspectorSection,
|
|
312
|
+
WorkbenchMain,
|
|
313
|
+
WorkbenchRail,
|
|
314
|
+
WorkbenchSection,
|
|
315
|
+
WorkbenchSectionHeader,
|
|
316
|
+
WorkbenchShell,
|
|
317
|
+
} from "@conscia-labs/design-system";
|
|
318
|
+
|
|
319
|
+
export function WorkspaceSurface({ children }: { children: React.ReactNode }) {
|
|
320
|
+
return (
|
|
321
|
+
<WorkbenchShell data-density="operational">
|
|
322
|
+
<WorkbenchRail variant="global">Global navigation</WorkbenchRail>
|
|
323
|
+
<WorkbenchRail variant="secondary">Contextual navigation</WorkbenchRail>
|
|
324
|
+
<WorkbenchMain>
|
|
325
|
+
<WorkbenchSection>
|
|
326
|
+
<WorkbenchSectionHeader title="Recent conversations" metadata="12" />
|
|
327
|
+
<ResourceRow as="a" href="/conversations/1">
|
|
328
|
+
<ResourceRowIcon aria-hidden="true" />
|
|
329
|
+
<ResourceRowContent>
|
|
330
|
+
<ResourceRowTitle>Project brief</ResourceRowTitle>
|
|
331
|
+
<ResourceRowMeta>Updated just now</ResourceRowMeta>
|
|
332
|
+
</ResourceRowContent>
|
|
333
|
+
</ResourceRow>
|
|
334
|
+
</WorkbenchSection>
|
|
335
|
+
{children}
|
|
336
|
+
</WorkbenchMain>
|
|
337
|
+
<WorkbenchInspector>
|
|
338
|
+
<WorkbenchInspectorSection label="Details">
|
|
339
|
+
{/* Product-owned metadata and actions */}
|
|
340
|
+
</WorkbenchInspectorSection>
|
|
341
|
+
</WorkbenchInspector>
|
|
342
|
+
</WorkbenchShell>
|
|
343
|
+
);
|
|
344
|
+
}
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
Use `WorkbenchMobileToolbar` and `WorkbenchBackdrop` when a contextual rail
|
|
348
|
+
needs an explicit mobile drawer trigger. Keep product-specific content styles
|
|
349
|
+
local, but use the shared workbench tokens and row primitives instead of
|
|
350
|
+
recreating shell widths, inspector padding, focus states, or resource-list
|
|
351
|
+
typography.
|
|
352
|
+
|
|
274
353
|
### Typography and font loading
|
|
275
354
|
|
|
276
355
|
The design system declares the open-source Source Sans 3 variable font as a
|
|
@@ -300,6 +379,23 @@ Prefer these tokens over local `clamp()`, pixel, or one-off font-size values.
|
|
|
300
379
|
Product-specific layout styles may still control wrapping, maximum width, or
|
|
301
380
|
composition when the content requires it.
|
|
302
381
|
|
|
382
|
+
Operational consumers can use the token-backed `ds-type-*` utilities without
|
|
383
|
+
creating a parallel styling system:
|
|
384
|
+
|
|
385
|
+
| Role | Utility | Comfortable baseline | Operational intent |
|
|
386
|
+
| --- | --- | --- | --- |
|
|
387
|
+
| Page/display title | `ds-type-page-title`, `ds-type-display-title` | 28px / 56px | 26px / responsive display, 650 weight, tight tracking |
|
|
388
|
+
| Section title | `ds-type-section-title` | 17px | 16px, 650 weight, tighter line-height |
|
|
389
|
+
| Body/UI | `ds-type-body`, `ds-type-ui` | 15px / 14px | 13px with a 1.4–1.5 rhythm |
|
|
390
|
+
| Metadata | `ds-type-metadata` | 13px | 12px supporting context |
|
|
391
|
+
| Menu/eyebrow | `ds-type-menu-item`, `ds-type-menu-label`, `ds-type-eyebrow` | existing compact roles | compact labels with deliberate tracking |
|
|
392
|
+
| Controls | `ds-type-control`, `ds-type-button` | 14px | 13px, with stronger button weight |
|
|
393
|
+
|
|
394
|
+
The utilities resolve through CSS custom properties, so light and dark themes
|
|
395
|
+
retain the same semantic colors and focus behavior. Applications should use
|
|
396
|
+
the preset and shared utilities for type/rhythm, while keeping product-specific
|
|
397
|
+
composition, data, and layout ownership local.
|
|
398
|
+
|
|
303
399
|
Sidebar section labels are intentionally smaller than navigation rows and
|
|
304
400
|
slightly more weighted: comfortable density uses a `12px / 600 / 16px`
|
|
305
401
|
contract with restrained tracking, while compact density reduces the size
|
|
@@ -358,6 +454,26 @@ and foreground pair in dark mode because the bright danger role is not suitable
|
|
|
358
454
|
for white text there. Consumer classes remain the final override when a
|
|
359
455
|
product-specific treatment is intentional.
|
|
360
456
|
|
|
457
|
+
Dark mode uses a calm charcoal surface ladder rather than a pure-black canvas:
|
|
458
|
+
|
|
459
|
+
| Role | Token | Dark value |
|
|
460
|
+
| --- | --- | --- |
|
|
461
|
+
| Application canvas | `--background` / `--canvas` | `#17191c` |
|
|
462
|
+
| Standard surface | `--card` / `--surface` | `#1d2024` |
|
|
463
|
+
| Raised surface and control | `--surface-raised` / `--surface-control` | `#24272c` |
|
|
464
|
+
| Muted and control-hover surface | `--surface-muted` / `--surface-control-hover` | `#282b31` |
|
|
465
|
+
| Floating surface | `--surface-floating` / `--popover` | `#2c2f36` |
|
|
466
|
+
| Overlay surface | `--surface-overlay` | `#31343a` |
|
|
467
|
+
|
|
468
|
+
The adjacent steps are intentionally close enough for a calm reading
|
|
469
|
+
environment while remaining distinguishable through luminance, borders, and
|
|
470
|
+
elevation. `--foreground` is a soft high-priority text role (`#eff1f4`), while
|
|
471
|
+
`--text-secondary`, `--text-supporting`, and `--text-muted` step down to
|
|
472
|
+
`#d4d8df`, `#b3bac5`, and `#929aa7`. Use the semantic `bg-surface-*` and
|
|
473
|
+
`text-*` utilities instead of copying these values into an application. The
|
|
474
|
+
dark sidebar remains its established Conscia identity surface; inputs use the
|
|
475
|
+
shared control surface and popovers/drawers use the floating or overlay roles.
|
|
476
|
+
|
|
361
477
|
`SidebarSearch` owns only the trigger, expanded field, Escape handling, and
|
|
362
478
|
focus handoff. Applications provide the query value and filtering behavior.
|
|
363
479
|
`NavigationGroup` accepts an optional `count`; application-owned group labels
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
TableHead,
|
|
20
20
|
TableHeader,
|
|
21
21
|
TableRow
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-RAGHGWLB.js";
|
|
23
23
|
import {
|
|
24
24
|
cn
|
|
25
25
|
} from "./chunk-JU5DQXFC.js";
|
|
@@ -269,7 +269,7 @@ function Textarea({ className, ...props }) {
|
|
|
269
269
|
"textarea",
|
|
270
270
|
{
|
|
271
271
|
"data-slot": "textarea",
|
|
272
|
-
className: cn("min-h-28 w-full rounded-[var(--ds-field-control-radius)] border border-input bg-surface-control px-[var(--ds-field-control-padding-x)] py-3
|
|
272
|
+
className: cn("ds-type-control min-h-28 w-full rounded-[var(--ds-field-control-radius)] border border-input bg-surface-control px-[var(--ds-field-control-padding-x)] py-3 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),
|
|
273
273
|
...props
|
|
274
274
|
}
|
|
275
275
|
);
|
|
@@ -365,7 +365,7 @@ function FieldLabel({
|
|
|
365
365
|
"label",
|
|
366
366
|
{
|
|
367
367
|
"data-slot": "field-label",
|
|
368
|
-
className: cn("
|
|
368
|
+
className: cn("ds-type-label text-foreground", className),
|
|
369
369
|
...props
|
|
370
370
|
}
|
|
371
371
|
);
|
|
@@ -378,7 +378,7 @@ function FieldDescription({
|
|
|
378
378
|
"p",
|
|
379
379
|
{
|
|
380
380
|
"data-slot": "field-description",
|
|
381
|
-
className: cn("mt-[var(--ds-field-message-gap)] text-
|
|
381
|
+
className: cn("ds-type-metadata mt-[var(--ds-field-message-gap)] text-muted-foreground", className),
|
|
382
382
|
...props
|
|
383
383
|
}
|
|
384
384
|
);
|
|
@@ -391,7 +391,7 @@ function FieldError({
|
|
|
391
391
|
"p",
|
|
392
392
|
{
|
|
393
393
|
"data-slot": "field-error",
|
|
394
|
-
className: cn("mt-[var(--ds-field-message-gap)]
|
|
394
|
+
className: cn("ds-type-metadata mt-[var(--ds-field-message-gap)] font-medium text-danger-foreground", className),
|
|
395
395
|
...props
|
|
396
396
|
}
|
|
397
397
|
);
|
|
@@ -472,7 +472,7 @@ function Label({
|
|
|
472
472
|
{
|
|
473
473
|
"data-slot": "label",
|
|
474
474
|
className: cn(
|
|
475
|
-
"flex items-center gap-2 text-
|
|
475
|
+
"ds-type-label flex items-center gap-2 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",
|
|
476
476
|
className
|
|
477
477
|
),
|
|
478
478
|
...props
|
|
@@ -655,20 +655,20 @@ function SearchableSelect({
|
|
|
655
655
|
tabIndex: -1,
|
|
656
656
|
ref: index === resolvedActiveIndex ? activeOptionRef : void 0,
|
|
657
657
|
"data-active": index === resolvedActiveIndex,
|
|
658
|
-
className: "flex w-full items-center gap-3 rounded-sm px-3 py-2 text-left
|
|
658
|
+
className: "ds-type-menu-item flex w-full items-center gap-3 rounded-sm px-3 py-2 text-left outline-none hover:bg-surface-muted focus-visible:bg-surface-muted data-[active=true]:bg-surface-muted disabled:pointer-events-none disabled:opacity-50",
|
|
659
659
|
onMouseDown: (event) => event.preventDefault(),
|
|
660
660
|
onMouseEnter: () => setActiveIndex(index),
|
|
661
661
|
onClick: () => select(option),
|
|
662
662
|
children: [
|
|
663
663
|
/* @__PURE__ */ jsxs3("span", { className: "grid min-w-0 flex-1 gap-0.5", children: [
|
|
664
664
|
/* @__PURE__ */ jsx11("span", { className: "truncate font-medium", children: option.label }),
|
|
665
|
-
option.description ? /* @__PURE__ */ jsx11("span", { className: "
|
|
665
|
+
option.description ? /* @__PURE__ */ jsx11("span", { className: "ds-type-menu-label truncate text-muted-foreground", children: option.description }) : null
|
|
666
666
|
] }),
|
|
667
667
|
option.value === value ? /* @__PURE__ */ jsx11(Check, { className: "size-4 shrink-0 text-success-foreground", "aria-hidden": "true" }) : null
|
|
668
668
|
]
|
|
669
669
|
},
|
|
670
670
|
option.value
|
|
671
|
-
)) : /* @__PURE__ */ jsx11("p", { className: "px-3 py-6 text-center text-
|
|
671
|
+
)) : /* @__PURE__ */ jsx11("p", { className: "ds-type-menu-item px-3 py-6 text-center text-muted-foreground", children: emptyMessage })
|
|
672
672
|
}
|
|
673
673
|
) : null
|
|
674
674
|
] });
|
|
@@ -720,4 +720,4 @@ export {
|
|
|
720
720
|
Label,
|
|
721
721
|
SearchableSelect
|
|
722
722
|
};
|
|
723
|
-
//# sourceMappingURL=chunk-
|
|
723
|
+
//# sourceMappingURL=chunk-C44RGLGF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/primitives/alert.tsx","../src/primitives/avatar.tsx","../src/primitives/badge.tsx","../src/primitives/brand-icon.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","import * as React from \"react\";\n\nimport { cn } from \"./utils\";\n\nconst CONSCIA_SYMBOL_PATH = [\n \"M171.225 63.8139L173.637 66.1116L203.794 34.4551L201.382 32.1575L171.225 63.8139Z\",\n \"M184.012 78.9693L185.769 81.8487L223.091 59.076L221.334 56.1966L184.012 78.9693Z\",\n \"M192.436 96.8858L193.417 100.222L235.362 87.8847L234.381 84.5488L192.436 96.8858Z\",\n \"M195.949 116.334L196.037 119.987L239.746 118.926L239.657 115.273L195.949 116.334Z\",\n \"M194.341 135.989L193.42 139.796L235.913 150.084L236.835 146.277L194.341 135.989Z\",\n \"M187.759 154.526L185.708 158.285L224.091 179.221L226.142 175.461L187.759 154.526Z\",\n \"M176.683 170.712L173.394 174.165L205.05 204.322L208.34 200.868L176.683 170.712Z\",\n \"M161.899 183.49L157.288 186.304L180.06 223.626L184.672 220.812L161.899 183.49Z\",\n \"M144.425 192.058L138.472 193.809L150.809 235.754L156.762 234.003L144.425 192.058Z\",\n \"M125.438 195.913L118.244 196.088L119.305 239.796L126.499 239.622L125.438 195.913Z\",\n \"M106.176 194.873L98.0421 192.903L87.754 235.397L95.8882 237.366L106.176 194.873Z\",\n \"M87.8408 189.056L79.3505 184.425L58.4147 222.808L66.905 227.439L87.8408 189.056Z\",\n \"M71.5444 178.838L63.5819 171.253L33.4252 202.91L41.3878 210.495L71.5444 178.838Z\",\n \"M58.2896 164.821L51.9185 154.379L14.5961 177.152L20.9672 187.593L58.2896 164.821Z\",\n \"M48.9443 147.836L45.1912 135.075L3.24659 147.412L6.99972 160.173L48.9443 147.836Z\",\n \"M44.1724 128.938L43.8283 114.759L0.119827 115.82L0.463868 129.998L44.1724 128.938Z\",\n \"M44.3613 109.352L47.8648 94.8809L5.37116 84.5928L1.86766 99.0635L44.3613 109.352Z\",\n \"M49.563 90.3812L56.9571 76.825L18.5742 55.8893L11.18 69.4455L49.563 90.3812Z\",\n \"M59.4839 73.314L70.4267 61.8269L38.7702 31.6703L27.8274 43.1574L59.4839 73.314Z\",\n \"M73.4951 59.3251L87.307 50.8976L64.5343 13.5752L50.7224 22.0027L73.4951 59.3251Z\",\n \"M90.6772 49.3891L106.414 44.7604L94.0775 2.81575L78.3402 7.44453L90.6772 49.3891Z\",\n \"M109.88 44.2086L126.426 43.8071L125.366 0.098614L108.82 0.500089L109.88 44.2086Z\",\n \"M129.802 44.1632L145.967 48.0768L156.255 5.58318L140.09 1.66954L129.802 44.1632Z\",\n \"M149.087 49.2798L163.709 57.2553L184.645 18.8723L170.023 10.8969L149.087 49.2798Z\",\n \"M152.448 160.384L141.06 167.332L154.089 188.685L165.477 181.736L152.448 160.384Z\",\n \"M140.881 167.41L128.103 171.168L135.161 195.165L147.939 191.407L140.881 167.41Z\",\n \"M127.834 171.202L114.653 171.522L115.26 196.528L128.441 196.209L127.834 171.202Z\",\n \"M114.192 171.456L101.624 168.413L95.738 192.724L108.306 195.767L114.192 171.456Z\",\n \"M100.907 168.109L89.889 162.1L77.9114 184.059L88.9296 190.069L100.907 168.109Z\",\n \"M88.9224 161.353L80.2035 153.047L62.9505 171.158L71.6694 179.464L88.9224 161.353Z\",\n \"M79.1143 151.631L73.1721 141.893L51.8195 154.921L57.7617 164.66L79.1143 151.631Z\",\n \"M72.2163 139.615L69.2075 129.385L45.2105 136.444L48.2193 146.673L72.2163 139.615Z\",\n \"M68.7593 126.163L68.5209 116.339L43.5147 116.946L43.7531 126.77L68.7593 126.163Z\",\n \"M69.0161 112.256L71.1176 103.576L46.8064 97.6899L44.7049 106.37L69.0161 112.256Z\",\n \"M72.979 98.9209L76.8146 91.8888L54.8552 79.9112L51.0196 86.9432L72.979 98.9209Z\",\n \"M80.3506 87.1414L85.2494 81.999L67.1383 64.746L62.2395 69.8884L80.3506 87.1414Z\",\n \"M90.5762 77.7753L95.9023 74.5255L82.8738 53.1729L77.5476 56.4227L90.5762 77.7753Z\",\n \"M102.889 71.4875L108.114 69.9508L101.056 45.9537L95.831 47.4905L102.889 71.4875Z\",\n \"M116.381 68.7043L121.119 68.5894L120.513 43.5832L115.775 43.6981L116.381 68.7043Z\",\n \"M130.08 69.5886L134.092 70.56L139.978 46.2488L135.966 45.2775L130.08 69.5886Z\",\n \"M143.01 74.0389L146.183 75.7697L158.161 53.8103L154.988 52.0795L143.01 74.0389Z\",\n \"M154.273 81.705L156.588 83.9108L173.841 65.7997L171.526 63.5939L154.273 81.705Z\",\n \"M163.102 92.0197L164.599 94.4735L185.952 81.445L184.455 78.9911L163.102 92.0197Z\",\n \"M168.91 104.243L169.655 106.775L193.652 99.7164L192.907 97.1844L168.91 104.243Z\",\n \"M171.325 117.515L171.386 120.001L196.392 119.394L196.331 116.909L171.325 117.515Z\",\n \"M170.21 130.922L169.644 133.264L193.955 139.15L194.522 136.808L170.21 130.922Z\",\n \"M165.673 143.549L164.523 145.658L186.482 157.636L187.633 155.527L165.673 143.549Z\",\n \"M158.032 154.558L156.355 156.318L174.467 173.571L176.143 171.811L158.032 154.558Z\",\n].join(\" \");\n\ntype BrandIconProps = React.ComponentPropsWithoutRef<\"svg\">;\n\nfunction BrandIcon({\n \"aria-label\": ariaLabel,\n className,\n ...props\n}: BrandIconProps) {\n return (\n <svg\n data-slot=\"brand-icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"240\"\n height=\"240\"\n viewBox=\"0 0 240 240\"\n fill=\"none\"\n focusable=\"false\"\n role={ariaLabel ? \"img\" : undefined}\n aria-hidden={ariaLabel ? undefined : true}\n aria-label={ariaLabel}\n className={cn(\"size-6 shrink-0 text-foreground dark:text-white\", className)}\n {...props}\n >\n <path d={CONSCIA_SYMBOL_PATH} fill=\"currentColor\" />\n </svg>\n );\n}\n\nexport { BrandIcon };\nexport type { BrandIconProps };\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(\"ds-type-control min-h-28 w-full rounded-[var(--ds-field-control-radius)] border border-input bg-surface-control px-[var(--ds-field-control-padding-x)] py-3 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(\"ds-type-label 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(\"ds-type-metadata mt-[var(--ds-field-message-gap)] 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(\"ds-type-metadata mt-[var(--ds-field-message-gap)] 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 \"ds-type-label flex items-center gap-2 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=\"ds-type-menu-item flex w-full items-center gap-3 rounded-sm px-3 py-2 text-left 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=\"ds-type-menu-label truncate 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=\"ds-type-menu-item px-3 py-6 text-center 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","jsx","jsxs","jsx","React","jsx","jsxs"]}
|