@cloudflare/kumo 2.4.0 → 2.5.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 (41) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/ai/component-registry.json +32 -3
  3. package/ai/component-registry.md +142 -2
  4. package/ai/schemas.ts +1 -0
  5. package/dist/.build-complete +1 -1
  6. package/dist/ai/schemas.d.ts +2 -0
  7. package/dist/ai/schemas.d.ts.map +1 -1
  8. package/dist/ai/schemas.js +45 -43
  9. package/dist/ai/schemas.js.map +1 -1
  10. package/dist/chunks/{SankeyChart-npoyr1j06svoxsfe.js → SankeyChart-i1m7zv0lys3j0iq6.js} +74 -69
  11. package/dist/chunks/SankeyChart-i1m7zv0lys3j0iq6.js.map +1 -0
  12. package/dist/chunks/{autocomplete-cvp5fsdt6gh0p3vu.js → autocomplete-d0w42h1frdu03df6.js} +29 -29
  13. package/dist/chunks/autocomplete-d0w42h1frdu03df6.js.map +1 -0
  14. package/dist/chunks/{combobox-dpptfpcmqfrso1xa.js → combobox-msvukodjsqzlvpqc.js} +39 -39
  15. package/dist/chunks/combobox-msvukodjsqzlvpqc.js.map +1 -0
  16. package/dist/chunks/sidebar-nbdw4rgvuabxp5nj.js +1144 -0
  17. package/dist/chunks/sidebar-nbdw4rgvuabxp5nj.js.map +1 -0
  18. package/dist/chunks/{tabs-hice1yy5q2t889z8.js → tabs-ho9t1gkq22jb855l.js} +51 -28
  19. package/dist/chunks/tabs-ho9t1gkq22jb855l.js.map +1 -0
  20. package/dist/components/autocomplete.js +1 -1
  21. package/dist/components/chart.js +1 -1
  22. package/dist/components/combobox.js +1 -1
  23. package/dist/components/flow.js +3 -2
  24. package/dist/components/flow.js.map +1 -1
  25. package/dist/components/sidebar.js +1 -1
  26. package/dist/components/tabs.js +1 -1
  27. package/dist/index.js +5 -5
  28. package/dist/src/components/chart/EChart.d.ts.map +1 -1
  29. package/dist/src/components/flow/connectors.d.ts.map +1 -1
  30. package/dist/src/components/sidebar/sidebar.d.ts +14 -2
  31. package/dist/src/components/sidebar/sidebar.d.ts.map +1 -1
  32. package/dist/src/components/tabs/tabs.d.ts.map +1 -1
  33. package/dist/styles/kumo-binding.css +27 -20
  34. package/dist/styles/kumo-standalone.css +1 -1
  35. package/package.json +1 -1
  36. package/dist/chunks/SankeyChart-npoyr1j06svoxsfe.js.map +0 -1
  37. package/dist/chunks/autocomplete-cvp5fsdt6gh0p3vu.js.map +0 -1
  38. package/dist/chunks/combobox-dpptfpcmqfrso1xa.js.map +0 -1
  39. package/dist/chunks/sidebar-hzio700cg85f7f31.js +0 -1014
  40. package/dist/chunks/sidebar-hzio700cg85f7f31.js.map +0 -1
  41. package/dist/chunks/tabs-hice1yy5q2t889z8.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,57 @@
1
1
  # @cloudflare/kumo
2
2
 
3
+ ## 2.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 7401701: Sidebar: mobile rewrite, smooth collapse transitions, and new props
8
+
9
+ **New features:**
10
+ - `mobileBreakpoint` prop on Provider — configurable viewport width for mobile detection
11
+ - `contentClassName` prop on Sidebar root — pass-through class for the inner content container
12
+ - Controlled mobile state — `open` prop now controls the mobile sidebar too, not just desktop
13
+
14
+ **Fixes:**
15
+ - Replaced Base UI Dialog mobile sidebar with a plain `<nav>` + backdrop for simpler, more predictable transitions
16
+ - Collapsible sections now animate closed smoothly when the sidebar collapses instead of snapping shut
17
+ - Removed `hidden` class from `Sidebar.MenuSub` so sub-menus participate in collapse animations
18
+ - Removed `inertValue` React-version helper — `SidebarSlidingView` now sets `inert` imperatively for React 18 compatibility
19
+ - Restored `inert` on closed `SidebarCollapsibleContent` while removing its `data-open` attribute
20
+
21
+ **Styling:**
22
+ - `bg-kumo-tint` → `bg-(--sidebar-active-bg)` CSS variable for active/hover/focus backgrounds
23
+ - Icon opacity `0.5` → `0.4`; chevron gains hover opacity transition
24
+ - Header gains `shrink-0` and animated padding on collapse
25
+ - Content scroll area gains animated `gap` transition and `tabIndex={-1}` on viewport
26
+ - Sliding views container gains `max-w-(--sidebar-width)` to prevent overflow
27
+ - Mobile sidebar uses `--sidebar-animation-duration` CSS variable for slide transition
28
+
29
+ ### Patch Changes
30
+
31
+ - f957dbc: Add React 18 and React 19 compatibility checks for Kumo tests.
32
+ - ac46184: Fix `Chart` (and `SankeyChart`) rendering in dark mode. The chart canvas
33
+ now stays transparent so the surrounding `bg-kumo-*` surface shows through
34
+ symmetrically in both modes, and ECharts' built-in `"dark"` theme is
35
+ applied when `isDarkMode` is true so the tooltip card, axes, splitLines,
36
+ and legend text are themed correctly.
37
+ - e25a3d6: fix(sidebar): add text truncation with ellipsis to Sidebar.MenuButton content
38
+
39
+ Previously, `Sidebar.MenuButton` used `overflow-hidden` which clipped long text without showing an ellipsis. Now uses `truncate` to match `Sidebar.MenuSubButton`'s behavior.
40
+
41
+ - d3feec0: Fix segmented `Tabs` scroll fade, scroll-into-view, and ring styling:
42
+ - Rewrite CSS scroll-fade masking to use `@property`-animated custom properties, fixing proportional fade rendering across browsers.
43
+ - Scroll the selected tab into view on click so it stays visible in overflowing tab lists.
44
+ - Move `ring ring-kumo-hairline/70` from the inner list to the root container so the segmented variant ring wraps the entire component correctly.
45
+
46
+ - f831482: Fix Flow connector rendering in Firefox by emitting valid SVG path data without array commas and setting visible overflow on the SVG element attribute.
47
+ - 4a8b992: Restore React 18-compatible Sidebar inert attribute handling while keeping the full React compatibility CI suite.
48
+
49
+ ## 2.4.1
50
+
51
+ ### Patch Changes
52
+
53
+ - 2daa237: Fix Combobox and Autocomplete rendering in React 18 by using the explicit context provider API.
54
+
3
55
  ## 2.4.0
4
56
 
5
57
  ### Minor Changes
@@ -5049,6 +5049,11 @@
5049
5049
  "optional": true,
5050
5050
  "description": "Duration of sidebar expand/collapse animation in milliseconds."
5051
5051
  },
5052
+ "mobileBreakpoint": {
5053
+ "type": "number",
5054
+ "optional": true,
5055
+ "description": "Viewport width (in px) below which the sidebar renders as a mobile dialog sheet instead of the desktop aside rail."
5056
+ },
5052
5057
  "children": {
5053
5058
  "type": "ReactNode",
5054
5059
  "optional": true,
@@ -5066,16 +5071,16 @@
5066
5071
  "<DemoContainer>\n <Sidebar.Provider contained\n defaultOpen\n resizable\n defaultWidth={240}\n minWidth={180}\n maxWidth={400}\n className=\"min-h-0! h-full\"\n >\n <Sidebar>\n <Sidebar.Header>\n <BrandLogo />\n </Sidebar.Header>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n <Sidebar.Footer>\n <Sidebar.Trigger />\n </Sidebar.Footer>\n <Sidebar.ResizeHandle />\n </Sidebar>\n <DemoMain>\n <p>Drag the sidebar edge to resize</p>\n </DemoMain>\n </Sidebar.Provider>\n </DemoContainer>",
5067
5072
  "<DemoContainer>\n <Sidebar.Provider contained defaultOpen side=\"right\" className=\"min-h-0! h-full\">\n <DemoMain />\n <Sidebar>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupLabel>Details</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={GearIcon} active>\n Properties\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Metrics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={BellIcon}>Alerts</Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar>\n </Sidebar.Provider>\n </DemoContainer>",
5068
5073
  "<DemoContainer>\n <Sidebar.Provider contained defaultOpen peekable className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Header>\n <BrandLogo />\n </Sidebar.Header>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} tooltip=\"Home\" active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon} tooltip=\"Analytics\">\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={CodeIcon} tooltip=\"Compute\">\n Compute\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={DatabaseIcon} tooltip=\"Storage\">\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n <Sidebar.Footer>\n <Sidebar.Trigger />\n </Sidebar.Footer>\n </Sidebar>\n <DemoMain>\n <PeekStateIndicator />\n </DemoMain>\n </Sidebar.Provider>\n </DemoContainer>",
5074
+ "<div className=\"relative h-[420px] w-full overflow-hidden rounded-lg border border-kumo-line bg-kumo-base\">\n <Sidebar.Provider contained defaultOpen className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Header>\n <BrandLogo />\n </Sidebar.Header>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={GlobeIcon}>\n Domains\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Platform</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Storage\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ShieldCheckIcon}>\n Security\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={LockIcon}>\n Zero Trust\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={GearIcon}>\n Settings\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuItem>\n <Sidebar.Collapsible autoScrollOnOpen>\n <Sidebar.CollapsibleTrigger\n render={\n <Sidebar.MenuButton icon={CodeIcon}>\n Workers\n <Sidebar.MenuChevron />\n </Sidebar.MenuButton>\n }\n />\n <Sidebar.CollapsibleContent>\n <Sidebar.MenuSub>\n <Sidebar.MenuSubButton>Overview</Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>Deployments</Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>Observability</Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>Settings</Sidebar.MenuSubButton>\n </Sidebar.MenuSub>\n </Sidebar.CollapsibleContent>\n </Sidebar.Collapsible>\n </Sidebar.MenuItem>\n <Sidebar.MenuButton icon={CubeIcon}>\n Containers\n <Sidebar.MenuBadge>Beta</Sidebar.MenuBadge>\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n <Sidebar.Footer>\n <Sidebar.Trigger />\n </Sidebar.Footer>\n </Sidebar>\n <DemoMain>\n <p>Open Workers near the bottom of the list</p>\n </DemoMain>\n </Sidebar.Provider>\n </div>",
5069
5075
  "<DemoContainer>\n <Sidebar.Provider contained defaultOpen className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Header>\n <button\n type=\"button\"\n onClick={() =>\n setSurface((s) => (s === \"account\" ? \"zone\" : \"account\"))\n }\n className=\"flex w-full cursor-pointer items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium text-kumo-default hover:bg-kumo-tint transition-colors\"\n >\n <ArrowsLeftRightIcon className=\"size-4 shrink-0 text-kumo-brand\" />\n <span className=\"flex-1 text-left font-semibold text-kumo-strong\">\n {surface === \"account\" ? \"Account Nav\" : \"Zone Nav\"}\n </span>\n </button>\n </Sidebar.Header>\n\n <Sidebar.SlidingViews\n activeKey={surface}\n direction={surface === \"zone\" ? \"left\" : \"right\"}\n >\n <Sidebar.SlidingView value=\"account\">\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupLabel>Account</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={UserIcon}>\n Members\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={GearIcon}>\n Settings\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar.SlidingView>\n\n <Sidebar.SlidingView value=\"zone\">\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupLabel>Zone</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={GlobeIcon} active>\n Overview\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ShieldCheckIcon}>\n Security\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={LockIcon}>\n SSL/TLS\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Caching\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar.SlidingView>\n </Sidebar.SlidingViews>\n </Sidebar>\n <DemoMain>\n <div className=\"flex flex-col items-center gap-2\">\n <p className=\"font-medium text-kumo-default\">\n Active: {surface === \"account\" ? \"Account\" : \"Zone\"} surface\n </p>\n <p>\n Click the header button to slide between views\n </p>\n </div>\n </DemoMain>\n </Sidebar.Provider>\n </DemoContainer>",
5070
- "<DemoContainer>\n <Sidebar.Provider contained defaultOpen peekable className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Header>\n <AccountSwitcher />\n </Sidebar.Header>\n <Sidebar.SlidingViews\n activeKey={surface}\n direction={surface === \"domain\" ? \"left\" : \"right\"}\n >\n <Sidebar.SlidingView value=\"account\">\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.Menu>\n <Sidebar.MenuButton\n icon={MagnifyingGlassIcon}\n tooltip=\"Search\"\n className=\"ring ring-kumo-line group-data-[state=collapsed]/sidebar:ring-transparent\"\n >\n Quick search&hellip;\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n <Sidebar.Group>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics & Logs\n </Sidebar.MenuButton>\n <Sidebar.MenuButton\n icon={GlobeIcon}\n onClick={() => setSurface(\"domain\")}\n >\n Domains\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuItem>\n <Sidebar.Collapsible defaultOpen>\n <Sidebar.CollapsibleTrigger\n render={\n <Sidebar.MenuButton icon={CodeIcon}>\n Compute\n <Sidebar.MenuChevron />\n </Sidebar.MenuButton>\n }\n />\n <Sidebar.CollapsibleContent>\n <Sidebar.MenuSub>\n <Sidebar.MenuSubItem>\n <Sidebar.Collapsible>\n <Sidebar.CollapsibleTrigger\n render={\n <Sidebar.MenuSubButton>\n Workers & Pages\n <Sidebar.MenuChevron />\n </Sidebar.MenuSubButton>\n }\n />\n <Sidebar.CollapsibleContent>\n <Sidebar.MenuSub>\n <Sidebar.MenuSubButton>\n Overview\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Workers\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Pages\n </Sidebar.MenuSubButton>\n </Sidebar.MenuSub>\n </Sidebar.CollapsibleContent>\n </Sidebar.Collapsible>\n </Sidebar.MenuSubItem>\n <Sidebar.MenuSubButton>\n Durable Objects\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Containers\n <Sidebar.MenuBadge>Beta</Sidebar.MenuBadge>\n </Sidebar.MenuSubButton>\n </Sidebar.MenuSub>\n </Sidebar.CollapsibleContent>\n </Sidebar.Collapsible>\n </Sidebar.MenuItem>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Protect & Connect</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={ShieldCheckIcon}>\n Security\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={LockIcon}>\n Zero Trust\n <Sidebar.MenuBadge>Beta</Sidebar.MenuBadge>\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar.SlidingView>\n\n <Sidebar.SlidingView value=\"domain\">\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.Menu>\n <Sidebar.MenuButton\n icon={ArrowLeftIcon}\n onClick={() => setSurface(\"account\")}\n >\n Back\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n <Sidebar.Group>\n <Sidebar.GroupLabel>example.com</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={GlobeIcon} active>\n Overview\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ShieldCheckIcon}>\n Security\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={LockIcon}>\n SSL/TLS\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Caching\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar.SlidingView>\n </Sidebar.SlidingViews>\n\n <Sidebar.Footer>\n <Sidebar.Trigger />\n </Sidebar.Footer>\n </Sidebar>\n <DemoMain />\n </Sidebar.Provider>\n </DemoContainer>"
5076
+ "<DemoContainer>\n <Sidebar.Provider contained defaultOpen peekable className=\"min-h-0! h-full\">\n <Sidebar>\n <Sidebar.Header>\n <AccountSwitcher />\n </Sidebar.Header>\n <Sidebar.SlidingViews\n activeKey={surface}\n direction={surface === \"domain\" ? \"left\" : \"right\"}\n >\n <Sidebar.SlidingView value=\"account\">\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.Menu>\n <Sidebar.MenuButton\n icon={MagnifyingGlassIcon}\n tooltip=\"Search\"\n className=\"ring ring-kumo-line group-data-[state=collapsed]/sidebar:ring-transparent mb-3 group-data-[state=collapsed]/sidebar:mb-0 transition-[margin] duration-(--sidebar-animation-duration)\"\n >\n Quick search&hellip;\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n <Sidebar.Group>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics & Logs\n </Sidebar.MenuButton>\n <Sidebar.MenuButton\n icon={GlobeIcon}\n onClick={() => setSurface(\"domain\")}\n >\n Domains\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuItem>\n <Sidebar.Collapsible defaultOpen>\n <Sidebar.CollapsibleTrigger\n render={\n <Sidebar.MenuButton icon={CodeIcon}>\n Compute\n <Sidebar.MenuChevron />\n </Sidebar.MenuButton>\n }\n />\n <Sidebar.CollapsibleContent>\n <Sidebar.MenuSub>\n <Sidebar.MenuSubItem>\n <Sidebar.Collapsible>\n <Sidebar.CollapsibleTrigger\n render={\n <Sidebar.MenuSubButton>\n Workers & Pages\n <Sidebar.MenuChevron />\n </Sidebar.MenuSubButton>\n }\n />\n <Sidebar.CollapsibleContent>\n <Sidebar.MenuSub>\n <Sidebar.MenuSubButton>\n Overview\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Workers\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Pages\n </Sidebar.MenuSubButton>\n </Sidebar.MenuSub>\n </Sidebar.CollapsibleContent>\n </Sidebar.Collapsible>\n </Sidebar.MenuSubItem>\n <Sidebar.MenuSubButton>\n Durable Objects\n </Sidebar.MenuSubButton>\n <Sidebar.MenuSubButton>\n Containers\n <Sidebar.MenuBadge>Beta</Sidebar.MenuBadge>\n </Sidebar.MenuSubButton>\n </Sidebar.MenuSub>\n </Sidebar.CollapsibleContent>\n </Sidebar.Collapsible>\n </Sidebar.MenuItem>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Protect & Connect</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={ShieldCheckIcon}>\n Security\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={LockIcon}>\n Zero Trust\n <Sidebar.MenuBadge>Beta</Sidebar.MenuBadge>\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar.SlidingView>\n\n <Sidebar.SlidingView value=\"domain\">\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.Menu>\n <Sidebar.MenuButton\n icon={ArrowLeftIcon}\n onClick={() => setSurface(\"account\")}\n >\n Back\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n <Sidebar.Group>\n <Sidebar.GroupLabel>example.com</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={GlobeIcon} active>\n Overview\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ShieldCheckIcon}>\n Security\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={LockIcon}>\n SSL/TLS\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Caching\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n </Sidebar.SlidingView>\n </Sidebar.SlidingViews>\n\n <Sidebar.Footer>\n <Sidebar.Trigger />\n </Sidebar.Footer>\n </Sidebar>\n <DemoMain />\n </Sidebar.Provider>\n </DemoContainer>",
5077
+ "<div className=\"relative h-[540px] w-full overflow-hidden rounded-lg border border-kumo-line bg-kumo-base\">\n <Sidebar.Provider contained mobileBreakpoint={9999} className=\"h-full\">\n <Sidebar>\n <Sidebar.Header>\n <BrandLogo />\n </Sidebar.Header>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={HouseIcon} active>\n Home\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={ChartBarIcon}>\n Analytics\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={GlobeIcon}>\n Domains\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n\n <Sidebar.Group>\n <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>\n <Sidebar.Menu>\n <Sidebar.MenuButton icon={CodeIcon}>\n Compute\n </Sidebar.MenuButton>\n <Sidebar.MenuButton icon={DatabaseIcon}>\n Storage\n </Sidebar.MenuButton>\n </Sidebar.Menu>\n </Sidebar.Group>\n </Sidebar.Content>\n <Sidebar.Footer>\n <Sidebar.Trigger />\n </Sidebar.Footer>\n </Sidebar>\n <DemoMain>\n <MobileToggleButton />\n <p>Click the button to open the mobile sidebar</p>\n <p className=\"text-sm text-kumo-subtle\">\n Press Escape or click the backdrop to close\n </p>\n </DemoMain>\n </Sidebar.Provider>\n </div>"
5071
5078
  ],
5072
5079
  "colors": [
5073
- "bg-kumo-base",
5074
5080
  "bg-kumo-brand",
5075
5081
  "bg-kumo-hairline",
5076
5082
  "bg-kumo-line",
5077
5083
  "bg-kumo-recessed",
5078
- "bg-kumo-tint",
5079
5084
  "border-kumo-line",
5080
5085
  "ring-kumo-brand",
5081
5086
  "text-kumo-default",
@@ -5135,6 +5140,10 @@
5135
5140
  "type": "number",
5136
5141
  "optional": true
5137
5142
  },
5143
+ "mobileBreakpoint": {
5144
+ "type": "number",
5145
+ "optional": true
5146
+ },
5138
5147
  "children": {
5139
5148
  "type": "ReactNode",
5140
5149
  "required": true
@@ -5292,6 +5301,10 @@
5292
5301
  "open": {
5293
5302
  "type": "boolean",
5294
5303
  "optional": true
5304
+ },
5305
+ "autoScrollOnOpen": {
5306
+ "type": "boolean",
5307
+ "optional": true
5295
5308
  }
5296
5309
  }
5297
5310
  },
@@ -5306,6 +5319,10 @@
5306
5319
  "open": {
5307
5320
  "type": "boolean",
5308
5321
  "optional": true
5322
+ },
5323
+ "autoScrollOnOpen": {
5324
+ "type": "boolean",
5325
+ "optional": true
5309
5326
  }
5310
5327
  }
5311
5328
  },
@@ -5320,6 +5337,10 @@
5320
5337
  "open": {
5321
5338
  "type": "boolean",
5322
5339
  "optional": true
5340
+ },
5341
+ "autoScrollOnOpen": {
5342
+ "type": "boolean",
5343
+ "optional": true
5323
5344
  }
5324
5345
  }
5325
5346
  },
@@ -5334,6 +5355,10 @@
5334
5355
  "open": {
5335
5356
  "type": "boolean",
5336
5357
  "optional": true
5358
+ },
5359
+ "autoScrollOnOpen": {
5360
+ "type": "boolean",
5361
+ "optional": true
5337
5362
  }
5338
5363
  }
5339
5364
  },
@@ -5358,6 +5383,10 @@
5358
5383
  "open": {
5359
5384
  "type": "boolean",
5360
5385
  "optional": true
5386
+ },
5387
+ "autoScrollOnOpen": {
5388
+ "type": "boolean",
5389
+ "optional": true
5361
5390
  }
5362
5391
  }
5363
5392
  },
@@ -6157,6 +6157,8 @@ Sidebar — responsive navigation panel with expand/collapse support. Compound
6157
6157
  When true, hovering or focusing the collapsed sidebar temporarily expands it. The `state` will be `"peeking"` during the peek. Moving away collapses it back.
6158
6158
  - `animationDuration`: number
6159
6159
  Duration of sidebar expand/collapse animation in milliseconds.
6160
+ - `mobileBreakpoint`: number
6161
+ Viewport width (in px) below which the sidebar renders as a mobile dialog sheet instead of the desktop aside rail.
6160
6162
  - `children`: ReactNode
6161
6163
  Content — typically `<Sidebar>` + main content.
6162
6164
  - `className`: string
@@ -6164,7 +6166,7 @@ Sidebar — responsive navigation panel with expand/collapse support. Compound
6164
6166
 
6165
6167
  **Colors (kumo tokens used):**
6166
6168
 
6167
- `bg-kumo-base`, `bg-kumo-brand`, `bg-kumo-hairline`, `bg-kumo-line`, `bg-kumo-recessed`, `bg-kumo-tint`, `border-kumo-line`, `ring-kumo-brand`, `text-kumo-default`, `text-kumo-strong`, `text-kumo-subtle`
6169
+ `bg-kumo-brand`, `bg-kumo-hairline`, `bg-kumo-line`, `bg-kumo-recessed`, `border-kumo-line`, `ring-kumo-brand`, `text-kumo-default`, `text-kumo-strong`, `text-kumo-subtle`
6168
6170
 
6169
6171
  **Styling:**
6170
6172
 
@@ -6190,6 +6192,7 @@ Props:
6190
6192
  - `contained`: boolean
6191
6193
  - `peekable`: boolean
6192
6194
  - `animationDuration`: number
6195
+ - `mobileBreakpoint`: number
6193
6196
  - `children`: ReactNode (required)
6194
6197
  - `className`: string
6195
6198
 
@@ -6288,6 +6291,7 @@ Separator sub-component
6288
6291
  Props:
6289
6292
  - `defaultOpen`: boolean
6290
6293
  - `open`: boolean
6294
+ - `autoScrollOnOpen`: boolean
6291
6295
 
6292
6296
  #### Sidebar.Trigger
6293
6297
 
@@ -6296,6 +6300,7 @@ Trigger sub-component
6296
6300
  Props:
6297
6301
  - `defaultOpen`: boolean
6298
6302
  - `open`: boolean
6303
+ - `autoScrollOnOpen`: boolean
6299
6304
 
6300
6305
  #### Sidebar.Rail
6301
6306
 
@@ -6304,6 +6309,7 @@ Rail sub-component
6304
6309
  Props:
6305
6310
  - `defaultOpen`: boolean
6306
6311
  - `open`: boolean
6312
+ - `autoScrollOnOpen`: boolean
6307
6313
 
6308
6314
  #### Sidebar.ResizeHandle
6309
6315
 
@@ -6312,6 +6318,7 @@ ResizeHandle sub-component
6312
6318
  Props:
6313
6319
  - `defaultOpen`: boolean
6314
6320
  - `open`: boolean
6321
+ - `autoScrollOnOpen`: boolean
6315
6322
 
6316
6323
  #### Sidebar.MenuChevron
6317
6324
 
@@ -6327,6 +6334,7 @@ Collapsible sub-component
6327
6334
  Props:
6328
6335
  - `defaultOpen`: boolean
6329
6336
  - `open`: boolean
6337
+ - `autoScrollOnOpen`: boolean
6330
6338
 
6331
6339
  #### Sidebar.CollapsibleTrigger
6332
6340
 
@@ -6544,6 +6552,88 @@ Props:
6544
6552
  </DemoContainer>
6545
6553
  ```
6546
6554
 
6555
+ ```tsx
6556
+ <div className="relative h-[420px] w-full overflow-hidden rounded-lg border border-kumo-line bg-kumo-base">
6557
+ <Sidebar.Provider contained defaultOpen className="min-h-0! h-full">
6558
+ <Sidebar>
6559
+ <Sidebar.Header>
6560
+ <BrandLogo />
6561
+ </Sidebar.Header>
6562
+ <Sidebar.Content>
6563
+ <Sidebar.Group>
6564
+ <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>
6565
+ <Sidebar.Menu>
6566
+ <Sidebar.MenuButton icon={HouseIcon} active>
6567
+ Home
6568
+ </Sidebar.MenuButton>
6569
+ <Sidebar.MenuButton icon={ChartBarIcon}>
6570
+ Analytics
6571
+ </Sidebar.MenuButton>
6572
+ <Sidebar.MenuButton icon={GlobeIcon}>
6573
+ Domains
6574
+ </Sidebar.MenuButton>
6575
+ </Sidebar.Menu>
6576
+ </Sidebar.Group>
6577
+
6578
+ <Sidebar.Group>
6579
+ <Sidebar.GroupLabel>Platform</Sidebar.GroupLabel>
6580
+ <Sidebar.Menu>
6581
+ <Sidebar.MenuButton icon={DatabaseIcon}>
6582
+ Storage
6583
+ </Sidebar.MenuButton>
6584
+ <Sidebar.MenuButton icon={ShieldCheckIcon}>
6585
+ Security
6586
+ </Sidebar.MenuButton>
6587
+ <Sidebar.MenuButton icon={LockIcon}>
6588
+ Zero Trust
6589
+ </Sidebar.MenuButton>
6590
+ <Sidebar.MenuButton icon={GearIcon}>
6591
+ Settings
6592
+ </Sidebar.MenuButton>
6593
+ </Sidebar.Menu>
6594
+ </Sidebar.Group>
6595
+
6596
+ <Sidebar.Group>
6597
+ <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>
6598
+ <Sidebar.Menu>
6599
+ <Sidebar.MenuItem>
6600
+ <Sidebar.Collapsible autoScrollOnOpen>
6601
+ <Sidebar.CollapsibleTrigger
6602
+ render={
6603
+ <Sidebar.MenuButton icon={CodeIcon}>
6604
+ Workers
6605
+ <Sidebar.MenuChevron />
6606
+ </Sidebar.MenuButton>
6607
+ }
6608
+ />
6609
+ <Sidebar.CollapsibleContent>
6610
+ <Sidebar.MenuSub>
6611
+ <Sidebar.MenuSubButton>Overview</Sidebar.MenuSubButton>
6612
+ <Sidebar.MenuSubButton>Deployments</Sidebar.MenuSubButton>
6613
+ <Sidebar.MenuSubButton>Observability</Sidebar.MenuSubButton>
6614
+ <Sidebar.MenuSubButton>Settings</Sidebar.MenuSubButton>
6615
+ </Sidebar.MenuSub>
6616
+ </Sidebar.CollapsibleContent>
6617
+ </Sidebar.Collapsible>
6618
+ </Sidebar.MenuItem>
6619
+ <Sidebar.MenuButton icon={CubeIcon}>
6620
+ Containers
6621
+ <Sidebar.MenuBadge>Beta</Sidebar.MenuBadge>
6622
+ </Sidebar.MenuButton>
6623
+ </Sidebar.Menu>
6624
+ </Sidebar.Group>
6625
+ </Sidebar.Content>
6626
+ <Sidebar.Footer>
6627
+ <Sidebar.Trigger />
6628
+ </Sidebar.Footer>
6629
+ </Sidebar>
6630
+ <DemoMain>
6631
+ <p>Open Workers near the bottom of the list</p>
6632
+ </DemoMain>
6633
+ </Sidebar.Provider>
6634
+ </div>
6635
+ ```
6636
+
6547
6637
  ```tsx
6548
6638
  <DemoContainer>
6549
6639
  <Sidebar.Provider contained defaultOpen className="min-h-0! h-full">
@@ -6644,7 +6734,7 @@ Props:
6644
6734
  <Sidebar.MenuButton
6645
6735
  icon={MagnifyingGlassIcon}
6646
6736
  tooltip="Search"
6647
- className="ring ring-kumo-line group-data-[state=collapsed]/sidebar:ring-transparent"
6737
+ className="ring ring-kumo-line group-data-[state=collapsed]/sidebar:ring-transparent mb-3 group-data-[state=collapsed]/sidebar:mb-0 transition-[margin] duration-(--sidebar-animation-duration)"
6648
6738
  >
6649
6739
  Quick search&hellip;
6650
6740
  </Sidebar.MenuButton>
@@ -6784,6 +6874,56 @@ Props:
6784
6874
  </DemoContainer>
6785
6875
  ```
6786
6876
 
6877
+ ```tsx
6878
+ <div className="relative h-[540px] w-full overflow-hidden rounded-lg border border-kumo-line bg-kumo-base">
6879
+ <Sidebar.Provider contained mobileBreakpoint={9999} className="h-full">
6880
+ <Sidebar>
6881
+ <Sidebar.Header>
6882
+ <BrandLogo />
6883
+ </Sidebar.Header>
6884
+ <Sidebar.Content>
6885
+ <Sidebar.Group>
6886
+ <Sidebar.GroupLabel>Overview</Sidebar.GroupLabel>
6887
+ <Sidebar.Menu>
6888
+ <Sidebar.MenuButton icon={HouseIcon} active>
6889
+ Home
6890
+ </Sidebar.MenuButton>
6891
+ <Sidebar.MenuButton icon={ChartBarIcon}>
6892
+ Analytics
6893
+ </Sidebar.MenuButton>
6894
+ <Sidebar.MenuButton icon={GlobeIcon}>
6895
+ Domains
6896
+ </Sidebar.MenuButton>
6897
+ </Sidebar.Menu>
6898
+ </Sidebar.Group>
6899
+
6900
+ <Sidebar.Group>
6901
+ <Sidebar.GroupLabel>Build</Sidebar.GroupLabel>
6902
+ <Sidebar.Menu>
6903
+ <Sidebar.MenuButton icon={CodeIcon}>
6904
+ Compute
6905
+ </Sidebar.MenuButton>
6906
+ <Sidebar.MenuButton icon={DatabaseIcon}>
6907
+ Storage
6908
+ </Sidebar.MenuButton>
6909
+ </Sidebar.Menu>
6910
+ </Sidebar.Group>
6911
+ </Sidebar.Content>
6912
+ <Sidebar.Footer>
6913
+ <Sidebar.Trigger />
6914
+ </Sidebar.Footer>
6915
+ </Sidebar>
6916
+ <DemoMain>
6917
+ <MobileToggleButton />
6918
+ <p>Click the button to open the mobile sidebar</p>
6919
+ <p className="text-sm text-kumo-subtle">
6920
+ Press Escape or click the backdrop to close
6921
+ </p>
6922
+ </DemoMain>
6923
+ </Sidebar.Provider>
6924
+ </div>
6925
+ ```
6926
+
6787
6927
 
6788
6928
  ---
6789
6929
 
package/ai/schemas.ts CHANGED
@@ -714,6 +714,7 @@ export const SidebarPropsSchema = z.object({
714
714
  contained: z.boolean().optional(), // When true, the collapsed sidebar uses absolute positioning instead of fixed, keeping it scoped inside a bounded parent. Useful for demos and embedded sidebars.
715
715
  peekable: z.boolean().optional(), // When true, hovering or focusing the collapsed sidebar temporarily expands it. The `state` will be `"peeking"` during the peek. Moving away collapses it back.
716
716
  animationDuration: z.number().optional(), // Duration of sidebar expand/collapse animation in milliseconds.
717
+ mobileBreakpoint: z.number().optional(), // Viewport width (in px) below which the sidebar renders as a mobile dialog sheet instead of the desktop aside rail.
717
718
  children: z.union([z.string(), z.number(), z.boolean(), z.null(), DynamicValueSchema]).optional(), // Content — typically `<Sidebar>` + main content.
718
719
  className: z.string().optional(), // Additional CSS classes for the wrapper div.
719
720
  });
@@ -1 +1 @@
1
- 1780072117371
1
+ 1780598749266
@@ -1017,6 +1017,7 @@ export declare const SidebarPropsSchema: z.ZodObject<{
1017
1017
  contained: z.ZodOptional<z.ZodBoolean>;
1018
1018
  peekable: z.ZodOptional<z.ZodBoolean>;
1019
1019
  animationDuration: z.ZodOptional<z.ZodNumber>;
1020
+ mobileBreakpoint: z.ZodOptional<z.ZodNumber>;
1020
1021
  children: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodObject<{
1021
1022
  path: z.ZodString;
1022
1023
  }, z.core.$strip>]>]>>;
@@ -2163,6 +2164,7 @@ export declare const ComponentPropsSchemas: {
2163
2164
  contained: z.ZodOptional<z.ZodBoolean>;
2164
2165
  peekable: z.ZodOptional<z.ZodBoolean>;
2165
2166
  animationDuration: z.ZodOptional<z.ZodNumber>;
2167
+ mobileBreakpoint: z.ZodOptional<z.ZodNumber>;
2166
2168
  children: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodObject<{
2167
2169
  path: z.ZodString;
2168
2170
  }, z.core.$strip>]>]>>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../ai/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../ai/schemas.ts"],"names":[],"mappings":"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"}