@adea-ai/ui 0.61.1 → 0.63.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.
Files changed (130) hide show
  1. package/README.md +94 -6
  2. package/dist/LICENSE +201 -0
  3. package/dist/NOTICE +101 -0
  4. package/dist/components/composites/account-menu/index.js +2 -0
  5. package/dist/components/composites/appearance-editor/appearance-choices.d.ts +5 -0
  6. package/dist/components/composites/appearance-editor/appearance-choices.d.ts.map +1 -0
  7. package/dist/components/composites/appearance-editor/appearance-choices.js +211 -0
  8. package/dist/components/composites/appearance-editor/appearance-choices.js.map +1 -0
  9. package/dist/components/composites/appearance-editor/appearance-editor.d.ts +15 -0
  10. package/dist/components/composites/appearance-editor/appearance-editor.d.ts.map +1 -0
  11. package/dist/components/composites/appearance-editor/appearance-editor.js +280 -0
  12. package/dist/components/composites/appearance-editor/appearance-editor.js.map +1 -0
  13. package/dist/components/composites/appearance-editor/appearance-rows.d.ts +18 -0
  14. package/dist/components/composites/appearance-editor/appearance-rows.d.ts.map +1 -0
  15. package/dist/components/composites/appearance-editor/appearance-rows.js +101 -0
  16. package/dist/components/composites/appearance-editor/appearance-rows.js.map +1 -0
  17. package/dist/components/composites/appearance-editor/appearance-types.d.ts +42 -0
  18. package/dist/components/composites/appearance-editor/appearance-types.d.ts.map +1 -0
  19. package/dist/components/composites/appearance-editor/index.d.ts +4 -0
  20. package/dist/components/composites/appearance-editor/index.d.ts.map +1 -0
  21. package/dist/components/composites/appearance-editor/index.js +3 -0
  22. package/dist/components/composites/appearance-editor/theme-preview.d.ts +17 -0
  23. package/dist/components/composites/appearance-editor/theme-preview.d.ts.map +1 -0
  24. package/dist/components/composites/appearance-editor/theme-preview.js +158 -0
  25. package/dist/components/composites/appearance-editor/theme-preview.js.map +1 -0
  26. package/dist/components/composites/list-row/index.js +2 -0
  27. package/dist/components/composites/settings/index.js +2 -0
  28. package/dist/components/composites/stat/index.js +2 -0
  29. package/dist/components/composites/update-dialog/index.js +2 -0
  30. package/dist/components/composites/workspace-mark/index.js +2 -0
  31. package/dist/components/conversation/index.js +6 -0
  32. package/dist/components/layout/app-shell/index.js +2 -0
  33. package/dist/components/layout/page/index.js +2 -0
  34. package/dist/components/layout/panel/index.js +2 -0
  35. package/dist/components/layout/side-rail/index.js +3 -0
  36. package/dist/components/layout/sidebar-nav/index.js +2 -0
  37. package/dist/components/layout/status-bar/index.js +2 -0
  38. package/dist/components/layout/top-bar/index.js +2 -0
  39. package/dist/components/motion/index.js +2 -2
  40. package/dist/components/theme/index.js +5 -0
  41. package/dist/components/ui/accordion/index.js +2 -0
  42. package/dist/components/ui/alert/index.js +2 -0
  43. package/dist/components/ui/alert-dialog/index.js +2 -0
  44. package/dist/components/ui/aspect-ratio/index.js +2 -0
  45. package/dist/components/ui/avatar/index.js +2 -0
  46. package/dist/components/ui/badge/index.js +2 -0
  47. package/dist/components/ui/board/index.js +2 -0
  48. package/dist/components/ui/breadcrumb/index.js +2 -0
  49. package/dist/components/ui/button/index.js +2 -0
  50. package/dist/components/ui/button-group/index.js +2 -0
  51. package/dist/components/ui/calendar/index.js +2 -0
  52. package/dist/components/ui/card/index.js +2 -0
  53. package/dist/components/ui/carousel/index.js +2 -0
  54. package/dist/components/ui/chart/index.js +2 -0
  55. package/dist/components/ui/checkbox/index.js +2 -0
  56. package/dist/components/ui/code-block/index.js +2 -0
  57. package/dist/components/ui/collapsible/index.js +2 -0
  58. package/dist/components/ui/combobox/index.js +2 -0
  59. package/dist/components/ui/command/index.js +2 -0
  60. package/dist/components/ui/context-menu/index.js +2 -0
  61. package/dist/components/ui/detail-panel/index.js +2 -0
  62. package/dist/components/ui/dialog/index.js +2 -0
  63. package/dist/components/ui/diff-block/index.js +2 -0
  64. package/dist/components/ui/drawer/index.js +2 -0
  65. package/dist/components/ui/dropdown-menu/index.js +2 -0
  66. package/dist/components/ui/empty/index.js +2 -0
  67. package/dist/components/ui/entity-icon/index.js +2 -0
  68. package/dist/components/ui/field/index.js +2 -0
  69. package/dist/components/ui/hover-card/index.js +2 -0
  70. package/dist/components/ui/input/index.js +2 -0
  71. package/dist/components/ui/input-group/index.js +2 -0
  72. package/dist/components/ui/input-otp/index.js +2 -0
  73. package/dist/components/ui/item/index.js +2 -0
  74. package/dist/components/ui/kbd/index.js +2 -0
  75. package/dist/components/ui/label/index.js +2 -0
  76. package/dist/components/ui/menubar/index.js +2 -0
  77. package/dist/components/ui/modal-dialog/index.js +2 -0
  78. package/dist/components/ui/navigation-menu/index.js +2 -0
  79. package/dist/components/ui/pagination/index.js +2 -0
  80. package/dist/components/ui/popover/index.js +2 -0
  81. package/dist/components/ui/progress/index.js +2 -0
  82. package/dist/components/ui/radio-group/index.js +2 -0
  83. package/dist/components/ui/resizable/index.js +2 -0
  84. package/dist/components/ui/scroll-area/index.js +2 -0
  85. package/dist/components/ui/select/index.js +2 -0
  86. package/dist/components/ui/select/select.d.ts +5 -1
  87. package/dist/components/ui/select/select.d.ts.map +1 -1
  88. package/dist/components/ui/select/select.js +24 -20
  89. package/dist/components/ui/select/select.js.map +1 -1
  90. package/dist/components/ui/separator/index.js +2 -0
  91. package/dist/components/ui/sheet/index.js +2 -0
  92. package/dist/components/ui/skeleton/index.js +2 -0
  93. package/dist/components/ui/slider/index.js +2 -0
  94. package/dist/components/ui/spinner/index.js +2 -0
  95. package/dist/components/ui/status-chip/index.js +2 -0
  96. package/dist/components/ui/switch/index.js +2 -0
  97. package/dist/components/ui/table/index.js +2 -0
  98. package/dist/components/ui/tabs/index.js +2 -0
  99. package/dist/components/ui/textarea/index.js +2 -0
  100. package/dist/components/ui/toast/index.js +2 -0
  101. package/dist/components/ui/toggle/index.js +2 -0
  102. package/dist/components/ui/toggle-group/index.js +2 -0
  103. package/dist/components/ui/tooltip/index.js +2 -0
  104. package/dist/index.d.ts +3 -4
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +3 -3
  107. package/dist/r/appearance-editor.json +51 -0
  108. package/dist/r/lib.json +1 -1
  109. package/dist/r/registry.json +52 -1
  110. package/dist/r/src/components/composites/appearance-editor/appearance-choices.tsx +173 -0
  111. package/dist/r/src/components/composites/appearance-editor/appearance-editor.tsx +239 -0
  112. package/dist/r/src/components/composites/appearance-editor/appearance-rows.tsx +122 -0
  113. package/dist/r/src/components/composites/appearance-editor/appearance-types.ts +40 -0
  114. package/dist/r/src/components/composites/appearance-editor/index.ts +12 -0
  115. package/dist/r/src/components/composites/appearance-editor/theme-preview.tsx +128 -0
  116. package/dist/r/src/components/ui/select/select.tsx +8 -3
  117. package/package.json +11 -9
  118. package/registry.json +52 -1
  119. package/src/components/composites/appearance-editor/appearance-choices.tsx +173 -0
  120. package/src/components/composites/appearance-editor/appearance-editor.tsx +239 -0
  121. package/src/components/composites/appearance-editor/appearance-rows.tsx +122 -0
  122. package/src/components/composites/appearance-editor/appearance-types.ts +40 -0
  123. package/src/components/composites/appearance-editor/index.ts +12 -0
  124. package/src/components/composites/appearance-editor/theme-preview.tsx +128 -0
  125. package/src/components/ui/select/select.tsx +8 -3
  126. package/src/index.ts +3 -4
  127. package/dist/components/ui/diff-block/diff-block.test.d.ts +0 -2
  128. package/dist/components/ui/diff-block/diff-block.test.d.ts.map +0 -1
  129. package/dist/lib/keyed-rows.test.d.ts +0 -2
  130. package/dist/lib/keyed-rows.test.d.ts.map +0 -1
@@ -0,0 +1,2 @@
1
+ import { Sheet, SheetBody, SheetCloseButton, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, sheetVariants } from "./sheet.js";
2
+ export { Sheet, SheetBody, SheetCloseButton, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, sheetVariants };
@@ -0,0 +1,2 @@
1
+ import { Skeleton } from "./skeleton.js";
2
+ export { Skeleton };
@@ -0,0 +1,2 @@
1
+ import { Slider } from "./slider.js";
2
+ export { Slider };
@@ -0,0 +1,2 @@
1
+ import { Spinner } from "./spinner.js";
2
+ export { Spinner };
@@ -0,0 +1,2 @@
1
+ import { StatusChip, StatusList, statusDotVariants } from "./status-chip.js";
2
+ export { StatusChip, StatusList, statusDotVariants };
@@ -0,0 +1,2 @@
1
+ import { Switch, SwitchDescription, SwitchLabel } from "./switch.js";
2
+ export { Switch, SwitchDescription, SwitchLabel };
@@ -0,0 +1,2 @@
1
+ import { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableNumericCell, TableRow } from "./table.js";
2
+ export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableNumericCell, TableRow };
@@ -0,0 +1,2 @@
1
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from "./tabs.js";
2
+ export { Tabs, TabsContent, TabsList, TabsTrigger };
@@ -0,0 +1,2 @@
1
+ import { Textarea } from "./textarea.js";
2
+ export { Textarea };
@@ -0,0 +1,2 @@
1
+ import { Toaster, toast, toaster } from "./toast.js";
2
+ export { Toaster, toast, toaster };
@@ -0,0 +1,2 @@
1
+ import { Toggle, toggleVariants } from "./toggle.js";
2
+ export { Toggle, toggleVariants };
@@ -0,0 +1,2 @@
1
+ import { ToggleGroup, ToggleGroupItem } from "./toggle-group.js";
2
+ export { ToggleGroup, ToggleGroupItem };
@@ -0,0 +1,2 @@
1
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./tooltip.js";
2
+ export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger };
package/dist/index.d.ts CHANGED
@@ -10,8 +10,8 @@
10
10
  * import '@adea-ai/ui/fonts.css'
11
11
  *
12
12
  * Everything here is covered by the Storybook workshop in `apps/storybook`,
13
- * which is also where the reasoning behind each component is written down. If a
14
- * component is not exported here, it is not part of the contract.
13
+ * which is also where the reasoning behind each component is written down. An
14
+ * optional-peer component lives on its documented component subpath rather than here.
15
15
  */
16
16
  export * from './components/ui/accordion';
17
17
  export * from './components/ui/alert';
@@ -24,8 +24,6 @@ export * from './components/ui/breadcrumb';
24
24
  export * from './components/ui/button';
25
25
  export * from './components/ui/button-group';
26
26
  export * from './components/ui/calendar';
27
- export * from './components/ui/carousel';
28
- export * from './components/ui/chart';
29
27
  export * from './components/ui/card';
30
28
  export * from './components/ui/checkbox';
31
29
  export * from './components/ui/collapsible';
@@ -86,6 +84,7 @@ export * from './components/composites/account-menu';
86
84
  export * from './components/composites/list-row';
87
85
  export * from './components/composites/settings';
88
86
  export * from './components/composites/stat';
87
+ export * from './components/composites/appearance-editor';
89
88
  export * from './components/composites/update-dialog';
90
89
  export * from './components/composites/workspace-mark';
91
90
  export { cn } from './lib/utils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -12,8 +12,6 @@ import { Button, buttonVariants } from "./components/ui/button/button.js";
12
12
  import { Separator } from "./components/ui/separator/separator.js";
13
13
  import { ButtonGroup, ButtonGroupSeparator, ButtonGroupText } from "./components/ui/button-group/button-group.js";
14
14
  import { CalendarSurface, DatePicker } from "./components/ui/calendar/calendar.js";
15
- import { Carousel, CarouselSlide } from "./components/ui/carousel/carousel.js";
16
- import { BarChart, BubbleChart, ChartFrame, ChartLegend, DonutChart, LineChart, PolarAreaChart, RadarChart, ScatterChart, chartOptions, chartSeriesColors, registerChartPiece } from "./components/ui/chart/chart.js";
17
15
  import { Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "./components/ui/card/card.js";
18
16
  import { Checkbox, CheckboxDescription, CheckboxLabel } from "./components/ui/checkbox/checkbox.js";
19
17
  import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "./components/ui/collapsible/collapsible.js";
@@ -84,8 +82,10 @@ import { AccountMenu } from "./components/composites/account-menu/account-menu.j
84
82
  import { ListGroup, ListRow } from "./components/composites/list-row/list-row.js";
85
83
  import { SettingsField, SettingsPage, SettingsRow, SettingsSection } from "./components/composites/settings/settings.js";
86
84
  import { PropertyList, PropertyRow, PropertyTerm, PropertyValue, Stat, StatGroup } from "./components/composites/stat/stat.js";
85
+ import { PalettePreview, ThemeMiniature, ThemeMiniatureSplit } from "./components/composites/appearance-editor/theme-preview.js";
86
+ import { AppearanceEditor, AppearancePopover } from "./components/composites/appearance-editor/appearance-editor.js";
87
87
  import { formatBytes, formatReleaseDate, plainTextFromMarkdown } from "./lib/version-notes.js";
88
88
  import { UpdateDialog } from "./components/composites/update-dialog/update-dialog.js";
89
89
  import { WorkspaceMark } from "./components/composites/workspace-mark/workspace-mark.js";
90
90
  import { keyedRows } from "./lib/keyed-rows.js";
91
- export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AccountMenu, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppShell, AppShellBody, AppShellContent, AppShellMain, AppearancePanel, AspectRatio, AttachmentCard, Avatar, AvatarFallback, AvatarImage, Badge, BarChart, Board, BoardCardBody, BoardCardTitle, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbSeparator, BubbleChart, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, CalendarSurface, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselSlide, ChartFrame, ChartLegend, Checkbox, CheckboxDescription, CheckboxLabel, CodeBlock, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxClear, ComboboxContent, ComboboxControl, ComboboxInput, ComboboxItem, ComboboxSection, ComboboxTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandLoading, CommandSeparator, CommandShortcut, ComposerAttachmentButton, ComposerHint, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ConversationAvatar, ConversationSurface, DatePicker, DetailPanel, DetailPanelBody, DetailPanelField, DetailPanelHeader, DetailPanelSection, Dialog, DialogClose, DialogCloseButton, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffBlock, DiffSummary, DonutChart, Drawer, DrawerBody, DrawerCloseButton, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, EntityIcon, Field, FieldDescription, FieldError, FieldInput, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTextArea, HoverCard, HoverCardContent, HoverCardTrigger, InlineCode, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputOtp, InputOtpCaret, Item, ItemDescription, ItemEmpty, ItemGroup, ItemGroupEntry, ItemTitle, Kbd, KbdGroup, Label, LineChart, ListGroup, ListRow, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MessageBody, MessageComposer, MessageDayDivider, MessageGroup, MessageRow, ModalDialog, Motion, NavigationMenu, NavigationMenuContent, NavigationMenuGroup, NavigationMenuGroupLabel, NavigationMenuItem, NavigationMenuMenu, NavigationMenuSeparator, NavigationMenuTrigger, NavigationMenuViewport, Page, PageHeader, PageHeaderActions, PageHeaderContent, PageHeaderDescription, PageHeaderTitle, PageSection, Pagination, PaginationEllipsis, PaginationItem, PaginationNext, PaginationPrevious, Panel, PanelActions, PanelBody, PanelCard, PanelDescription, PanelFooter, PanelHeader, PanelPlaceholder, PanelTitle, PanelToolbar, PolarAreaChart, Popover, PopoverAnchor, PopoverCloseButton, PopoverContent, PopoverDescription, PopoverTitle, PopoverTrigger, Presence, Progress, PropertyList, PropertyRow, PropertyTerm, PropertyValue, RadarChart, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScatterChart, ScrollArea, Select, SelectChevronsUpDown, SelectContent, SelectItem, SelectLabel, SelectSection, SelectTrigger, SelectValue, Separator, SettingsField, SettingsPage, SettingsRow, SettingsSection, Sheet, SheetBody, SheetCloseButton, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, SideRail, SideRailButton, SideRailContent, SideRailFooter, SideRailHeader, SideRailItem, SideRailSection, SidebarNav, SidebarNavButton, SidebarNavContent, SidebarNavFooter, SidebarNavHeader, SidebarNavItem, SidebarNavSection, SidebarNavTitle, Skeleton, Slider, Spinner, Stat, StatGroup, StatusBar, StatusBarItem, StatusBarSpacer, StatusChip, StatusList, Switch, SwitchDescription, SwitchLabel, TALL_CODE_BLOCK_PX, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableNumericCell, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemePicker, ThemePreview, ThemeProvider, ThemeSwatch, ThemeToggle, ThreadPanel, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopBar, TopBarBreadcrumb, TopBarPill, TopBarSearch, TopBarSection, TopBarTitle, UpdateDialog, WorkspaceMark, accentPresets, alertVariants, allTokens, badgeVariants, boardCardTitleVariants, builtinThemes, buttonVariants, chartOptions, chartSeriesColors, cn, colorTokens, contrastRatio, controlInteractive, controlSize, controlSizeIcon, controlSizes, cva, defaultDarkThemeId, defaultLightThemeId, defaultThemeSelection, densityTokens, designTokens, diffLineVariants, diffStats, diffTargetPath, elevationTokens, entityIconVariants, fontOptions, formatBytes, formatReleaseDate, initialsFrom, inlineScriptLiteral, itemVariants, keyedRows, monogram, motionTokens, parseDiff, plainTextFromMarkdown, radiusTokens, registerChartPiece, resolvedDensity, sheetVariants, sidebarNavItemClass, sidebarNavItemStateClass, statusDotVariants, surfaceInteractive, themeById, themeCssVariables, themeFamilies, themeScript, themesForAppearance, toast, toaster, toggleVariants, typographyTokens, undocumentedTokenAliases, useSideRail, useTheme, validateTheme, validateThemeRegistry, zIndexTokens };
91
+ export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, AccountMenu, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AppShell, AppShellBody, AppShellContent, AppShellMain, AppearanceEditor, AppearancePanel, AppearancePopover, AspectRatio, AttachmentCard, Avatar, AvatarFallback, AvatarImage, Badge, Board, BoardCardBody, BoardCardTitle, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbSeparator, Button, ButtonGroup, ButtonGroupSeparator, ButtonGroupText, CalendarSurface, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, CheckboxDescription, CheckboxLabel, CodeBlock, Collapsible, CollapsibleContent, CollapsibleTrigger, Combobox, ComboboxClear, ComboboxContent, ComboboxControl, ComboboxInput, ComboboxItem, ComboboxSection, ComboboxTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandLoading, CommandSeparator, CommandShortcut, ComposerAttachmentButton, ComposerHint, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ConversationAvatar, ConversationSurface, DatePicker, DetailPanel, DetailPanelBody, DetailPanelField, DetailPanelHeader, DetailPanelSection, Dialog, DialogClose, DialogCloseButton, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffBlock, DiffSummary, Drawer, DrawerBody, DrawerCloseButton, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, EntityIcon, Field, FieldDescription, FieldError, FieldInput, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTextArea, HoverCard, HoverCardContent, HoverCardTrigger, InlineCode, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputOtp, InputOtpCaret, Item, ItemDescription, ItemEmpty, ItemGroup, ItemGroupEntry, ItemTitle, Kbd, KbdGroup, Label, ListGroup, ListRow, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MessageBody, MessageComposer, MessageDayDivider, MessageGroup, MessageRow, ModalDialog, Motion, NavigationMenu, NavigationMenuContent, NavigationMenuGroup, NavigationMenuGroupLabel, NavigationMenuItem, NavigationMenuMenu, NavigationMenuSeparator, NavigationMenuTrigger, NavigationMenuViewport, Page, PageHeader, PageHeaderActions, PageHeaderContent, PageHeaderDescription, PageHeaderTitle, PageSection, Pagination, PaginationEllipsis, PaginationItem, PaginationNext, PaginationPrevious, PalettePreview, Panel, PanelActions, PanelBody, PanelCard, PanelDescription, PanelFooter, PanelHeader, PanelPlaceholder, PanelTitle, PanelToolbar, Popover, PopoverAnchor, PopoverCloseButton, PopoverContent, PopoverDescription, PopoverTitle, PopoverTrigger, Presence, Progress, PropertyList, PropertyRow, PropertyTerm, PropertyValue, RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, ScrollArea, Select, SelectChevronsUpDown, SelectContent, SelectItem, SelectLabel, SelectSection, SelectTrigger, SelectValue, Separator, SettingsField, SettingsPage, SettingsRow, SettingsSection, Sheet, SheetBody, SheetCloseButton, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, SideRail, SideRailButton, SideRailContent, SideRailFooter, SideRailHeader, SideRailItem, SideRailSection, SidebarNav, SidebarNavButton, SidebarNavContent, SidebarNavFooter, SidebarNavHeader, SidebarNavItem, SidebarNavSection, SidebarNavTitle, Skeleton, Slider, Spinner, Stat, StatGroup, StatusBar, StatusBarItem, StatusBarSpacer, StatusChip, StatusList, Switch, SwitchDescription, SwitchLabel, TALL_CODE_BLOCK_PX, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableNumericCell, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, Textarea, ThemeMiniature, ThemeMiniatureSplit, ThemePicker, ThemePreview, ThemeProvider, ThemeSwatch, ThemeToggle, ThreadPanel, Toaster, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TopBar, TopBarBreadcrumb, TopBarPill, TopBarSearch, TopBarSection, TopBarTitle, UpdateDialog, WorkspaceMark, accentPresets, alertVariants, allTokens, badgeVariants, boardCardTitleVariants, builtinThemes, buttonVariants, cn, colorTokens, contrastRatio, controlInteractive, controlSize, controlSizeIcon, controlSizes, cva, defaultDarkThemeId, defaultLightThemeId, defaultThemeSelection, densityTokens, designTokens, diffLineVariants, diffStats, diffTargetPath, elevationTokens, entityIconVariants, fontOptions, formatBytes, formatReleaseDate, initialsFrom, inlineScriptLiteral, itemVariants, keyedRows, monogram, motionTokens, parseDiff, plainTextFromMarkdown, radiusTokens, resolvedDensity, sheetVariants, sidebarNavItemClass, sidebarNavItemStateClass, statusDotVariants, surfaceInteractive, themeById, themeCssVariables, themeFamilies, themeScript, themesForAppearance, toast, toaster, toggleVariants, typographyTokens, undocumentedTokenAliases, useSideRail, useTheme, validateTheme, validateThemeRegistry, zIndexTokens };
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "appearance-editor",
3
+ "type": "registry:ui",
4
+ "title": "Appearance Editor",
5
+ "description": "",
6
+ "dependencies": [
7
+ "@adea-ai/themes@^0.5.0",
8
+ "@kobalte/core@^0.13.14",
9
+ "lucide-solid@^1.48.0"
10
+ ],
11
+ "registryDependencies": [
12
+ "@adea-ai/ui/button",
13
+ "@adea-ai/ui/input",
14
+ "@adea-ai/ui/popover",
15
+ "@adea-ai/ui/select",
16
+ "@adea-ai/ui/switch",
17
+ "lib"
18
+ ],
19
+ "files": [
20
+ {
21
+ "path": "src/components/composites/appearance-editor/appearance-choices.tsx",
22
+ "type": "registry:ui",
23
+ "target": "components/composites/appearance-editor/appearance-choices.tsx"
24
+ },
25
+ {
26
+ "path": "src/components/composites/appearance-editor/appearance-editor.tsx",
27
+ "type": "registry:ui",
28
+ "target": "components/composites/appearance-editor/appearance-editor.tsx"
29
+ },
30
+ {
31
+ "path": "src/components/composites/appearance-editor/appearance-rows.tsx",
32
+ "type": "registry:ui",
33
+ "target": "components/composites/appearance-editor/appearance-rows.tsx"
34
+ },
35
+ {
36
+ "path": "src/components/composites/appearance-editor/appearance-types.ts",
37
+ "type": "registry:ui",
38
+ "target": "components/composites/appearance-editor/appearance-types.ts"
39
+ },
40
+ {
41
+ "path": "src/components/composites/appearance-editor/index.ts",
42
+ "type": "registry:ui",
43
+ "target": "components/composites/appearance-editor/index.ts"
44
+ },
45
+ {
46
+ "path": "src/components/composites/appearance-editor/theme-preview.tsx",
47
+ "type": "registry:ui",
48
+ "target": "components/composites/appearance-editor/theme-preview.tsx"
49
+ }
50
+ ]
51
+ }
package/dist/r/lib.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "title": "Class-name and token helpers",
5
5
  "description": "The private helpers the components import: the class-name merge, the variant recipes, the token manifest and the theme bridge. Installed automatically as a peer of any component that needs it.",
6
6
  "dependencies": [
7
- "@adea-ai/themes@^0.4.1",
7
+ "@adea-ai/themes@^0.5.0",
8
8
  "class-variance-authority@^0.7.1",
9
9
  "clsx@^2.1.1",
10
10
  "tailwind-merge@^3.7.0"
@@ -1599,6 +1599,57 @@
1599
1599
  }
1600
1600
  ]
1601
1601
  },
1602
+ {
1603
+ "name": "appearance-editor",
1604
+ "type": "registry:ui",
1605
+ "title": "Appearance Editor",
1606
+ "description": "",
1607
+ "dependencies": [
1608
+ "@adea-ai/themes@^0.5.0",
1609
+ "@kobalte/core@^0.13.14",
1610
+ "lucide-solid@^1.48.0"
1611
+ ],
1612
+ "registryDependencies": [
1613
+ "@adea-ai/ui/button",
1614
+ "@adea-ai/ui/input",
1615
+ "@adea-ai/ui/popover",
1616
+ "@adea-ai/ui/select",
1617
+ "@adea-ai/ui/switch",
1618
+ "lib"
1619
+ ],
1620
+ "files": [
1621
+ {
1622
+ "path": "src/components/composites/appearance-editor/appearance-choices.tsx",
1623
+ "type": "registry:ui",
1624
+ "target": "components/composites/appearance-editor/appearance-choices.tsx"
1625
+ },
1626
+ {
1627
+ "path": "src/components/composites/appearance-editor/appearance-editor.tsx",
1628
+ "type": "registry:ui",
1629
+ "target": "components/composites/appearance-editor/appearance-editor.tsx"
1630
+ },
1631
+ {
1632
+ "path": "src/components/composites/appearance-editor/appearance-rows.tsx",
1633
+ "type": "registry:ui",
1634
+ "target": "components/composites/appearance-editor/appearance-rows.tsx"
1635
+ },
1636
+ {
1637
+ "path": "src/components/composites/appearance-editor/appearance-types.ts",
1638
+ "type": "registry:ui",
1639
+ "target": "components/composites/appearance-editor/appearance-types.ts"
1640
+ },
1641
+ {
1642
+ "path": "src/components/composites/appearance-editor/index.ts",
1643
+ "type": "registry:ui",
1644
+ "target": "components/composites/appearance-editor/index.ts"
1645
+ },
1646
+ {
1647
+ "path": "src/components/composites/appearance-editor/theme-preview.tsx",
1648
+ "type": "registry:ui",
1649
+ "target": "components/composites/appearance-editor/theme-preview.tsx"
1650
+ }
1651
+ ]
1652
+ },
1602
1653
  {
1603
1654
  "name": "list-row",
1604
1655
  "type": "registry:ui",
@@ -1875,7 +1926,7 @@
1875
1926
  "title": "Class-name and token helpers",
1876
1927
  "description": "The private helpers the components import: the class-name merge, the variant recipes, the token manifest and the theme bridge. Installed automatically as a peer of any component that needs it.",
1877
1928
  "dependencies": [
1878
- "@adea-ai/themes@^0.4.1",
1929
+ "@adea-ai/themes@^0.5.0",
1879
1930
  "class-variance-authority@^0.7.1",
1880
1931
  "clsx@^2.1.1",
1881
1932
  "tailwind-merge@^3.7.0"
@@ -0,0 +1,173 @@
1
+ /*
2
+ * MIT License
3
+ *
4
+ * Copyright (c) 2026 Wing
5
+ *
6
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ * of this software and associated documentation files (the "Software"), to deal
8
+ * in the Software without restriction, including without limitation the rights
9
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ * copies of the Software, and to permit persons to whom the Software is
11
+ * furnished to do so, subject to the following conditions:
12
+ *
13
+ * The above copyright notice and this permission notice shall be included in all
14
+ * copies or substantial portions of the Software.
15
+ *
16
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ * SOFTWARE.
23
+ */
24
+ // Pinned mode-card, accent-swatch, and glass-chip composition. Kobalte replaces
25
+ // the app port's manual roving focus; it does not replace the donor hierarchy.
26
+ import { RadioGroup as Radio } from '@kobalte/core/radio-group'
27
+ import { For, Show } from 'solid-js'
28
+ import type { AppearanceEditorProps } from './appearance-types'
29
+ import { ThemeMiniature, ThemeMiniatureSplit } from './theme-preview'
30
+
31
+ const MODES = [
32
+ { value: 'system', label: 'System' },
33
+ { value: 'light', label: 'Light' },
34
+ { value: 'dark', label: 'Dark' },
35
+ ] as const
36
+ const SURFACES = [
37
+ { value: 'theme', label: 'Theme default' },
38
+ { value: 'frosted', label: 'Frosted' },
39
+ { value: 'opaque', label: 'Opaque' },
40
+ ] as const
41
+
42
+ export function ModeChoices(props: AppearanceEditorProps) {
43
+ return (
44
+ <Radio
45
+ value={props.draft.mode}
46
+ disabled={props.saving}
47
+ orientation="horizontal"
48
+ aria-label="Appearance mode"
49
+ onChange={(mode) => {
50
+ const option = MODES.find((candidate) => candidate.value === mode)
51
+ if (option) props.onChange({ mode: option.value })
52
+ }}
53
+ class="grid grid-cols-1 gap-3 px-4 py-4 sm:grid-cols-3"
54
+ >
55
+ <For each={MODES}>
56
+ {(option) => (
57
+ <Radio.Item
58
+ value={option.value}
59
+ data-mode={option.value}
60
+ class="min-w-0 rounded-lg focus-within:ring-3 focus-within:ring-ring/50"
61
+ >
62
+ <Radio.ItemInput />
63
+ <Radio.ItemLabel class="flex cursor-pointer flex-col gap-2 rounded-lg border p-2 text-center text-xs data-[checked]:border-primary data-[checked]:ring-1 data-[checked]:ring-primary data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50">
64
+ <span class="block h-20 w-full">
65
+ <Show
66
+ when={option.value === 'system'}
67
+ fallback={
68
+ <ThemeMiniature
69
+ theme={option.value === 'light' ? props.lightTheme : props.darkTheme}
70
+ />
71
+ }
72
+ >
73
+ <ThemeMiniatureSplit light={props.lightTheme} dark={props.darkTheme} />
74
+ </Show>
75
+ </span>
76
+ <span>{option.label}</span>
77
+ </Radio.ItemLabel>
78
+ </Radio.Item>
79
+ )}
80
+ </For>
81
+ </Radio>
82
+ )
83
+ }
84
+
85
+ export function AccentChoices(props: AppearanceEditorProps) {
86
+ const custom = () =>
87
+ props.draft.accent !== 'theme' &&
88
+ !props.accentOptions.some((option) => option.id === props.draft.accent)
89
+ const accentSelection = () => (custom() ? 'custom' : props.draft.accent)
90
+ return (
91
+ <Radio
92
+ value={accentSelection()}
93
+ disabled={props.saving}
94
+ orientation="horizontal"
95
+ aria-label="Accent"
96
+ class="flex flex-wrap items-center gap-2"
97
+ onChange={(accent) =>
98
+ props.onChange({
99
+ accent: accent === 'custom' ? (props.customAccentValue ?? '') : accent,
100
+ })
101
+ }
102
+ >
103
+ <Radio.Item value="theme">
104
+ <Radio.ItemInput />
105
+ <Radio.ItemLabel class="flex h-7 cursor-pointer items-center rounded-md border px-2 text-xs data-[checked]:border-primary data-[checked]:ring-1 data-[checked]:ring-primary">
106
+ Theme default
107
+ </Radio.ItemLabel>
108
+ </Radio.Item>
109
+ <For each={props.accentOptions}>
110
+ {(option) => (
111
+ <Radio.Item
112
+ value={option.id}
113
+ class="rounded-full focus-within:ring-3 focus-within:ring-ring/50"
114
+ >
115
+ <Radio.ItemInput />
116
+ <Radio.ItemLabel class="block size-7 cursor-pointer rounded-full border p-0.5 data-[checked]:border-primary data-[checked]:ring-1 data-[checked]:ring-primary">
117
+ <span
118
+ class="block size-full rounded-full"
119
+ aria-hidden="true"
120
+ style={{
121
+ 'background-color':
122
+ (props.draft.mode === 'system'
123
+ ? props.resolvedAppearance
124
+ : props.draft.mode) === 'light'
125
+ ? option.light
126
+ : option.dark,
127
+ }}
128
+ />
129
+ <span class="sr-only">{option.label}</span>
130
+ </Radio.ItemLabel>
131
+ </Radio.Item>
132
+ )}
133
+ </For>
134
+ <Radio.Item value="custom">
135
+ <Radio.ItemInput />
136
+ <Radio.ItemLabel class="flex h-7 cursor-pointer items-center rounded-md border px-2 text-xs data-[checked]:border-primary data-[checked]:ring-1 data-[checked]:ring-primary">
137
+ Custom
138
+ </Radio.ItemLabel>
139
+ </Radio.Item>
140
+ </Radio>
141
+ )
142
+ }
143
+
144
+ export function GlassChoices(props: AppearanceEditorProps) {
145
+ return (
146
+ <Radio
147
+ value={props.draft.surface}
148
+ disabled={props.saving}
149
+ orientation="horizontal"
150
+ aria-label="Glass"
151
+ class="flex flex-wrap gap-1"
152
+ onChange={(surface) => {
153
+ const option = SURFACES.find((candidate) => candidate.value === surface)
154
+ if (option) props.onChange({ surface: option.value })
155
+ }}
156
+ >
157
+ <For each={SURFACES}>
158
+ {(option) => (
159
+ <Radio.Item
160
+ value={option.value}
161
+ disabled={option.value === 'frosted' && !props.surfaceCapability.frosted}
162
+ class="rounded-md focus-within:ring-3 focus-within:ring-ring/50"
163
+ >
164
+ <Radio.ItemInput />
165
+ <Radio.ItemLabel class="flex h-7 cursor-pointer items-center rounded-md border px-2 text-xs data-[checked]:border-primary data-[checked]:ring-1 data-[checked]:ring-primary data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50">
166
+ {option.label}
167
+ </Radio.ItemLabel>
168
+ </Radio.Item>
169
+ )}
170
+ </For>
171
+ </Radio>
172
+ )
173
+ }