@ai-matrx/design-system 0.61.19 → 0.61.21

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.
@@ -334,6 +334,9 @@ interface SourceListItemProps extends React.ButtonHTMLAttributes<HTMLButtonEleme
334
334
  badge?: React.ReactNode;
335
335
  /** This row is the open page. */
336
336
  current?: boolean;
337
+ /** Not built yet: drawn dimmed with no hint (it still opens its Coming soon page). One look for
338
+ * every unbuilt row, so no list repeats "Coming soon" row after row. */
339
+ soon?: boolean;
337
340
  }
338
341
  declare const SourceListItem: React.ForwardRefExoticComponent<SourceListItemProps & React.RefAttributes<HTMLButtonElement>>;
339
342
  /** "Show more / Show less" under a long section. */
@@ -462,6 +465,23 @@ interface StatusLightProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "
462
465
  declare function StatusLight({ tone, label, className, ...props }: StatusLightProps): React.JSX.Element;
463
466
  /** A keyboard shortcut, e.g. `<Kbd>⌘K</Kbd>`. */
464
467
  declare function Kbd({ className, ...props }: React.HTMLAttributes<HTMLElement>): React.JSX.Element;
468
+ /**
469
+ * Where one thing is, per place (a chat per window): `in` filled, `out` an empty ring, `hidden` a
470
+ * tint ring (there, but that place does not show it), `open` green (in use there now). `marked`
471
+ * adds a small dot inside (the place's own mark, e.g. its pin). 12 px; the label is the tooltip
472
+ * and the accessible name, so a mark is never unexplained.
473
+ */
474
+ type PlaceMarkState = "in" | "out" | "hidden" | "open";
475
+ interface PlaceMarkProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "children"> {
476
+ state: PlaceMarkState;
477
+ /** The place's own mark on the thing (a pin): a dot inside the circle. */
478
+ marked?: boolean;
479
+ /** What the mark says ("emily: listed, pinned"); tooltip and accessible name. */
480
+ label: string;
481
+ }
482
+ declare function PlaceMark({ state, marked, label, className, ...props }: PlaceMarkProps): React.JSX.Element;
483
+ /** A row of PlaceMarks in a fixed order (one per place), e.g. a chat's windows in a table cell. */
484
+ declare function PlaceStrip({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): React.JSX.Element;
465
485
 
466
486
  /**
467
487
  * Display formatting for desktop screens: ONE way to show a size, a duration, a time and an error.
@@ -481,4 +501,4 @@ declare function formatClockTime(at: Date | number | string | null | undefined):
481
501
  /** How much of a capacity is used, in the same words everywhere: "183 GB of 275 GB in use". */
482
502
  declare function formatUsage(used: number | null | undefined, total: number | null | undefined): string;
483
503
 
484
- export { Banner, type BannerProps, type BannerTone, Button, type ButtonProps, CodeBlock, type CodeBlockProps, type Column, ComingSoon, type ComingSoonProps, DataTable, type DataTableProps, ErrorBanner, type ErrorBannerProps, FIELD, FieldRow, type FieldRowProps, IconButton, type IconButtonProps, Kbd, METER_THRESHOLDS, Meter, type MeterProps, Page, PageHeader, type PageHeaderProps, type PageProps, type PageWidth, Resource, type ResourceProps, type ResourceState, Row, type RowAction, type RowMenuItem, type RowProps, SearchField, type SearchFieldProps, Section, SectionContent, type SectionProps, type Segment, Segmented, type SegmentedProps, Select, type SelectOption, type SelectProps, type SortState, SourceList, SourceListItem, type SourceListItemProps, SourceListMore, type SourceListMoreProps, SourceListSection, type SourceListSectionProps, Spinner, type SpinnerProps, StateView, type StateViewProps, StatusLight, type StatusLightProps, type StatusTone as StatusLightTone, TEXT_TONE, Tag, type TagProps, type TagTone, Text, TextArea, type TextAreaProps, TextField, type TextFieldProps, type TextProps, type TextTone, type TextVariant, Toolbar, ToolbarDivider, type ToolbarProps, ToolbarSpacer, buttonVariants, cn, errorMessage, formatAge, formatBytes, formatClockTime, formatDuration, formatRelativeTime, formatUsage, meterTone };
504
+ export { Banner, type BannerProps, type BannerTone, Button, type ButtonProps, CodeBlock, type CodeBlockProps, type Column, ComingSoon, type ComingSoonProps, DataTable, type DataTableProps, ErrorBanner, type ErrorBannerProps, FIELD, FieldRow, type FieldRowProps, IconButton, type IconButtonProps, Kbd, METER_THRESHOLDS, Meter, type MeterProps, Page, PageHeader, type PageHeaderProps, type PageProps, type PageWidth, PlaceMark, type PlaceMarkProps, type PlaceMarkState, PlaceStrip, Resource, type ResourceProps, type ResourceState, Row, type RowAction, type RowMenuItem, type RowProps, SearchField, type SearchFieldProps, Section, SectionContent, type SectionProps, type Segment, Segmented, type SegmentedProps, Select, type SelectOption, type SelectProps, type SortState, SourceList, SourceListItem, type SourceListItemProps, SourceListMore, type SourceListMoreProps, SourceListSection, type SourceListSectionProps, Spinner, type SpinnerProps, StateView, type StateViewProps, StatusLight, type StatusLightProps, type StatusTone as StatusLightTone, TEXT_TONE, Tag, type TagProps, type TagTone, Text, TextArea, type TextAreaProps, TextField, type TextFieldProps, type TextProps, type TextTone, type TextVariant, Toolbar, ToolbarDivider, type ToolbarProps, ToolbarSpacer, buttonVariants, cn, errorMessage, formatAge, formatBytes, formatClockTime, formatDuration, formatRelativeTime, formatUsage, meterTone };
package/dist/desktop.d.ts CHANGED
@@ -334,6 +334,9 @@ interface SourceListItemProps extends React.ButtonHTMLAttributes<HTMLButtonEleme
334
334
  badge?: React.ReactNode;
335
335
  /** This row is the open page. */
336
336
  current?: boolean;
337
+ /** Not built yet: drawn dimmed with no hint (it still opens its Coming soon page). One look for
338
+ * every unbuilt row, so no list repeats "Coming soon" row after row. */
339
+ soon?: boolean;
337
340
  }
338
341
  declare const SourceListItem: React.ForwardRefExoticComponent<SourceListItemProps & React.RefAttributes<HTMLButtonElement>>;
339
342
  /** "Show more / Show less" under a long section. */
@@ -462,6 +465,23 @@ interface StatusLightProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "
462
465
  declare function StatusLight({ tone, label, className, ...props }: StatusLightProps): React.JSX.Element;
463
466
  /** A keyboard shortcut, e.g. `<Kbd>⌘K</Kbd>`. */
464
467
  declare function Kbd({ className, ...props }: React.HTMLAttributes<HTMLElement>): React.JSX.Element;
468
+ /**
469
+ * Where one thing is, per place (a chat per window): `in` filled, `out` an empty ring, `hidden` a
470
+ * tint ring (there, but that place does not show it), `open` green (in use there now). `marked`
471
+ * adds a small dot inside (the place's own mark, e.g. its pin). 12 px; the label is the tooltip
472
+ * and the accessible name, so a mark is never unexplained.
473
+ */
474
+ type PlaceMarkState = "in" | "out" | "hidden" | "open";
475
+ interface PlaceMarkProps extends Omit<React.HTMLAttributes<HTMLSpanElement>, "children"> {
476
+ state: PlaceMarkState;
477
+ /** The place's own mark on the thing (a pin): a dot inside the circle. */
478
+ marked?: boolean;
479
+ /** What the mark says ("emily: listed, pinned"); tooltip and accessible name. */
480
+ label: string;
481
+ }
482
+ declare function PlaceMark({ state, marked, label, className, ...props }: PlaceMarkProps): React.JSX.Element;
483
+ /** A row of PlaceMarks in a fixed order (one per place), e.g. a chat's windows in a table cell. */
484
+ declare function PlaceStrip({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): React.JSX.Element;
465
485
 
466
486
  /**
467
487
  * Display formatting for desktop screens: ONE way to show a size, a duration, a time and an error.
@@ -481,4 +501,4 @@ declare function formatClockTime(at: Date | number | string | null | undefined):
481
501
  /** How much of a capacity is used, in the same words everywhere: "183 GB of 275 GB in use". */
482
502
  declare function formatUsage(used: number | null | undefined, total: number | null | undefined): string;
483
503
 
484
- export { Banner, type BannerProps, type BannerTone, Button, type ButtonProps, CodeBlock, type CodeBlockProps, type Column, ComingSoon, type ComingSoonProps, DataTable, type DataTableProps, ErrorBanner, type ErrorBannerProps, FIELD, FieldRow, type FieldRowProps, IconButton, type IconButtonProps, Kbd, METER_THRESHOLDS, Meter, type MeterProps, Page, PageHeader, type PageHeaderProps, type PageProps, type PageWidth, Resource, type ResourceProps, type ResourceState, Row, type RowAction, type RowMenuItem, type RowProps, SearchField, type SearchFieldProps, Section, SectionContent, type SectionProps, type Segment, Segmented, type SegmentedProps, Select, type SelectOption, type SelectProps, type SortState, SourceList, SourceListItem, type SourceListItemProps, SourceListMore, type SourceListMoreProps, SourceListSection, type SourceListSectionProps, Spinner, type SpinnerProps, StateView, type StateViewProps, StatusLight, type StatusLightProps, type StatusTone as StatusLightTone, TEXT_TONE, Tag, type TagProps, type TagTone, Text, TextArea, type TextAreaProps, TextField, type TextFieldProps, type TextProps, type TextTone, type TextVariant, Toolbar, ToolbarDivider, type ToolbarProps, ToolbarSpacer, buttonVariants, cn, errorMessage, formatAge, formatBytes, formatClockTime, formatDuration, formatRelativeTime, formatUsage, meterTone };
504
+ export { Banner, type BannerProps, type BannerTone, Button, type ButtonProps, CodeBlock, type CodeBlockProps, type Column, ComingSoon, type ComingSoonProps, DataTable, type DataTableProps, ErrorBanner, type ErrorBannerProps, FIELD, FieldRow, type FieldRowProps, IconButton, type IconButtonProps, Kbd, METER_THRESHOLDS, Meter, type MeterProps, Page, PageHeader, type PageHeaderProps, type PageProps, type PageWidth, PlaceMark, type PlaceMarkProps, type PlaceMarkState, PlaceStrip, Resource, type ResourceProps, type ResourceState, Row, type RowAction, type RowMenuItem, type RowProps, SearchField, type SearchFieldProps, Section, SectionContent, type SectionProps, type Segment, Segmented, type SegmentedProps, Select, type SelectOption, type SelectProps, type SortState, SourceList, SourceListItem, type SourceListItemProps, SourceListMore, type SourceListMoreProps, SourceListSection, type SourceListSectionProps, Spinner, type SpinnerProps, StateView, type StateViewProps, StatusLight, type StatusLightProps, type StatusTone as StatusLightTone, TEXT_TONE, Tag, type TagProps, type TagTone, Text, TextArea, type TextAreaProps, TextField, type TextFieldProps, type TextProps, type TextTone, type TextVariant, Toolbar, ToolbarDivider, type ToolbarProps, ToolbarSpacer, buttonVariants, cn, errorMessage, formatAge, formatBytes, formatClockTime, formatDuration, formatRelativeTime, formatUsage, meterTone };
package/dist/desktop.js CHANGED
@@ -2175,7 +2175,7 @@ function SourceListSection({ title, action, className, children, ...props }) {
2175
2175
  children
2176
2176
  ] });
2177
2177
  }
2178
- var SourceListItem = React19.forwardRef(function SourceListItem2({ icon, label, hint, badge, current, className, type = "button", ...props }, ref) {
2178
+ var SourceListItem = React19.forwardRef(function SourceListItem2({ icon, label, hint, badge, current, soon, className, type = "button", ...props }, ref) {
2179
2179
  return /* @__PURE__ */ jsxs13(
2180
2180
  "button",
2181
2181
  {
@@ -2183,10 +2183,12 @@ var SourceListItem = React19.forwardRef(function SourceListItem2({ icon, label,
2183
2183
  type,
2184
2184
  "data-slot": "source-list-item",
2185
2185
  "data-current": current || void 0,
2186
+ "data-soon": soon || void 0,
2186
2187
  "aria-current": current ? "page" : void 0,
2187
2188
  className: cn(
2188
2189
  "focus-ring group/item flex w-full items-center gap-2 rounded-control px-2 text-left text-body text-label transition-colors duration-100 hover:bg-fill disabled:opacity-40",
2189
- hint ? "min-h-row py-1" : "h-sidebar-row",
2190
+ hint && !soon ? "min-h-row py-1" : "h-sidebar-row",
2191
+ soon && "text-label-tertiary",
2190
2192
  current && "bg-selection-muted font-medium hover:bg-selection-muted [[data-window-active=false]_&]:bg-fill",
2191
2193
  className
2192
2194
  ),
@@ -2195,7 +2197,7 @@ var SourceListItem = React19.forwardRef(function SourceListItem2({ icon, label,
2195
2197
  icon ? /* @__PURE__ */ jsx23("span", { className: cn("flex size-icon shrink-0 items-center justify-center text-label-secondary [&_svg]:size-icon", hint && "self-start mt-px"), children: icon }) : null,
2196
2198
  /* @__PURE__ */ jsxs13("span", { className: "flex min-w-0 flex-1 flex-col", children: [
2197
2199
  /* @__PURE__ */ jsx23("span", { className: "truncate", children: label }),
2198
- hint ? /* @__PURE__ */ jsx23("span", { className: "truncate text-callout font-normal text-label-secondary", children: hint }) : null
2200
+ hint && !soon ? /* @__PURE__ */ jsx23("span", { className: "truncate text-callout font-normal text-label-secondary", children: hint }) : null
2199
2201
  ] }),
2200
2202
  badge ? /* @__PURE__ */ jsx23("span", { className: "flex shrink-0 items-center text-callout tabular-nums text-label-tertiary", children: badge }) : null
2201
2203
  ]
@@ -2376,6 +2378,37 @@ function Kbd({ className, ...props }) {
2376
2378
  }
2377
2379
  );
2378
2380
  }
2381
+ var PLACE = {
2382
+ in: "bg-tint",
2383
+ out: "border border-label-tertiary",
2384
+ hidden: "border-2 border-tint",
2385
+ open: "bg-system-green"
2386
+ };
2387
+ var PLACE_DOT = {
2388
+ in: "bg-window",
2389
+ out: "bg-label-secondary",
2390
+ hidden: "bg-tint",
2391
+ open: "bg-window"
2392
+ };
2393
+ function PlaceMark({ state, marked = false, label, className, ...props }) {
2394
+ return /* @__PURE__ */ jsx26(
2395
+ "span",
2396
+ {
2397
+ role: "img",
2398
+ "aria-label": label,
2399
+ title: label,
2400
+ "data-slot": "place-mark",
2401
+ "data-state": state,
2402
+ "data-marked": marked ? "true" : void 0,
2403
+ className: cn("inline-flex size-3 shrink-0 items-center justify-center rounded-full", PLACE[state], className),
2404
+ ...props,
2405
+ children: marked ? /* @__PURE__ */ jsx26("span", { className: cn("size-1.5 rounded-full", PLACE_DOT[state]) }) : null
2406
+ }
2407
+ );
2408
+ }
2409
+ function PlaceStrip({ className, ...props }) {
2410
+ return /* @__PURE__ */ jsx26("span", { "data-slot": "place-strip", className: cn("inline-flex items-center gap-1", className), ...props });
2411
+ }
2379
2412
 
2380
2413
  // src/desktop/coming-soon.tsx
2381
2414
  import { jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
@@ -3485,6 +3518,8 @@ export {
3485
3518
  OrganizationMark,
3486
3519
  Page,
3487
3520
  PageHeader,
3521
+ PlaceMark,
3522
+ PlaceStrip,
3488
3523
  Popover,
3489
3524
  PopoverAnchor,
3490
3525
  PopoverContent,