@ctrl-ui/react 0.9.6 → 0.9.9
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 +38 -2
- package/dist/activity.d.ts +3 -1
- package/dist/activity.js +2 -1
- package/dist/blocks/agent-run-sidebar.js +11 -10
- package/dist/blocks/agent-run.d.ts +3 -1
- package/dist/blocks/agent-run.js +21 -13
- package/dist/blocks/coding-agent.js +50 -69
- package/dist/blocks/design-canvas-inspector.js +1 -1
- package/dist/blocks/design-canvas.js +41 -34
- package/dist/blocks/discussion.js +1 -1
- package/dist/blocks/file-explorer.js +66 -47
- package/dist/blocks/settings.js +37 -41
- package/dist/blocks/team-chat.js +2 -1
- package/dist/blocks/theme-toggle.d.ts +2 -1
- package/dist/blocks/theme-toggle.js +13 -4
- package/dist/hooks/use-mobile.d.ts +1 -1
- package/dist/hooks/use-mobile.js +1 -1
- package/dist/knob-contracts/badge-knobs.d.ts +1 -1
- package/dist/knob-contracts/badge-knobs.js +3 -1
- package/dist/knob-contracts/button-knobs.d.ts +1 -1
- package/dist/knob-contracts/button-knobs.js +1 -0
- package/dist/knob-contracts/calendar-knobs.d.ts +1 -1
- package/dist/knob-contracts/calendar-knobs.js +9 -1
- package/dist/knob-contracts/card-knobs.d.ts +1 -1
- package/dist/knob-contracts/card-knobs.js +5 -1
- package/dist/knob-contracts/choice-knobs.d.ts +1 -1
- package/dist/knob-contracts/choice-knobs.js +1 -0
- package/dist/knob-contracts/collapsible-knobs.d.ts +1 -1
- package/dist/knob-contracts/collapsible-knobs.js +5 -1
- package/dist/knob-contracts/emoji-picker-knobs.d.ts +1 -1
- package/dist/knob-contracts/emoji-picker-knobs.js +3 -1
- package/dist/knob-contracts/field-knobs.d.ts +1 -1
- package/dist/knob-contracts/field-knobs.js +17 -1
- package/dist/knob-contracts/item-knobs.d.ts +1 -1
- package/dist/knob-contracts/item-knobs.js +6 -1
- package/dist/knob-contracts/kbd-knobs.d.ts +1 -1
- package/dist/knob-contracts/kbd-knobs.js +4 -1
- package/dist/knob-contracts/page-layout-knobs.d.ts +1 -1
- package/dist/knob-contracts/page-layout-knobs.js +1 -0
- package/dist/knob-contracts/pagination-knobs.d.ts +1 -1
- package/dist/knob-contracts/pagination-knobs.js +2 -1
- package/dist/knob-contracts/popup-knobs.d.ts +1 -1
- package/dist/knob-contracts/popup-knobs.js +9 -0
- package/dist/knob-contracts/range-knobs.d.ts +1 -1
- package/dist/knob-contracts/range-knobs.js +2 -0
- package/dist/knob-contracts/sidebar-knobs.d.ts +1 -1
- package/dist/knob-contracts/sidebar-knobs.js +2 -0
- package/dist/knob-contracts/tabs-knobs.d.ts +1 -1
- package/dist/knob-contracts/tabs-knobs.js +3 -0
- package/dist/knob-contracts/timeline-knobs.d.ts +1 -1
- package/dist/knob-contracts/timeline-knobs.js +4 -1
- package/dist/knob-contracts/tree-knobs.d.ts +1 -1
- package/dist/knob-contracts/tree-knobs.js +3 -1
- package/dist/skin.d.ts +2 -0
- package/dist/styles/index.css +2 -3
- package/dist/styles/recipes/activity.css +4 -0
- package/dist/styles/recipes/avatar.css +1 -1
- package/dist/styles/recipes/badge.css +17 -0
- package/dist/styles/recipes/button.css +8 -1
- package/dist/styles/recipes/calendar.css +82 -6
- package/dist/styles/recipes/card.css +40 -5
- package/dist/styles/recipes/choice.css +9 -2
- package/dist/styles/recipes/collapsible.css +8 -1
- package/dist/styles/recipes/color-picker-values.css +4 -0
- package/dist/styles/recipes/emoji-picker.css +29 -8
- package/dist/styles/recipes/empty.css +5 -0
- package/dist/styles/recipes/field-parts.css +80 -5
- package/dist/styles/recipes/field.css +113 -40
- package/dist/styles/recipes/item.css +44 -5
- package/dist/styles/recipes/kbd.css +26 -6
- package/dist/styles/recipes/morphing-panel.css +1 -1
- package/dist/styles/recipes/page-layout.css +18 -2
- package/dist/styles/recipes/pagination.css +8 -0
- package/dist/styles/recipes/popup-controls.css +41 -0
- package/dist/styles/recipes/popup-drawer.css +1 -0
- package/dist/styles/recipes/popup-lists.css +55 -6
- package/dist/styles/recipes/popup-motion.css +7 -1
- package/dist/styles/recipes/popup.css +10 -0
- package/dist/styles/recipes/range.css +16 -2
- package/dist/styles/recipes/sidebar-mobile.css +1 -1
- package/dist/styles/recipes/sidebar-parts.css +17 -1
- package/dist/styles/recipes/sidebar.css +11 -0
- package/dist/styles/recipes/skeleton.css +8 -0
- package/dist/styles/recipes/tabs.css +41 -8
- package/dist/styles/recipes/timeline.css +25 -2
- package/dist/styles/recipes/tree.css +33 -0
- package/dist/styles/theme.css +11 -1
- package/dist/surface-variants.d.ts +2 -0
- package/dist/surface-variants.js +2 -1
- package/dist/ui/alert-dialog.js +1 -1
- package/dist/ui/badge.js +1 -1
- package/dist/ui/calendar.js +9 -4
- package/dist/ui/card.d.ts +3 -1
- package/dist/ui/card.js +2 -1
- package/dist/ui/context-menu.d.ts +3 -1
- package/dist/ui/context-menu.js +2 -1
- package/dist/ui/dialog.js +1 -1
- package/dist/ui/dropdown-menu.d.ts +6 -3
- package/dist/ui/dropdown-menu.js +25 -7
- package/dist/ui/dropzone.js +10 -11
- package/dist/ui/empty.d.ts +4 -1
- package/dist/ui/empty.js +4 -2
- package/dist/ui/field.d.ts +6 -2
- package/dist/ui/field.js +4 -2
- package/dist/ui/menubar.d.ts +3 -1
- package/dist/ui/menubar.js +2 -1
- package/dist/ui/morphing-panel.d.ts +5 -1
- package/dist/ui/morphing-panel.js +4 -2
- package/dist/ui/select.js +2 -2
- package/dist/ui/sheet.d.ts +9 -0
- package/dist/ui/sheet.js +23 -1
- package/dist/ui/sidebar-mobile.js +1 -1
- package/dist/ui/sidebar-provider.d.ts +3 -1
- package/dist/ui/sidebar-provider.js +3 -2
- package/dist/ui/sidebar-resize-rail.js +1 -1
- package/dist/ui/sidebar.d.ts +6 -5
- package/dist/ui/sidebar.js +10 -9
- package/dist/ui/skeleton.d.ts +4 -1
- package/dist/ui/skeleton.js +8 -2
- package/dist/ui/tabs.d.ts +1 -1
- package/dist/ui/tabs.js +2 -13
- package/dist/ui/timeline.js +1 -1
- package/dist/ui/typography.d.ts +11 -5
- package/dist/ui/typography.js +18 -6
- package/lint/biome-preset.json +3 -0
- package/lint/class-policy.mjs +17 -0
- package/lint/eslint-plugin.mjs +87 -0
- package/lint/grit-rules.mjs +40 -0
- package/lint/no-component-style-classes.grit +16 -0
- package/lint/no-raw-type-classes.grit +2 -3
- package/lint/write-grit-rules.mjs +19 -0
- package/package.json +11 -2
- package/dist/styles/type-scale.css +0 -72
|
@@ -70,7 +70,8 @@ function FileExplorerBlock({ locations, activeLocationId, defaultActiveLocationI
|
|
|
70
70
|
layout,
|
|
71
71
|
persistOpen,
|
|
72
72
|
keyboardShortcut,
|
|
73
|
-
|
|
73
|
+
surface: "background",
|
|
74
|
+
className: cn(!contained && "h-svh overflow-hidden", className),
|
|
74
75
|
style: providerStyle,
|
|
75
76
|
...props,
|
|
76
77
|
children: [/* @__PURE__ */ jsx(FileExplorerSidebar, {
|
|
@@ -147,7 +148,7 @@ function FileExplorerSidebar({ locations, activeLocationId, sidebarTop, sidebarF
|
|
|
147
148
|
collapsible: "offcanvas",
|
|
148
149
|
children: [
|
|
149
150
|
sidebarTop ? /* @__PURE__ */ jsx(SidebarHeader, {
|
|
150
|
-
className: "min-h-11 justify-center
|
|
151
|
+
className: "min-h-11 justify-center",
|
|
151
152
|
children: sidebarTop
|
|
152
153
|
}) : null,
|
|
153
154
|
/* @__PURE__ */ jsx(SidebarContent, { children: groups.map((group) => /* @__PURE__ */ jsxs(SidebarGroup, { children: [group.label ? /* @__PURE__ */ jsx(SidebarGroupLabel, { children: group.label }) : null, /* @__PURE__ */ jsx(SidebarMenu, { children: group.items.map((location) => /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsxs(SidebarMenuButton, {
|
|
@@ -214,13 +215,10 @@ function FileExplorerHeader({ location, headingLevel, breadcrumbs, query, search
|
|
|
214
215
|
size: "sm",
|
|
215
216
|
className: "flex-[0_1_9rem] @xl/explorer:flex-[0_0_12rem]",
|
|
216
217
|
children: [
|
|
217
|
-
/* @__PURE__ */ jsx(InputGroupAddon, {
|
|
218
|
-
className: "
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
"aria-hidden": "true"
|
|
222
|
-
})
|
|
223
|
-
}),
|
|
218
|
+
/* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(SearchIcon, {
|
|
219
|
+
className: "size-3.5",
|
|
220
|
+
"aria-hidden": "true"
|
|
221
|
+
}) }),
|
|
224
222
|
/* @__PURE__ */ jsx(Input, {
|
|
225
223
|
type: "search",
|
|
226
224
|
"aria-label": searchLabel,
|
|
@@ -388,7 +386,7 @@ function FileExplorerColumns({ columns, selectedEntry, selectedPath, headingLeve
|
|
|
388
386
|
}) : /* @__PURE__ */ jsx(Text, {
|
|
389
387
|
size: "label",
|
|
390
388
|
weight: "medium",
|
|
391
|
-
className: "min-w-0 truncate
|
|
389
|
+
className: "mx-1 min-w-0 truncate",
|
|
392
390
|
children: activeColumn?.label
|
|
393
391
|
}), /* @__PURE__ */ jsxs(Drawer, { children: [/* @__PURE__ */ jsx(DrawerTrigger, {
|
|
394
392
|
render: /* @__PURE__ */ jsx(Button, {
|
|
@@ -401,7 +399,11 @@ function FileExplorerColumns({ columns, selectedEntry, selectedPath, headingLeve
|
|
|
401
399
|
}), /* @__PURE__ */ jsx(DrawerContent, { children: selectedEntry ? /* @__PURE__ */ jsx(DrawerBody, { children: /* @__PURE__ */ jsx(FileExplorerPreviewContent, {
|
|
402
400
|
entry: selectedEntry,
|
|
403
401
|
title: /* @__PURE__ */ jsx(DrawerTitle, {
|
|
404
|
-
className: "mt-4 max-w-full truncate
|
|
402
|
+
className: "mt-4 max-w-full truncate",
|
|
403
|
+
style: {
|
|
404
|
+
"--cui-popup-title-font-size": "var(--text-heading-4)",
|
|
405
|
+
"--cui-popup-title-line-height": "var(--text-heading-4--line-height)"
|
|
406
|
+
},
|
|
405
407
|
children: selectedEntry.name
|
|
406
408
|
})
|
|
407
409
|
}) }) : null })] })]
|
|
@@ -457,7 +459,8 @@ function FileExplorerColumnView({ column, optionRef, onSelect, onOpen, onOptionK
|
|
|
457
459
|
const groups = groupFileExplorerItems(column.entries);
|
|
458
460
|
const tabStopId = column.selectedId ?? groups[0]?.items[0]?.id;
|
|
459
461
|
if (column.entries.length === 0) return /* @__PURE__ */ jsx(Empty, {
|
|
460
|
-
className: "h-full
|
|
462
|
+
className: "h-full",
|
|
463
|
+
style: { "--cui-empty-radius": "0px" },
|
|
461
464
|
children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
|
|
462
465
|
/* @__PURE__ */ jsx(EmptyMedia, { children: /* @__PURE__ */ jsx(FolderIcon, {}) }),
|
|
463
466
|
/* @__PURE__ */ jsx(EmptyTitle, { children: "Empty folder" }),
|
|
@@ -483,7 +486,7 @@ function FileExplorerColumnView({ column, optionRef, onSelect, onOpen, onOptionK
|
|
|
483
486
|
variant: "quiet",
|
|
484
487
|
size: "sm",
|
|
485
488
|
active: isSelected,
|
|
486
|
-
className: "w-full justify-start gap-2
|
|
489
|
+
className: "w-full justify-start gap-2 text-start",
|
|
487
490
|
title: entry.name,
|
|
488
491
|
onClick: () => onSelect(entry),
|
|
489
492
|
onDoubleClick: () => onOpen(entry),
|
|
@@ -515,7 +518,7 @@ function FileExplorerColumnView({ column, optionRef, onSelect, onOpen, onOptionK
|
|
|
515
518
|
size: "caption",
|
|
516
519
|
weight: "semibold",
|
|
517
520
|
tone: "muted",
|
|
518
|
-
className: "mb-1
|
|
521
|
+
className: "mx-2 mb-1",
|
|
519
522
|
children: group.label
|
|
520
523
|
}), options]
|
|
521
524
|
}, group.label) : /* @__PURE__ */ jsx("div", {
|
|
@@ -529,7 +532,8 @@ function FileExplorerColumnView({ column, optionRef, onSelect, onOpen, onOptionK
|
|
|
529
532
|
}
|
|
530
533
|
function FileExplorerPreview({ entry, headingLevel }) {
|
|
531
534
|
if (!entry) return /* @__PURE__ */ jsx(Empty, {
|
|
532
|
-
className: "h-full
|
|
535
|
+
className: "h-full",
|
|
536
|
+
style: { "--cui-empty-radius": "0px" },
|
|
533
537
|
children: /* @__PURE__ */ jsxs(EmptyHeader, { children: [
|
|
534
538
|
/* @__PURE__ */ jsx(EmptyMedia, { children: /* @__PURE__ */ jsx(FileIcon, {}) }),
|
|
535
539
|
/* @__PURE__ */ jsx(EmptyTitle, { children: "Select an item" }),
|
|
@@ -569,14 +573,19 @@ function FileExplorerPreviewContent({ entry, title, className }) {
|
|
|
569
573
|
children: entry.description
|
|
570
574
|
}) : null,
|
|
571
575
|
entry.details && entry.details.length > 0 ? /* @__PURE__ */ jsx("dl", {
|
|
572
|
-
className: "mt-6 grid w-full grid-cols-[auto_1fr] gap-x-4 gap-y-2 border-t border-border/70 pt-4 text-start
|
|
576
|
+
className: "mt-6 grid w-full grid-cols-[auto_1fr] gap-x-4 gap-y-2 border-t border-border/70 pt-4 text-start",
|
|
573
577
|
children: entry.details.map((detail) => /* @__PURE__ */ jsxs("div", {
|
|
574
578
|
className: "contents",
|
|
575
|
-
children: [/* @__PURE__ */ jsx(
|
|
576
|
-
|
|
579
|
+
children: [/* @__PURE__ */ jsx(Text, {
|
|
580
|
+
as: "dt",
|
|
581
|
+
size: "caption",
|
|
582
|
+
tone: "muted",
|
|
577
583
|
children: detail.label
|
|
578
|
-
}), /* @__PURE__ */ jsx(
|
|
579
|
-
|
|
584
|
+
}), /* @__PURE__ */ jsx(Text, {
|
|
585
|
+
as: "dd",
|
|
586
|
+
size: "caption",
|
|
587
|
+
tone: "foreground",
|
|
588
|
+
className: "min-w-0 truncate text-end",
|
|
580
589
|
children: detail.value
|
|
581
590
|
})]
|
|
582
591
|
}, detail.label))
|
|
@@ -593,7 +602,8 @@ function FileExplorerSearchResults({ label, status, clearSearchLabel, results, o
|
|
|
593
602
|
const [activeIndex, setActiveIndex] = useState(0);
|
|
594
603
|
const tabStop = Math.min(activeIndex, results.length - 1);
|
|
595
604
|
if (results.length === 0) return /* @__PURE__ */ jsxs(Empty, {
|
|
596
|
-
className: "h-full
|
|
605
|
+
className: "h-full",
|
|
606
|
+
style: { "--cui-empty-radius": "0px" },
|
|
597
607
|
children: [/* @__PURE__ */ jsxs(EmptyHeader, { children: [
|
|
598
608
|
/* @__PURE__ */ jsx(EmptyMedia, { children: /* @__PURE__ */ jsx(SearchIcon, {}) }),
|
|
599
609
|
/* @__PURE__ */ jsx(EmptyTitle, { children: status }),
|
|
@@ -632,7 +642,8 @@ function FileExplorerSearchResults({ label, status, clearSearchLabel, results, o
|
|
|
632
642
|
as: "div",
|
|
633
643
|
size: "caption",
|
|
634
644
|
tone: "muted",
|
|
635
|
-
|
|
645
|
+
numeric: true,
|
|
646
|
+
className: "mx-2 mb-2",
|
|
636
647
|
children: status
|
|
637
648
|
}), /* @__PURE__ */ jsx("div", {
|
|
638
649
|
role: "listbox",
|
|
@@ -647,7 +658,7 @@ function FileExplorerSearchResults({ label, status, clearSearchLabel, results, o
|
|
|
647
658
|
tabIndex: index === tabStop ? 0 : -1,
|
|
648
659
|
variant: "quiet",
|
|
649
660
|
size: "lg",
|
|
650
|
-
className: "h-auto w-full justify-start gap-3
|
|
661
|
+
className: "h-auto min-h-12 w-full justify-start gap-3 text-start",
|
|
651
662
|
onClick: () => onSelect(result),
|
|
652
663
|
onDoubleClick: () => onOpen(result.entry, result.path),
|
|
653
664
|
onFocus: () => setActiveIndex(index),
|
|
@@ -679,39 +690,47 @@ function FileExplorerStatusBar({ breadcrumbs, selectedEntry }) {
|
|
|
679
690
|
const itemCount = selectedEntry?.children?.length ?? 0;
|
|
680
691
|
const itemLabel = itemCount === 1 ? "1 item" : `${itemCount} items`;
|
|
681
692
|
return /* @__PURE__ */ jsxs("footer", {
|
|
682
|
-
className: "flex h-8 shrink-0 items-center gap-3 border-t border-border/70 px-3
|
|
683
|
-
children: [/* @__PURE__ */ jsx(
|
|
693
|
+
className: "flex h-8 shrink-0 items-center gap-3 border-t border-border/70 px-3",
|
|
694
|
+
children: [/* @__PURE__ */ jsx(Text, {
|
|
695
|
+
size: "micro",
|
|
696
|
+
tone: "muted",
|
|
684
697
|
className: "min-w-0 flex-1 truncate",
|
|
685
698
|
title: path,
|
|
686
699
|
children: path
|
|
687
|
-
}), /* @__PURE__ */ jsx(
|
|
688
|
-
|
|
700
|
+
}), /* @__PURE__ */ jsx(Text, {
|
|
701
|
+
size: "micro",
|
|
702
|
+
tone: "muted",
|
|
703
|
+
numeric: true,
|
|
704
|
+
className: "shrink-0",
|
|
689
705
|
children: selectedEntry?.kind === "folder" ? itemLabel : selectedEntry?.name ?? "No selection"
|
|
690
706
|
})]
|
|
691
707
|
});
|
|
692
708
|
}
|
|
693
709
|
function FileExplorerAddressBar({ breadcrumbs, onSelect }) {
|
|
694
|
-
return /* @__PURE__ */ jsx(
|
|
695
|
-
"aria-label": "Current folder",
|
|
710
|
+
return /* @__PURE__ */ jsx("div", {
|
|
696
711
|
className: "min-w-0 overflow-hidden px-1",
|
|
697
|
-
children: /* @__PURE__ */ jsx(
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
children:
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
712
|
+
children: /* @__PURE__ */ jsx(Breadcrumb, {
|
|
713
|
+
"aria-label": "Current folder",
|
|
714
|
+
className: "min-w-0",
|
|
715
|
+
children: /* @__PURE__ */ jsx(BreadcrumbList, {
|
|
716
|
+
className: "min-w-0 flex-nowrap overflow-hidden",
|
|
717
|
+
children: breadcrumbs.map((breadcrumb, index) => {
|
|
718
|
+
const isCurrent = index === breadcrumbs.length - 1;
|
|
719
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [index > 0 ? /* @__PURE__ */ jsx(BreadcrumbSeparator, {}) : null, /* @__PURE__ */ jsx(BreadcrumbItem, {
|
|
720
|
+
className: "min-w-0",
|
|
721
|
+
children: isCurrent ? /* @__PURE__ */ jsx(BreadcrumbPage, {
|
|
722
|
+
className: "min-w-0 truncate",
|
|
723
|
+
title: breadcrumb.label,
|
|
724
|
+
children: breadcrumb.label
|
|
725
|
+
}) : /* @__PURE__ */ jsx(BreadcrumbLink, {
|
|
726
|
+
render: /* @__PURE__ */ jsx("button", { type: "button" }),
|
|
727
|
+
className: "min-w-0 truncate",
|
|
728
|
+
title: breadcrumb.label,
|
|
729
|
+
onClick: () => onSelect(breadcrumb),
|
|
730
|
+
children: breadcrumb.label
|
|
731
|
+
})
|
|
732
|
+
})] }, `${breadcrumb.id}:${breadcrumb.path.join("/")}`);
|
|
733
|
+
})
|
|
715
734
|
})
|
|
716
735
|
})
|
|
717
736
|
});
|
package/dist/blocks/settings.js
CHANGED
|
@@ -12,7 +12,7 @@ import { InputGroup, InputGroupAddon } from "../ui/input-group.js";
|
|
|
12
12
|
import { Input } from "../ui/input.js";
|
|
13
13
|
import { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle } from "../ui/empty.js";
|
|
14
14
|
import { searchSettings } from "./settings-data.js";
|
|
15
|
-
import { Field, FieldContent, FieldDescription, FieldGroup, FieldLabel, FieldLegend,
|
|
15
|
+
import { Field, FieldContent, FieldDescription, FieldGroup, FieldLabel, FieldLegend, FieldSet } from "../ui/field.js";
|
|
16
16
|
import { useEffect, useId, useState } from "react";
|
|
17
17
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
18
18
|
import { ArrowLeftIcon, SearchIcon, XIcon } from "lucide-react";
|
|
@@ -35,7 +35,8 @@ function SettingsBlock({ pages, activePageId, defaultActivePageId, onActivePageC
|
|
|
35
35
|
};
|
|
36
36
|
return /* @__PURE__ */ jsx(SidebarProvider, {
|
|
37
37
|
layout,
|
|
38
|
-
|
|
38
|
+
surface: "background",
|
|
39
|
+
className: cn(layout === "viewport" && "h-svh overflow-hidden", className),
|
|
39
40
|
style: providerStyle,
|
|
40
41
|
...props,
|
|
41
42
|
children: /* @__PURE__ */ jsx(SettingsShell, {
|
|
@@ -95,7 +96,8 @@ function SettingsShell({ pages, currentPage, query, results, backAction, searchP
|
|
|
95
96
|
/* @__PURE__ */ jsxs(Sidebar, {
|
|
96
97
|
collapsible: "offcanvas",
|
|
97
98
|
children: [/* @__PURE__ */ jsxs(SidebarHeader, {
|
|
98
|
-
|
|
99
|
+
divider: true,
|
|
100
|
+
className: "gap-3",
|
|
99
101
|
children: [backAction ? /* @__PURE__ */ jsx("div", {
|
|
100
102
|
className: "min-w-0",
|
|
101
103
|
children: backAction
|
|
@@ -144,13 +146,10 @@ function SettingsSearch({ value, label, placeholder, onValueChange }) {
|
|
|
144
146
|
return /* @__PURE__ */ jsxs(InputGroup, {
|
|
145
147
|
size: "sm",
|
|
146
148
|
children: [
|
|
147
|
-
/* @__PURE__ */ jsx(InputGroupAddon, {
|
|
148
|
-
className: "
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
"aria-hidden": "true"
|
|
152
|
-
})
|
|
153
|
-
}),
|
|
149
|
+
/* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(SearchIcon, {
|
|
150
|
+
className: "size-3.5",
|
|
151
|
+
"aria-hidden": "true"
|
|
152
|
+
}) }),
|
|
154
153
|
/* @__PURE__ */ jsx(Input, {
|
|
155
154
|
type: "search",
|
|
156
155
|
"aria-label": label,
|
|
@@ -203,7 +202,6 @@ function SettingsSearchNavigation({ results, onSelect, onClear }) {
|
|
|
203
202
|
}
|
|
204
203
|
return /* @__PURE__ */ jsx(Fragment$1, { children: [...groups.values()].map((group) => /* @__PURE__ */ jsxs(SidebarGroup, { children: [/* @__PURE__ */ jsxs(SidebarGroupLabel, { children: [group.page.icon, /* @__PURE__ */ jsx("span", { children: group.page.title })] }), /* @__PURE__ */ jsx(SidebarMenu, { children: group.results.map((result) => /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(SidebarMenuButton, {
|
|
205
204
|
size: "sm",
|
|
206
|
-
className: "h-auto min-h-(--control-h-sm) py-1.5",
|
|
207
205
|
onClick: () => onSelect(result),
|
|
208
206
|
children: /* @__PURE__ */ jsx("span", {
|
|
209
207
|
title: result.setting.title,
|
|
@@ -222,58 +220,56 @@ function SettingsPage({ page, instanceId }) {
|
|
|
222
220
|
}), page.sections.map((section) => /* @__PURE__ */ jsxs(FieldSet, {
|
|
223
221
|
className: "gap-3",
|
|
224
222
|
children: [/* @__PURE__ */ jsx(FieldLegend, {
|
|
225
|
-
|
|
223
|
+
variant: "section",
|
|
226
224
|
children: section.title
|
|
227
225
|
}), /* @__PURE__ */ jsx(FieldGroup, {
|
|
228
|
-
|
|
229
|
-
children: section.settings.map((setting
|
|
226
|
+
variant: "card",
|
|
227
|
+
children: section.settings.map((setting) => /* @__PURE__ */ jsx(SettingsRow, {
|
|
230
228
|
pageId: page.id,
|
|
231
229
|
sectionId: section.id,
|
|
232
230
|
setting,
|
|
233
|
-
instanceId
|
|
234
|
-
separated: index > 0
|
|
231
|
+
instanceId
|
|
235
232
|
}, setting.id))
|
|
236
233
|
})]
|
|
237
234
|
}, section.id))]
|
|
238
235
|
});
|
|
239
236
|
}
|
|
240
|
-
function SettingsRow({ pageId, sectionId, setting, instanceId
|
|
237
|
+
function SettingsRow({ pageId, sectionId, setting, instanceId }) {
|
|
241
238
|
const ids = settingDomIds(instanceId, pageId, sectionId, setting.id);
|
|
242
239
|
const controlProps = {
|
|
243
240
|
id: ids.control,
|
|
244
241
|
"aria-labelledby": ids.label,
|
|
245
242
|
"aria-describedby": setting.description ? ids.description : void 0
|
|
246
243
|
};
|
|
247
|
-
return /* @__PURE__ */
|
|
244
|
+
return /* @__PURE__ */ jsx("div", {
|
|
248
245
|
id: ids.row,
|
|
249
|
-
orientation: "responsive",
|
|
250
246
|
tabIndex: -1,
|
|
251
|
-
className: "scroll-m-8
|
|
252
|
-
children:
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
247
|
+
className: "scroll-m-8 outline-none transition-colors duration-[var(--duration-fast)] focus:bg-foreground/4 focus-within:bg-foreground/4",
|
|
248
|
+
children: /* @__PURE__ */ jsxs(Field, {
|
|
249
|
+
orientation: "responsive",
|
|
250
|
+
className: "gap-3",
|
|
251
|
+
children: [/* @__PURE__ */ jsxs(FieldContent, { children: [/* @__PURE__ */ jsx(FieldLabel, {
|
|
252
|
+
id: ids.label,
|
|
253
|
+
htmlFor: ids.control,
|
|
254
|
+
children: setting.title
|
|
255
|
+
}), setting.description ? /* @__PURE__ */ jsx(FieldDescription, {
|
|
256
|
+
id: ids.description,
|
|
257
|
+
children: setting.description
|
|
258
|
+
}) : null] }), /* @__PURE__ */ jsx("div", {
|
|
259
|
+
className: "flex shrink-0 items-center",
|
|
260
|
+
children: setting.renderControl(controlProps)
|
|
261
|
+
})]
|
|
262
|
+
})
|
|
263
|
+
});
|
|
265
264
|
}
|
|
266
265
|
function SettingsEmpty({ title, description, action }) {
|
|
267
266
|
return /* @__PURE__ */ jsxs(Empty, {
|
|
268
|
-
className: "min-h-40
|
|
267
|
+
className: "min-h-40",
|
|
269
268
|
children: [/* @__PURE__ */ jsxs(EmptyHeader, { children: [
|
|
270
|
-
/* @__PURE__ */ jsx(EmptyMedia, {
|
|
271
|
-
className: "
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
"aria-hidden": "true"
|
|
275
|
-
})
|
|
276
|
-
}),
|
|
269
|
+
/* @__PURE__ */ jsx(EmptyMedia, { children: /* @__PURE__ */ jsx(SearchIcon, {
|
|
270
|
+
className: "size-4",
|
|
271
|
+
"aria-hidden": "true"
|
|
272
|
+
}) }),
|
|
277
273
|
/* @__PURE__ */ jsx(EmptyTitle, { children: title }),
|
|
278
274
|
/* @__PURE__ */ jsx(EmptyDescription, { children: description })
|
|
279
275
|
] }), action ? /* @__PURE__ */ jsx(EmptyContent, { children: action }) : null]
|
package/dist/blocks/team-chat.js
CHANGED
|
@@ -7,7 +7,8 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
7
7
|
function TeamChatBlock({ sidebar, children, thread, threadLabel = "Thread", className, ...props }) {
|
|
8
8
|
const threadIsOpen = thread !== void 0 && thread !== null;
|
|
9
9
|
return /* @__PURE__ */ jsxs(SidebarProvider, {
|
|
10
|
-
|
|
10
|
+
surface: "background",
|
|
11
|
+
className,
|
|
11
12
|
...props,
|
|
12
13
|
children: [sidebar, /* @__PURE__ */ jsxs(SidebarInset, {
|
|
13
14
|
className: "@container/team-chat flex h-full min-h-0 min-w-0 flex-row",
|
|
@@ -31,12 +31,13 @@ export type ThemeSwitchProps = Omit<ComponentProps<typeof Switch>, "checked" | "
|
|
|
31
31
|
export type ThemeSegmentedSwitchProps = Omit<ComponentProps<"div">, "onChange"> & ThemeControlProps & {
|
|
32
32
|
name?: string;
|
|
33
33
|
showLabels?: boolean;
|
|
34
|
+
disabled?: boolean;
|
|
34
35
|
};
|
|
35
36
|
export type ThemeDropdownProps = Omit<ComponentProps<typeof DropdownMenuTrigger>, "children" | "value" | "onChange"> & ThemeControlProps & {
|
|
36
37
|
label?: string;
|
|
37
38
|
};
|
|
38
39
|
export declare function ThemeSwitch({ value, onValueChange, onValue, offValue, checkedIcon, uncheckedIcon, "aria-label": ariaLabel, ...props }: ThemeSwitchProps): import("react").JSX.Element;
|
|
39
|
-
export declare function ThemeSegmentedSwitch({ value, onValueChange, options, showLabels, name, className, style, "aria-label": ariaLabel, ...props }: ThemeSegmentedSwitchProps): import("react").JSX.Element;
|
|
40
|
+
export declare function ThemeSegmentedSwitch({ value, onValueChange, options, showLabels, disabled, name, className, style, "aria-label": ariaLabel, ...props }: ThemeSegmentedSwitchProps): import("react").JSX.Element;
|
|
40
41
|
export declare function ThemeToggle({ value, onValueChange, options, showLabel, showLabels, className, onClick, "aria-label": ariaLabel, ...props }: ThemeToggleProps): import("react").JSX.Element;
|
|
41
42
|
export declare function ThemeDropdown({ value, onValueChange, options, label, className, "aria-label": ariaLabel, ...props }: ThemeDropdownProps): import("react").JSX.Element;
|
|
42
43
|
//#endregion
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { Button } from "../ui/button.js";
|
|
3
|
+
import { Text } from "../ui/typography.js";
|
|
3
4
|
import { DropdownMenu, DropdownMenuContent, DropdownMenuLabel, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuTrigger } from "../ui/dropdown-menu.js";
|
|
4
5
|
import { Switch } from "../ui/switch.js";
|
|
5
6
|
import { useId } from "react";
|
|
@@ -57,9 +58,12 @@ function ThemeSwitch({ value, onValueChange, onValue = "dark", offValue = "light
|
|
|
57
58
|
...props
|
|
58
59
|
});
|
|
59
60
|
}
|
|
60
|
-
function ThemeSegmentedSwitch({ value, onValueChange, options = defaultThemeOptions, showLabels = false, name, className, style, "aria-label": ariaLabel = "Theme", ...props }) {
|
|
61
|
+
function ThemeSegmentedSwitch({ value, onValueChange, options = defaultThemeOptions, showLabels = false, disabled = false, name, className, style, "aria-label": ariaLabel = "Theme", ...props }) {
|
|
61
62
|
const generatedName = useId();
|
|
62
|
-
const choices = controlOptions(options)
|
|
63
|
+
const choices = controlOptions(options).map((option) => disabled ? {
|
|
64
|
+
...option,
|
|
65
|
+
disabled: true
|
|
66
|
+
} : option);
|
|
63
67
|
const currentValue = effectiveThemeValue(value, choices);
|
|
64
68
|
const indicatorStyle = {
|
|
65
69
|
"--_theme-switch-index": Math.max(0, choices.findIndex((option) => option.value === currentValue)),
|
|
@@ -68,6 +72,7 @@ function ThemeSegmentedSwitch({ value, onValueChange, options = defaultThemeOpti
|
|
|
68
72
|
return /* @__PURE__ */ jsxs("div", {
|
|
69
73
|
role: "radiogroup",
|
|
70
74
|
"aria-label": ariaLabel,
|
|
75
|
+
"aria-disabled": disabled || void 0,
|
|
71
76
|
"data-control-ui": "theme-toggle",
|
|
72
77
|
"data-control-family": "theme-toggle",
|
|
73
78
|
"data-slot": "root",
|
|
@@ -91,7 +96,7 @@ function ThemeSegmentedSwitch({ value, onValueChange, options = defaultThemeOpti
|
|
|
91
96
|
"data-control": "true",
|
|
92
97
|
"data-selected": selected ? "true" : void 0,
|
|
93
98
|
"data-disabled": option.disabled ? "true" : void 0,
|
|
94
|
-
className: classes("relative z-[1] inline-flex h-(--control-h-xs) cursor-pointer items-center justify-center gap-1.5 rounded-(--_theme-switch-radius) px-1.5
|
|
99
|
+
className: classes("relative z-[1] inline-flex h-(--control-h-xs) cursor-pointer items-center justify-center gap-1.5 rounded-(--_theme-switch-radius) px-1.5 transition-colors duration-(--duration-fast) ease-(--ease-standard) not-data-[disabled=true]:hover:text-foreground data-[disabled=true]:cursor-not-allowed data-[disabled=true]:opacity-(--disabled-opacity) data-[selected=true]:text-foreground", showLabels ? "min-w-20" : "w-(--control-h-xs)"),
|
|
95
100
|
children: [
|
|
96
101
|
/* @__PURE__ */ jsx("input", {
|
|
97
102
|
type: "radio",
|
|
@@ -109,7 +114,11 @@ function ThemeSegmentedSwitch({ value, onValueChange, options = defaultThemeOpti
|
|
|
109
114
|
className: "size-3.5",
|
|
110
115
|
"aria-hidden": true
|
|
111
116
|
}),
|
|
112
|
-
showLabels ? /* @__PURE__ */ jsx(
|
|
117
|
+
showLabels ? /* @__PURE__ */ jsx(Text, {
|
|
118
|
+
size: "label",
|
|
119
|
+
weight: "medium",
|
|
120
|
+
children: option.label
|
|
121
|
+
}) : null
|
|
113
122
|
]
|
|
114
123
|
}, option.value);
|
|
115
124
|
})]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/hooks/use-mobile.d.ts
|
|
2
2
|
type Breakpoint = number | `--${string}`;
|
|
3
|
-
/** True below `breakpoint`: px (Tailwind `md` by default) or a theme breakpoint token such as `--breakpoint-
|
|
3
|
+
/** True below `breakpoint`: px (Tailwind `md` by default) or a theme breakpoint token such as `--breakpoint-sidebar`, so JS and the matching Tailwind variant share one value. */
|
|
4
4
|
export declare function useIsMobile(breakpoint?: Breakpoint): boolean;
|
|
5
5
|
//#endregion
|
package/dist/hooks/use-mobile.js
CHANGED
|
@@ -24,7 +24,7 @@ function viewportStore(breakpoint) {
|
|
|
24
24
|
function getServerViewportSnapshot() {
|
|
25
25
|
return false;
|
|
26
26
|
}
|
|
27
|
-
/** True below `breakpoint`: px (Tailwind `md` by default) or a theme breakpoint token such as `--breakpoint-
|
|
27
|
+
/** True below `breakpoint`: px (Tailwind `md` by default) or a theme breakpoint token such as `--breakpoint-sidebar`, so JS and the matching Tailwind variant share one value. */
|
|
28
28
|
function useIsMobile(breakpoint = MOBILE_BREAKPOINT) {
|
|
29
29
|
const store = viewportStore(breakpoint);
|
|
30
30
|
return useSyncExternalStore(store.subscribe, store.getSnapshot, getServerViewportSnapshot);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/knob-contracts/badge-knobs.d.ts
|
|
2
|
-
export declare const badgeKnobs: readonly ["--cui-badge-radius", "--cui-badge-background", "--cui-badge-foreground", "--cui-badge-border-color", "--cui-badge-font-size"];
|
|
2
|
+
export declare const badgeKnobs: readonly ["--cui-badge-radius", "--cui-badge-background", "--cui-badge-foreground", "--cui-badge-border-color", "--cui-badge-border-width", "--cui-badge-font-size", "--cui-badge-font-weight"];
|
|
3
3
|
export type BadgeKnobStyle = Partial<Record<(typeof badgeKnobs)[number], string>>;
|
|
4
4
|
//#endregion
|
|
@@ -4,7 +4,9 @@ const badgeKnobs = [
|
|
|
4
4
|
"--cui-badge-background",
|
|
5
5
|
"--cui-badge-foreground",
|
|
6
6
|
"--cui-badge-border-color",
|
|
7
|
-
"--cui-badge-
|
|
7
|
+
"--cui-badge-border-width",
|
|
8
|
+
"--cui-badge-font-size",
|
|
9
|
+
"--cui-badge-font-weight"
|
|
8
10
|
];
|
|
9
11
|
//#endregion
|
|
10
12
|
export { badgeKnobs };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/knob-contracts/button-knobs.d.ts
|
|
2
|
-
export declare const buttonKnobs: readonly ["--cui-button-radius", "--cui-button-gap", "--cui-button-icon", "--cui-button-height", "--cui-button-padding-inline", "--cui-button-icon-padding-inline", "--cui-button-font-size", "--cui-button-background", "--cui-button-background-image", "--cui-button-hover-background-image", "--cui-button-foreground", "--cui-button-hover-background", "--cui-button-hover-foreground", "--cui-button-press-background", "--cui-button-press-scale", "--cui-button-active-background", "--cui-button-active-foreground", "--cui-button-active-hover-background", "--cui-button-shadow", "--cui-button-hover-shadow", "--cui-button-press-shadow", "--cui-button-active-shadow", "--cui-button-open-background", "--cui-button-open-foreground", "--cui-button-open-shadow"];
|
|
2
|
+
export declare const buttonKnobs: readonly ["--cui-button-radius", "--cui-button-gap", "--cui-button-icon", "--cui-button-height", "--cui-button-padding-inline", "--cui-button-icon-padding-inline", "--cui-button-font-size", "--cui-button-font-weight", "--cui-button-background", "--cui-button-background-image", "--cui-button-hover-background-image", "--cui-button-foreground", "--cui-button-hover-background", "--cui-button-hover-foreground", "--cui-button-press-background", "--cui-button-press-scale", "--cui-button-active-background", "--cui-button-active-foreground", "--cui-button-active-hover-background", "--cui-button-shadow", "--cui-button-hover-shadow", "--cui-button-press-shadow", "--cui-button-active-shadow", "--cui-button-open-background", "--cui-button-open-foreground", "--cui-button-open-shadow"];
|
|
3
3
|
export type ButtonKnobStyle = Partial<Record<(typeof buttonKnobs)[number], string>>;
|
|
4
4
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/knob-contracts/calendar-knobs.d.ts
|
|
2
|
-
export declare const calendarKnobs: readonly ["--cui-calendar-day-radius", "--cui-calendar-today-background", "--cui-calendar-selected-background", "--cui-calendar-selected-foreground", "--cui-calendar-range-background"];
|
|
2
|
+
export declare const calendarKnobs: readonly ["--cui-calendar-day-radius", "--cui-calendar-today-background", "--cui-calendar-selected-background", "--cui-calendar-selected-foreground", "--cui-calendar-range-background", "--cui-calendar-day-size", "--cui-calendar-cell-padding", "--cui-calendar-today-shadow", "--cui-calendar-weekend-foreground", "--cui-calendar-weekend-background", "--cui-calendar-caption-font-size", "--cui-calendar-caption-font-weight", "--cui-calendar-weekday-font-size"];
|
|
3
3
|
export type CalendarKnobStyle = Partial<Record<(typeof calendarKnobs)[number], string>>;
|
|
4
4
|
//#endregion
|
|
@@ -4,7 +4,15 @@ const calendarKnobs = [
|
|
|
4
4
|
"--cui-calendar-today-background",
|
|
5
5
|
"--cui-calendar-selected-background",
|
|
6
6
|
"--cui-calendar-selected-foreground",
|
|
7
|
-
"--cui-calendar-range-background"
|
|
7
|
+
"--cui-calendar-range-background",
|
|
8
|
+
"--cui-calendar-day-size",
|
|
9
|
+
"--cui-calendar-cell-padding",
|
|
10
|
+
"--cui-calendar-today-shadow",
|
|
11
|
+
"--cui-calendar-weekend-foreground",
|
|
12
|
+
"--cui-calendar-weekend-background",
|
|
13
|
+
"--cui-calendar-caption-font-size",
|
|
14
|
+
"--cui-calendar-caption-font-weight",
|
|
15
|
+
"--cui-calendar-weekday-font-size"
|
|
8
16
|
];
|
|
9
17
|
//#endregion
|
|
10
18
|
export { calendarKnobs };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/knob-contracts/card-knobs.d.ts
|
|
2
|
-
export declare const cardKnobs: readonly ["--cui-card-radius", "--cui-card-background", "--cui-card-border-color", "--cui-card-border-width", "--cui-card-shadow", "--cui-card-backdrop-filter"];
|
|
2
|
+
export declare const cardKnobs: readonly ["--cui-card-radius", "--cui-card-background", "--cui-card-border-color", "--cui-card-border-width", "--cui-card-shadow", "--cui-card-backdrop-filter", "--cui-card-padding-block", "--cui-card-padding-inline", "--cui-card-gap", "--cui-card-title-font-size"];
|
|
3
3
|
export type CardKnobStyle = Partial<Record<(typeof cardKnobs)[number], string>>;
|
|
4
4
|
//#endregion
|
|
@@ -5,7 +5,11 @@ const cardKnobs = [
|
|
|
5
5
|
"--cui-card-border-color",
|
|
6
6
|
"--cui-card-border-width",
|
|
7
7
|
"--cui-card-shadow",
|
|
8
|
-
"--cui-card-backdrop-filter"
|
|
8
|
+
"--cui-card-backdrop-filter",
|
|
9
|
+
"--cui-card-padding-block",
|
|
10
|
+
"--cui-card-padding-inline",
|
|
11
|
+
"--cui-card-gap",
|
|
12
|
+
"--cui-card-title-font-size"
|
|
9
13
|
];
|
|
10
14
|
//#endregion
|
|
11
15
|
export { cardKnobs };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/knob-contracts/choice-knobs.d.ts
|
|
2
|
-
export declare const choiceKnobs: readonly ["--cui-choice-radius", "--cui-choice-border-color", "--cui-choice-border-width", "--cui-choice-background", "--cui-choice-checked-background", "--cui-choice-checked-border-color", "--cui-choice-shadow"];
|
|
2
|
+
export declare const choiceKnobs: readonly ["--cui-choice-size", "--cui-choice-radius", "--cui-choice-border-color", "--cui-choice-border-width", "--cui-choice-background", "--cui-choice-checked-background", "--cui-choice-checked-border-color", "--cui-choice-shadow"];
|
|
3
3
|
export type ChoiceKnobStyle = Partial<Record<(typeof choiceKnobs)[number], string>>;
|
|
4
4
|
//#endregion
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/knob-contracts/collapsible-knobs.d.ts
|
|
2
|
-
export declare const collapsibleKnobs: readonly ["--cui-collapsible-trigger-radius", "--cui-collapsible-trigger-hover-background"];
|
|
2
|
+
export declare const collapsibleKnobs: readonly ["--cui-collapsible-trigger-radius", "--cui-collapsible-trigger-hover-background", "--cui-collapsible-trigger-padding-inline"];
|
|
3
3
|
export type CollapsibleKnobStyle = Partial<Record<(typeof collapsibleKnobs)[number], string>>;
|
|
4
4
|
//#endregion
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
//#region src/knob-contracts/collapsible-knobs.ts
|
|
2
|
-
const collapsibleKnobs = [
|
|
2
|
+
const collapsibleKnobs = [
|
|
3
|
+
"--cui-collapsible-trigger-radius",
|
|
4
|
+
"--cui-collapsible-trigger-hover-background",
|
|
5
|
+
"--cui-collapsible-trigger-padding-inline"
|
|
6
|
+
];
|
|
3
7
|
//#endregion
|
|
4
8
|
export { collapsibleKnobs };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/knob-contracts/emoji-picker-knobs.d.ts
|
|
2
|
-
export declare const emojiPickerKnobs: readonly ["--cui-emoji-picker-cell-size", "--cui-emoji-picker-height", "--cui-emoji-picker-cell-radius", "--cui-emoji-picker-glyph-size", "--cui-emoji-picker-active-background", "--cui-emoji-picker-header-background", "--cui-emoji-picker-header-foreground"];
|
|
2
|
+
export declare const emojiPickerKnobs: readonly ["--cui-emoji-picker-cell-size", "--cui-emoji-picker-height", "--cui-emoji-picker-cell-radius", "--cui-emoji-picker-glyph-size", "--cui-emoji-picker-active-background", "--cui-emoji-picker-header-background", "--cui-emoji-picker-header-foreground", "--cui-emoji-picker-header-font-size", "--cui-emoji-picker-search-font-size"];
|
|
3
3
|
export type EmojiPickerKnobStyle = Partial<Record<(typeof emojiPickerKnobs)[number], string>>;
|
|
4
4
|
//#endregion
|
|
@@ -6,7 +6,9 @@ const emojiPickerKnobs = [
|
|
|
6
6
|
"--cui-emoji-picker-glyph-size",
|
|
7
7
|
"--cui-emoji-picker-active-background",
|
|
8
8
|
"--cui-emoji-picker-header-background",
|
|
9
|
-
"--cui-emoji-picker-header-foreground"
|
|
9
|
+
"--cui-emoji-picker-header-foreground",
|
|
10
|
+
"--cui-emoji-picker-header-font-size",
|
|
11
|
+
"--cui-emoji-picker-search-font-size"
|
|
10
12
|
];
|
|
11
13
|
//#endregion
|
|
12
14
|
export { emojiPickerKnobs };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
//#region src/knob-contracts/field-knobs.d.ts
|
|
2
|
-
export declare const fieldKnobs: readonly ["--cui-field-radius", "--cui-field-background", "--cui-field-hover-background", "--cui-field-affordance-background", "--cui-field-affordance-shadow", "--cui-field-affordance-foreground", "--cui-field-affordance-hover-background", "--cui-field-foreground", "--cui-field-border-color", "--cui-field-border-width", "--cui-field-shadow", "--cui-field-backdrop-filter", "--cui-field-height", "--cui-field-padding-inline", "--cui-field-font-size"];
|
|
2
|
+
export declare const fieldKnobs: readonly ["--cui-field-legend-font-size", "--cui-field-legend-font-weight", "--cui-field-radius", "--cui-field-background", "--cui-field-hover-background", "--cui-field-affordance-background", "--cui-field-affordance-shadow", "--cui-field-affordance-foreground", "--cui-field-affordance-hover-background", "--cui-field-foreground", "--cui-field-border-color", "--cui-field-border-width", "--cui-field-shadow", "--cui-field-backdrop-filter", "--cui-field-height", "--cui-field-padding-inline", "--cui-field-font-size", "--cui-field-font-weight", "--cui-field-font-family", "--cui-field-group-radius", "--cui-field-group-background", "--cui-field-group-border-color", "--cui-field-group-border-width", "--cui-field-group-shadow", "--cui-field-group-padding-block", "--cui-field-group-padding-inline", "--cui-field-group-separator-color", "--cui-field-group-separator-inset", "--cui-field-label-font-size", "--cui-field-label-font-weight", "--cui-field-description-font-size"];
|
|
3
3
|
export type FieldKnobStyle = Partial<Record<(typeof fieldKnobs)[number], string>>;
|
|
4
4
|
//#endregion
|