@conscia-labs/design-system 0.3.5 → 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 +97 -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 +550 -4
- 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 +550 -4
- 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
|
|
@@ -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"]}
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
appearanceOptions,
|
|
3
3
|
applyConsciaPreferences,
|
|
4
4
|
densityOptions
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-YNQWIH6V.js";
|
|
6
6
|
import {
|
|
7
7
|
Button,
|
|
8
8
|
Card,
|
|
@@ -52,7 +52,7 @@ import {
|
|
|
52
52
|
TooltipContent,
|
|
53
53
|
TooltipProvider,
|
|
54
54
|
TooltipTrigger
|
|
55
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-RAGHGWLB.js";
|
|
56
56
|
import {
|
|
57
57
|
cn
|
|
58
58
|
} from "./chunk-JU5DQXFC.js";
|
|
@@ -623,8 +623,8 @@ function ProductIdentity({
|
|
|
623
623
|
children: [
|
|
624
624
|
icon ? /* @__PURE__ */ jsx5("div", { className: "flex size-7 shrink-0 items-center justify-center rounded-[var(--ds-radius-control)] bg-sidebar-hover text-sidebar-icon", children: icon }) : null,
|
|
625
625
|
/* @__PURE__ */ jsxs4("div", { className: "min-w-0 group-data-[sidebar-state=collapsed]/shell:hidden", children: [
|
|
626
|
-
/* @__PURE__ */ jsx5("div", { className: "truncate
|
|
627
|
-
description ? /* @__PURE__ */ jsx5("div", { className: "
|
|
626
|
+
/* @__PURE__ */ jsx5("div", { className: "ds-type-navigation truncate font-semibold text-sidebar-primary-text", children: label }),
|
|
627
|
+
description ? /* @__PURE__ */ jsx5("div", { className: "ds-type-metadata truncate text-sidebar-metadata-text", children: description }) : null
|
|
628
628
|
] })
|
|
629
629
|
]
|
|
630
630
|
}
|
|
@@ -665,7 +665,7 @@ function NavigationGroup({
|
|
|
665
665
|
className: "flex min-h-6 items-center gap-2 px-2 pb-0 pt-2 text-[length:var(--ds-sidebar-group-label-size)] font-semibold uppercase leading-[var(--ds-sidebar-group-label-line-height)] tracking-[0.04em] text-sidebar-group-label group-data-[sidebar-state=collapsed]/shell:hidden",
|
|
666
666
|
children: [
|
|
667
667
|
label,
|
|
668
|
-
count !== void 0 ? /* @__PURE__ */ jsx5("span", { className: "ml-auto shrink-0
|
|
668
|
+
count !== void 0 ? /* @__PURE__ */ jsx5("span", { className: "ds-type-metadata ml-auto shrink-0 font-medium normal-case tracking-normal text-sidebar-group-count", children: count }) : null
|
|
669
669
|
]
|
|
670
670
|
}
|
|
671
671
|
) : null,
|
|
@@ -676,7 +676,7 @@ function NavigationGroup({
|
|
|
676
676
|
}
|
|
677
677
|
function navigationItemClasses(active) {
|
|
678
678
|
return cn(
|
|
679
|
-
"flex min-h-[var(--ds-sidebar-item-height-touch)] min-w-0 cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2
|
|
679
|
+
"ds-type-navigation flex min-h-[var(--ds-sidebar-item-height-touch)] min-w-0 cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 font-medium text-sidebar-secondary-text outline-none transition-colors duration-150 lg:h-[var(--ds-sidebar-item-height)] lg:min-h-0",
|
|
680
680
|
"hover:bg-sidebar-hover hover:text-sidebar-primary-text",
|
|
681
681
|
"focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring",
|
|
682
682
|
"disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50",
|
|
@@ -736,7 +736,7 @@ function NavigationSubItem({
|
|
|
736
736
|
"data-slot": "navigation-sub-item",
|
|
737
737
|
"data-active": active ? "true" : void 0,
|
|
738
738
|
className: cn(
|
|
739
|
-
"flex min-h-[var(--ds-sidebar-item-height-touch)] min-w-0 cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-
|
|
739
|
+
"ds-type-navigation flex min-h-[var(--ds-sidebar-item-height-touch)] min-w-0 cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-sidebar-secondary-text outline-none transition-colors duration-150 lg:h-[calc(var(--ds-sidebar-item-height)-0.25rem)] lg:min-h-0",
|
|
740
740
|
"hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring",
|
|
741
741
|
"group-data-[sidebar-state=collapsed]/shell:hidden [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:stroke-[1.75] [&>svg]:text-sidebar-icon",
|
|
742
742
|
active && "bg-sidebar-active text-sidebar-active-foreground shadow-[inset_3px_0_0_var(--sidebar-active-indicator)] hover:bg-sidebar-active hover:text-sidebar-active-foreground [&>svg]:text-sidebar-active-foreground",
|
|
@@ -832,7 +832,7 @@ function SidebarSearch({
|
|
|
832
832
|
type: "button",
|
|
833
833
|
"data-slot": "sidebar-search-trigger",
|
|
834
834
|
className: cn(
|
|
835
|
-
"flex min-h-[var(--ds-sidebar-item-height-touch)] w-full cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-left
|
|
835
|
+
"ds-type-navigation flex min-h-[var(--ds-sidebar-item-height-touch)] w-full cursor-pointer items-center gap-2 rounded-[var(--ds-radius-control)] px-2 text-left font-medium text-sidebar-secondary-text outline-none transition-colors hover:bg-sidebar-hover hover:text-sidebar-primary-text focus-visible:ring-[3px] focus-visible:ring-sidebar-focus-ring lg:min-h-[var(--ds-sidebar-item-height)]",
|
|
836
836
|
"group-data-[sidebar-state=collapsed]/shell:justify-center group-data-[sidebar-state=collapsed]/shell:px-0",
|
|
837
837
|
className
|
|
838
838
|
),
|
|
@@ -841,7 +841,7 @@ function SidebarSearch({
|
|
|
841
841
|
children: [
|
|
842
842
|
/* @__PURE__ */ jsx5(Search, { className: "size-4 shrink-0 text-sidebar-icon" }),
|
|
843
843
|
/* @__PURE__ */ jsx5("span", { className: "truncate group-data-[sidebar-state=collapsed]/shell:hidden", children: triggerLabel }),
|
|
844
|
-
shortcut ? /* @__PURE__ */ jsx5("kbd", { className: "ml-auto rounded border border-sidebar-border px-1.5 py-0.5
|
|
844
|
+
shortcut ? /* @__PURE__ */ jsx5("kbd", { className: "ds-type-metadata ml-auto rounded border border-sidebar-border px-1.5 py-0.5 font-medium text-sidebar-metadata-text group-data-[sidebar-state=collapsed]/shell:hidden", children: shortcut }) : null
|
|
845
845
|
]
|
|
846
846
|
}
|
|
847
847
|
);
|
|
@@ -862,7 +862,7 @@ function SidebarSearch({
|
|
|
862
862
|
{
|
|
863
863
|
ref: inputRef,
|
|
864
864
|
type: "search",
|
|
865
|
-
className: "h-auto min-w-0 flex-1 border-0 bg-transparent px-0 py-1
|
|
865
|
+
className: "ds-type-control h-auto min-w-0 flex-1 border-0 bg-transparent px-0 py-1 shadow-none focus-visible:border-0 focus-visible:ring-0",
|
|
866
866
|
onKeyDown: (event) => {
|
|
867
867
|
if (event.key === "Escape") {
|
|
868
868
|
event.preventDefault();
|
|
@@ -1000,9 +1000,9 @@ function ActivityItem({ icon, title, description, metadata, status, className, .
|
|
|
1000
1000
|
return /* @__PURE__ */ jsxs5("div", { "data-slot": "activity-item", className: cn("grid grid-cols-[auto_minmax(0,1fr)_auto] gap-3 py-3", className), ...props, children: [
|
|
1001
1001
|
/* @__PURE__ */ jsx6("div", { className: "flex size-8 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-4", children: icon }),
|
|
1002
1002
|
/* @__PURE__ */ jsxs5("div", { className: "min-w-0", children: [
|
|
1003
|
-
/* @__PURE__ */ jsx6("div", { className: "
|
|
1004
|
-
description ? /* @__PURE__ */ jsx6("div", { className: "mt-0.5 text-
|
|
1005
|
-
metadata ? /* @__PURE__ */ jsx6("div", { className: "mt-1 text-
|
|
1003
|
+
/* @__PURE__ */ jsx6("div", { className: "ds-type-ui font-medium text-foreground", children: title }),
|
|
1004
|
+
description ? /* @__PURE__ */ jsx6("div", { className: "ds-type-ui mt-0.5 text-muted-foreground", children: description }) : null,
|
|
1005
|
+
metadata ? /* @__PURE__ */ jsx6("div", { className: "ds-type-metadata mt-1 text-muted-foreground", children: metadata }) : null
|
|
1006
1006
|
] }),
|
|
1007
1007
|
status ? /* @__PURE__ */ jsx6("div", { className: "shrink-0", children: status }) : null
|
|
1008
1008
|
] });
|
|
@@ -1174,9 +1174,9 @@ function MetricBandItem({
|
|
|
1174
1174
|
}
|
|
1175
1175
|
) : null,
|
|
1176
1176
|
/* @__PURE__ */ jsxs8("div", { className: "grid min-w-0 gap-1", children: [
|
|
1177
|
-
/* @__PURE__ */ jsx10("div", { className: "
|
|
1177
|
+
/* @__PURE__ */ jsx10("div", { className: "ds-type-ui text-muted-foreground", children: label }),
|
|
1178
1178
|
loading ? /* @__PURE__ */ jsx10(Skeleton, { className: "h-7 w-14" }) : /* @__PURE__ */ jsx10("div", { className: "text-2xl font-semibold tracking-tight", children: value ?? 0 }),
|
|
1179
|
-
detail ? /* @__PURE__ */ jsx10("div", { className: "
|
|
1179
|
+
detail ? /* @__PURE__ */ jsx10("div", { className: "ds-type-metadata text-muted-foreground", children: detail }) : null
|
|
1180
1180
|
] })
|
|
1181
1181
|
]
|
|
1182
1182
|
}
|
|
@@ -1199,7 +1199,7 @@ function PageHeader({
|
|
|
1199
1199
|
const resolvedActions = actions ?? actionNode ?? (action ? /* @__PURE__ */ jsx11(
|
|
1200
1200
|
"a",
|
|
1201
1201
|
{
|
|
1202
|
-
className: "inline-flex h-[var(--ds-control-height)] items-center justify-center gap-2 whitespace-nowrap rounded-md bg-primary px-3 py-2 text-
|
|
1202
|
+
className: "ds-type-button inline-flex h-[var(--ds-control-height)] items-center justify-center gap-2 whitespace-nowrap rounded-md bg-primary px-3 py-2 text-primary-foreground shadow-xs outline-none transition-colors hover:bg-accent-hover focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50",
|
|
1203
1203
|
href: action.href,
|
|
1204
1204
|
children: action.label
|
|
1205
1205
|
}
|
|
@@ -1213,11 +1213,11 @@ function PageHeader({
|
|
|
1213
1213
|
children: [
|
|
1214
1214
|
/* @__PURE__ */ jsxs9("div", { className: "min-w-0", children: [
|
|
1215
1215
|
/* @__PURE__ */ jsxs9("div", { className: "flex min-w-0 flex-wrap items-center gap-2", children: [
|
|
1216
|
-
/* @__PURE__ */ jsx11("h1", { className: "
|
|
1216
|
+
/* @__PURE__ */ jsx11("h1", { className: "ds-type-page-title truncate", children: title }),
|
|
1217
1217
|
status
|
|
1218
1218
|
] }),
|
|
1219
|
-
description ? /* @__PURE__ */ jsx11("p", { className: "mt-1 max-w-3xl text-
|
|
1220
|
-
metadata ? /* @__PURE__ */ jsx11("div", { className: "mt-2 text-
|
|
1219
|
+
description ? /* @__PURE__ */ jsx11("p", { className: "ds-type-ui mt-1 max-w-3xl text-muted-foreground", children: description }) : null,
|
|
1220
|
+
metadata ? /* @__PURE__ */ jsx11("div", { className: "ds-type-metadata mt-2 text-muted-foreground", children: metadata }) : null
|
|
1221
1221
|
] }),
|
|
1222
1222
|
resolvedActions ? /* @__PURE__ */ jsx11("div", { className: "flex shrink-0 flex-wrap items-center gap-2", children: resolvedActions }) : null
|
|
1223
1223
|
]
|
|
@@ -1399,8 +1399,8 @@ function ProviderMark({ name, shortName, description, size = "default", classNam
|
|
|
1399
1399
|
}
|
|
1400
1400
|
),
|
|
1401
1401
|
/* @__PURE__ */ jsxs12("div", { className: "min-w-0", children: [
|
|
1402
|
-
/* @__PURE__ */ jsx14("div", { className: "truncate
|
|
1403
|
-
description ? /* @__PURE__ */ jsx14("div", { className: "mt-0.5 truncate text-
|
|
1402
|
+
/* @__PURE__ */ jsx14("div", { className: "ds-type-ui truncate font-medium text-foreground", children: name }),
|
|
1403
|
+
description ? /* @__PURE__ */ jsx14("div", { className: "ds-type-metadata mt-0.5 truncate text-muted-foreground", children: description }) : null
|
|
1404
1404
|
] })
|
|
1405
1405
|
] });
|
|
1406
1406
|
}
|
|
@@ -1433,11 +1433,11 @@ function ResourceSummary({
|
|
|
1433
1433
|
/* @__PURE__ */ jsxs13("div", { className: "flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between", children: [
|
|
1434
1434
|
/* @__PURE__ */ jsxs13("div", { className: "min-w-0", children: [
|
|
1435
1435
|
title || status ? /* @__PURE__ */ jsxs13("div", { className: "flex min-w-0 flex-wrap items-center gap-2", children: [
|
|
1436
|
-
title ? /* @__PURE__ */ jsx15("h2", { className: "
|
|
1436
|
+
title ? /* @__PURE__ */ jsx15("h2", { className: "ds-type-section-title truncate", children: title }) : null,
|
|
1437
1437
|
status
|
|
1438
1438
|
] }) : null,
|
|
1439
|
-
description ? /* @__PURE__ */ jsx15("p", { className: "mt-1 max-w-3xl text-
|
|
1440
|
-
metadata ? /* @__PURE__ */ jsx15("div", { className: "mt-2 text-
|
|
1439
|
+
description ? /* @__PURE__ */ jsx15("p", { className: "ds-type-ui mt-1 max-w-3xl text-muted-foreground", children: description }) : null,
|
|
1440
|
+
metadata ? /* @__PURE__ */ jsx15("div", { className: "ds-type-metadata mt-2 text-muted-foreground", children: metadata }) : null
|
|
1441
1441
|
] }),
|
|
1442
1442
|
actions ? /* @__PURE__ */ jsx15("div", { className: "flex shrink-0 flex-wrap items-center gap-2", children: actions }) : null
|
|
1443
1443
|
] }),
|
|
@@ -1481,8 +1481,8 @@ function DetailSection({
|
|
|
1481
1481
|
children: [
|
|
1482
1482
|
/* @__PURE__ */ jsxs13("div", { className: "flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between", children: [
|
|
1483
1483
|
/* @__PURE__ */ jsxs13("div", { className: "min-w-0", children: [
|
|
1484
|
-
/* @__PURE__ */ jsx15("h2", { className: "
|
|
1485
|
-
description ? /* @__PURE__ */ jsx15("p", { className: "mt-1 max-w-3xl text-
|
|
1484
|
+
/* @__PURE__ */ jsx15("h2", { className: "ds-type-section-title", children: title }),
|
|
1485
|
+
description ? /* @__PURE__ */ jsx15("p", { className: "ds-type-ui mt-1 max-w-3xl text-muted-foreground", children: description }) : null
|
|
1486
1486
|
] }),
|
|
1487
1487
|
actions ? /* @__PURE__ */ jsx15("div", { className: "flex shrink-0 items-center gap-2", children: actions }) : null
|
|
1488
1488
|
] }),
|
|
@@ -1499,7 +1499,7 @@ function KeyValueList({
|
|
|
1499
1499
|
"dl",
|
|
1500
1500
|
{
|
|
1501
1501
|
"data-slot": "key-value-list",
|
|
1502
|
-
className: cn("grid gap-3
|
|
1502
|
+
className: cn("ds-type-ui grid gap-3", className),
|
|
1503
1503
|
...props
|
|
1504
1504
|
}
|
|
1505
1505
|
);
|
|
@@ -1729,8 +1729,8 @@ function StateView({ title, description, action, icon, className, ...props }) {
|
|
|
1729
1729
|
...props,
|
|
1730
1730
|
children: [
|
|
1731
1731
|
icon ? /* @__PURE__ */ jsx17("div", { className: "flex size-10 items-center justify-center rounded-md bg-neutral-background text-neutral-foreground [&_svg]:size-5", children: icon }) : null,
|
|
1732
|
-
/* @__PURE__ */ jsx17("h2", { className: "
|
|
1733
|
-
description ? /* @__PURE__ */ jsx17("p", { className: "max-w-md text-
|
|
1732
|
+
/* @__PURE__ */ jsx17("h2", { className: "ds-type-section-title", children: title }),
|
|
1733
|
+
description ? /* @__PURE__ */ jsx17("p", { className: "ds-type-ui max-w-md text-muted-foreground", children: description }) : null,
|
|
1734
1734
|
action ? /* @__PURE__ */ jsx17("div", { className: "mt-1", children: action }) : null
|
|
1735
1735
|
]
|
|
1736
1736
|
}
|
|
@@ -1832,6 +1832,105 @@ function ValueMeter({
|
|
|
1832
1832
|
);
|
|
1833
1833
|
}
|
|
1834
1834
|
|
|
1835
|
+
// src/patterns/workbench.tsx
|
|
1836
|
+
import * as React8 from "react";
|
|
1837
|
+
import { jsx as jsx19, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1838
|
+
function WorkbenchShell({ className, ...props }) {
|
|
1839
|
+
return /* @__PURE__ */ jsx19("div", { "data-slot": "workbench-shell", className: cn("min-w-0", className), ...props });
|
|
1840
|
+
}
|
|
1841
|
+
function WorkbenchRail({ variant = "secondary", open = true, className, ...props }) {
|
|
1842
|
+
return /* @__PURE__ */ jsx19(
|
|
1843
|
+
"aside",
|
|
1844
|
+
{
|
|
1845
|
+
"data-slot": "workbench-rail",
|
|
1846
|
+
"data-variant": variant,
|
|
1847
|
+
"data-open": open ? "true" : "false",
|
|
1848
|
+
className: cn("min-w-0", className),
|
|
1849
|
+
...props
|
|
1850
|
+
}
|
|
1851
|
+
);
|
|
1852
|
+
}
|
|
1853
|
+
function WorkbenchMain({ className, ...props }) {
|
|
1854
|
+
return /* @__PURE__ */ jsx19("main", { "data-slot": "workbench-main", className: cn("min-w-0", className), ...props });
|
|
1855
|
+
}
|
|
1856
|
+
function WorkbenchInspector({ className, ...props }) {
|
|
1857
|
+
return /* @__PURE__ */ jsx19("aside", { "data-slot": "workbench-inspector", className: cn("min-w-0", className), ...props });
|
|
1858
|
+
}
|
|
1859
|
+
function WorkbenchMobileToolbar({ className, ...props }) {
|
|
1860
|
+
return /* @__PURE__ */ jsx19("div", { "data-slot": "workbench-mobile-toolbar", className: cn(className), ...props });
|
|
1861
|
+
}
|
|
1862
|
+
function WorkbenchBackdrop({ open = true, className, ...props }) {
|
|
1863
|
+
return /* @__PURE__ */ jsx19(
|
|
1864
|
+
"button",
|
|
1865
|
+
{
|
|
1866
|
+
type: "button",
|
|
1867
|
+
"data-slot": "workbench-backdrop",
|
|
1868
|
+
"data-open": open ? "true" : "false",
|
|
1869
|
+
className: cn(className),
|
|
1870
|
+
...props
|
|
1871
|
+
}
|
|
1872
|
+
);
|
|
1873
|
+
}
|
|
1874
|
+
function WorkbenchSection({ className, ...props }) {
|
|
1875
|
+
return /* @__PURE__ */ jsx19("section", { "data-slot": "workbench-section", className: cn(className), ...props });
|
|
1876
|
+
}
|
|
1877
|
+
function WorkbenchSectionHeader({ title, metadata, action, className, ...props }) {
|
|
1878
|
+
return /* @__PURE__ */ jsxs17("div", { "data-slot": "workbench-section-header", className: cn(className), ...props, children: [
|
|
1879
|
+
/* @__PURE__ */ jsxs17("div", { "data-slot": "workbench-section-heading", children: [
|
|
1880
|
+
/* @__PURE__ */ jsx19("h2", { children: title }),
|
|
1881
|
+
metadata ? /* @__PURE__ */ jsx19("span", { children: metadata }) : null
|
|
1882
|
+
] }),
|
|
1883
|
+
action ? /* @__PURE__ */ jsx19("div", { "data-slot": "workbench-section-action", children: action }) : null
|
|
1884
|
+
] });
|
|
1885
|
+
}
|
|
1886
|
+
function ResourceRow({ as = "div", href, selected = false, className, children, ...props }) {
|
|
1887
|
+
return React8.createElement(
|
|
1888
|
+
as,
|
|
1889
|
+
{
|
|
1890
|
+
...props,
|
|
1891
|
+
...as === "a" && href ? { href } : {},
|
|
1892
|
+
...as === "button" ? { type: "button" } : {},
|
|
1893
|
+
"data-slot": "resource-row",
|
|
1894
|
+
"data-selected": selected ? "true" : "false",
|
|
1895
|
+
className: cn(className)
|
|
1896
|
+
},
|
|
1897
|
+
children
|
|
1898
|
+
);
|
|
1899
|
+
}
|
|
1900
|
+
function ResourceRowIcon({ className, ...props }) {
|
|
1901
|
+
return /* @__PURE__ */ jsx19("span", { "data-slot": "resource-row-icon", className: cn(className), ...props });
|
|
1902
|
+
}
|
|
1903
|
+
function ResourceRowContent({ className, ...props }) {
|
|
1904
|
+
return /* @__PURE__ */ jsx19("span", { "data-slot": "resource-row-content", className: cn(className), ...props });
|
|
1905
|
+
}
|
|
1906
|
+
function ResourceRowTitle({ className, ...props }) {
|
|
1907
|
+
return /* @__PURE__ */ jsx19("strong", { "data-slot": "resource-row-title", className: cn(className), ...props });
|
|
1908
|
+
}
|
|
1909
|
+
function ResourceRowDescription({ className, ...props }) {
|
|
1910
|
+
return /* @__PURE__ */ jsx19("span", { "data-slot": "resource-row-description", className: cn(className), ...props });
|
|
1911
|
+
}
|
|
1912
|
+
function ResourceRowMeta({ className, ...props }) {
|
|
1913
|
+
return /* @__PURE__ */ jsx19("span", { "data-slot": "resource-row-meta", className: cn(className), ...props });
|
|
1914
|
+
}
|
|
1915
|
+
function WorkbenchInspectorSection({ label, action, className, children, ...props }) {
|
|
1916
|
+
return /* @__PURE__ */ jsxs17("section", { "data-slot": "workbench-inspector-section", className: cn(className), ...props, children: [
|
|
1917
|
+
/* @__PURE__ */ jsxs17("div", { "data-slot": "workbench-inspector-label", children: [
|
|
1918
|
+
/* @__PURE__ */ jsx19("h3", { children: label }),
|
|
1919
|
+
action ? /* @__PURE__ */ jsx19("div", { children: action }) : null
|
|
1920
|
+
] }),
|
|
1921
|
+
children
|
|
1922
|
+
] });
|
|
1923
|
+
}
|
|
1924
|
+
function IdentityRow({ initials, name, detail, compact = false, className, ...props }) {
|
|
1925
|
+
return /* @__PURE__ */ jsxs17("div", { "data-slot": "identity-row", "data-compact": compact ? "true" : "false", className: cn(className), ...props, children: [
|
|
1926
|
+
/* @__PURE__ */ jsx19("span", { "data-slot": "identity-avatar", children: initials }),
|
|
1927
|
+
/* @__PURE__ */ jsxs17("span", { "data-slot": "identity-copy", children: [
|
|
1928
|
+
/* @__PURE__ */ jsx19("strong", { children: name }),
|
|
1929
|
+
detail ? /* @__PURE__ */ jsx19("small", { children: detail }) : null
|
|
1930
|
+
] })
|
|
1931
|
+
] });
|
|
1932
|
+
}
|
|
1933
|
+
|
|
1835
1934
|
export {
|
|
1836
1935
|
PaginationControls,
|
|
1837
1936
|
DataTable,
|
|
@@ -1883,6 +1982,22 @@ export {
|
|
|
1883
1982
|
StateView,
|
|
1884
1983
|
LoadingRows,
|
|
1885
1984
|
ErrorState,
|
|
1886
|
-
ValueMeter
|
|
1985
|
+
ValueMeter,
|
|
1986
|
+
WorkbenchShell,
|
|
1987
|
+
WorkbenchRail,
|
|
1988
|
+
WorkbenchMain,
|
|
1989
|
+
WorkbenchInspector,
|
|
1990
|
+
WorkbenchMobileToolbar,
|
|
1991
|
+
WorkbenchBackdrop,
|
|
1992
|
+
WorkbenchSection,
|
|
1993
|
+
WorkbenchSectionHeader,
|
|
1994
|
+
ResourceRow,
|
|
1995
|
+
ResourceRowIcon,
|
|
1996
|
+
ResourceRowContent,
|
|
1997
|
+
ResourceRowTitle,
|
|
1998
|
+
ResourceRowDescription,
|
|
1999
|
+
ResourceRowMeta,
|
|
2000
|
+
WorkbenchInspectorSection,
|
|
2001
|
+
IdentityRow
|
|
1887
2002
|
};
|
|
1888
|
-
//# sourceMappingURL=chunk-
|
|
2003
|
+
//# sourceMappingURL=chunk-KYH7IZ3Z.js.map
|