@optimum-intelligence/opti-ui 0.4.0 → 0.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 (36) hide show
  1. package/README.md +9 -7
  2. package/dist/components/app-shell/AppShell.d.ts +75 -6
  3. package/dist/components/app-shell/AppShell.js +670 -185
  4. package/dist/components/app-shell/AppShell.js.map +1 -1
  5. package/dist/components/badge/Badge.d.ts +2 -4
  6. package/dist/components/badge/Badge.js +12 -29
  7. package/dist/components/badge/Badge.js.map +1 -1
  8. package/dist/components/calendar/Calendar.d.ts +19 -8
  9. package/dist/components/calendar/Calendar.js +285 -212
  10. package/dist/components/calendar/Calendar.js.map +1 -1
  11. package/dist/components/calendar/DateConfig.d.ts +37 -0
  12. package/dist/components/calendar/DateConfig.js +75 -0
  13. package/dist/components/calendar/DateConfig.js.map +1 -0
  14. package/dist/components/calendar/date-utils.d.ts +41 -6
  15. package/dist/components/calendar/date-utils.js +119 -20
  16. package/dist/components/calendar/date-utils.js.map +1 -1
  17. package/dist/components/data-table/DataTableContent.js +3 -3
  18. package/dist/components/data-table/DataTableContent.js.map +1 -1
  19. package/dist/components/date-picker/DatePicker.d.ts +33 -10
  20. package/dist/components/date-picker/DatePicker.js +315 -279
  21. package/dist/components/date-picker/DatePicker.js.map +1 -1
  22. package/dist/components/date-picker/DateRangePicker.d.ts +11 -4
  23. package/dist/components/date-picker/DateRangePicker.js +240 -206
  24. package/dist/components/date-picker/DateRangePicker.js.map +1 -1
  25. package/dist/components/date-picker/PickerField.js +1 -1
  26. package/dist/components/date-picker/PickerField.js.map +1 -1
  27. package/dist/components/table/Table.d.ts +1 -1
  28. package/dist/components/table/Table.js +2 -2
  29. package/dist/components/table/Table.js.map +1 -1
  30. package/dist/components.json +2023 -1864
  31. package/dist/index.d.ts +1 -0
  32. package/dist/index.js +4 -3
  33. package/dist/llms-full.txt +869 -752
  34. package/dist/llms.txt +37 -35
  35. package/dist/opti-ui.css +171 -81
  36. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AppShell.js","names":["React","Dialog","BaseDialog","useRender","mergeProps","cx","createPrimitive","usePortalContainer","ChevronLeftIcon","MenuIcon","XIcon","NavbarVariant","NavbarState","variant","collapsed","peek","NavbarProps","ComponentProps","collapsible","defaultCollapsed","onCollapsedChange","expandOnHover","collapseLabel","expandLabel","NavbarCollapsedContext","createContext","NavbarDrawerContext","Navbar","t0","$","_c","t1","t2","collapsedProp","t3","t4","t5","t6","render","children","ref","props","undefined","inDrawer","useContext","canCollapse","internal","setInternal","useState","label","pointerInside","setPointerInside","hovered","setHovered","t7","t8","timer","setTimeout","clearTimeout","useEffect","t9","Symbol","for","endHover","t10","toggle","t11","event","pointerType","onPointerEnter","t12","t13","state","t14","t15","t16","t17","className","onPointerLeave","t18","defaultTagName","element","t19","t20","NavbarHeader","NavbarFooter","NavbarSection","NavbarSectionLabel","NavbarBrandProps","Omit","logo","ReactNode","title","subtitle","NavbarBrand","NavbarItemState","active","NavbarItemProps","icon","badge","NavbarItem","AppShellProps","HTMLAttributes","HTMLDivElement","Ref","navbar","mobileBrand","mobileActions","menuLabel","mainProps","HTMLElement","AppShell","open","setOpen","container","target","closest","closeOnNavigate","PageHeaderProps","breadcrumbs","eyebrow","description","actions","PageHeader","GridProps","columns","gap","Grid","_c","_Fragment","BaseDialog"],"sources":["../../../src/components/app-shell/AppShell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { useRender } from '@base-ui/react/use-render';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { cx } from '../../utils/cx';\nimport { createPrimitive } from '../../utils/primitive';\nimport { usePortalContainer } from '../../utils/portal';\nimport { ChevronLeftIcon, MenuIcon, XIcon } from '../../icons';\n\n// ─── Navbar ─────────────────────────────────────────────────────────────────\n\nexport type NavbarVariant = 'inverse' | 'surface';\n\nexport type NavbarState = { variant: NavbarVariant; collapsed: boolean; peek: boolean };\n\nexport interface NavbarProps extends useRender.ComponentProps<'nav', NavbarState> {\n /** `inverse` (brand-colored, default) or `surface` (light panel). */\n variant?: NavbarVariant;\n /** Shows a toggle in the top right that shrinks the navbar to an icon rail. Defaults to `true`. */\n collapsible?: boolean;\n /** Controlled collapsed state. */\n collapsed?: boolean;\n /** Initial collapsed state when uncontrolled. */\n defaultCollapsed?: boolean;\n /** Called when the user collapses or expands the navbar. */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Temporarily opens a collapsed navbar while the mouse is over it. Defaults to `true`. */\n expandOnHover?: boolean;\n /** Accessible names for the icon-only toggle. */\n collapseLabel?: string;\n /** Accessible name of the toggle while collapsed. */\n expandLabel?: string;\n}\n\nconst NavbarCollapsedContext = React.createContext(false);\n// True inside the AppShell drawer, where the navbar always shows in full.\nconst NavbarDrawerContext = React.createContext(false);\n\n/**\n * Collapsible side navigation. Use inside `AppShell`. Compose with `NavbarHeader` (`NavbarBrand`),\n * `NavbarSection` (`NavbarSectionLabel`, `NavbarItem`) and `NavbarFooter`.\n */\nexport function Navbar({\n variant = 'inverse',\n collapsible = true,\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapsedChange,\n expandOnHover = true,\n collapseLabel = 'Collapse',\n expandLabel = 'Expand',\n render,\n children,\n ref,\n ...props\n}: NavbarProps) {\n const inDrawer = React.useContext(NavbarDrawerContext);\n const canCollapse = collapsible && !inDrawer;\n const [internal, setInternal] = React.useState(defaultCollapsed);\n const collapsed = canCollapse && (collapsedProp ?? internal);\n const label = collapsed ? expandLabel : collapseLabel;\n\n // Hover peek: shown in full once the mouse has rested over a collapsed navbar.\n const [pointerInside, setPointerInside] = React.useState(false);\n const [hovered, setHovered] = React.useState(false);\n React.useEffect(() => {\n if (!pointerInside) return;\n const timer = setTimeout(() => setHovered(true), 120);\n return () => clearTimeout(timer);\n }, [pointerInside]);\n const peek = collapsed && expandOnHover && hovered;\n\n const endHover = () => {\n setPointerInside(false);\n setHovered(false);\n };\n\n const toggle = () => {\n // Collapsing with the mouse still inside must not peek straight back open.\n endHover();\n if (collapsedProp === undefined) setInternal(!collapsed);\n onCollapsedChange?.(!collapsed);\n };\n\n const onPointerEnter = (event: React.PointerEvent) => {\n if (event.pointerType === 'mouse') setPointerInside(true);\n };\n\n const state: NavbarState = { variant, collapsed: collapsed && !peek, peek };\n const element = useRender({\n defaultTagName: 'nav',\n render,\n ref,\n state,\n props: mergeProps<'nav'>(\n {\n className: 'oui-navbar',\n onPointerEnter: collapsed && expandOnHover ? onPointerEnter : undefined,\n onPointerLeave: collapsed && expandOnHover ? endHover : undefined,\n children: (\n <>\n {canCollapse && (\n <button\n type=\"button\"\n className=\"oui-navbar__toggle\"\n aria-label={label}\n aria-expanded={!collapsed}\n title={label}\n onClick={toggle}\n >\n <ChevronLeftIcon />\n </button>\n )}\n {children}\n </>\n ),\n },\n props,\n ),\n });\n return <NavbarCollapsedContext value={collapsed && !peek}>{element}</NavbarCollapsedContext>;\n}\n\nexport const NavbarHeader = createPrimitive('div', 'oui-navbar__header', 'NavbarHeader');\nexport const NavbarFooter = createPrimitive('div', 'oui-navbar__footer', 'NavbarFooter');\nexport const NavbarSection = createPrimitive('div', 'oui-navbar__section', 'NavbarSection');\nexport const NavbarSectionLabel = createPrimitive('div', 'oui-navbar__section-label', 'NavbarSectionLabel');\n\nexport interface NavbarBrandProps extends Omit<useRender.ComponentProps<'div'>, 'title'> {\n /** Logo or icon shown before the title; stays visible when the navbar is collapsed. */\n logo?: React.ReactNode;\n /** Product or organization name. */\n title: React.ReactNode;\n /** Smaller line under the title. */\n subtitle?: React.ReactNode;\n}\n\n/** Logo, title and subtitle block for the top of a `Navbar`. */\nexport function NavbarBrand({ logo, title, subtitle, render, ref, ...props }: NavbarBrandProps) {\n return useRender({\n defaultTagName: 'div',\n render,\n ref,\n props: mergeProps<'div'>(\n {\n className: 'oui-navbar__brand',\n children: (\n <>\n {logo && <span className=\"oui-navbar__logo\">{logo}</span>}\n <span className=\"oui-navbar__brand-text\">\n <span className=\"oui-navbar__brand-title\">{title}</span>\n {subtitle && <span className=\"oui-navbar__brand-subtitle\">{subtitle}</span>}\n </span>\n </>\n ),\n },\n props,\n ),\n });\n}\n\nexport type NavbarItemState = { active: boolean };\n\nexport interface NavbarItemProps extends useRender.ComponentProps<'a', NavbarItemState> {\n /** Icon shown before the label; it stays visible when the navbar is collapsed to a rail. */\n icon?: React.ReactNode;\n /** Marks the current page (sets aria-current). */\n active?: boolean;\n /** Trailing content such as a count badge. */\n badge?: React.ReactNode;\n}\n\n/**\n * Navigation link. Renders an `<a>`; use `render={<Link to=\"…\" />}` for a\n * router link or `render={<button />}` for an action.\n */\nexport function NavbarItem({ icon, active = false, badge, render, children, ref, ...props }: NavbarItemProps) {\n const collapsed = React.useContext(NavbarCollapsedContext);\n const state: NavbarItemState = { active };\n return useRender({\n defaultTagName: 'a',\n render,\n ref,\n state,\n props: mergeProps<'a'>(\n {\n className: 'oui-navbar__item',\n 'aria-current': active ? 'page' : undefined,\n title: collapsed && typeof children === 'string' ? children : undefined,\n children: (\n <>\n {icon && <span className=\"oui-navbar__item-icon\">{icon}</span>}\n <span className=\"oui-navbar__item-label\">{children}</span>\n {badge != null && <span className=\"oui-navbar__item-badge\">{badge}</span>}\n </>\n ),\n },\n props,\n ),\n });\n}\n\n// ─── App shell ───────────────────────────────────────────────────────────────\n\nexport interface AppShellProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Ref to the shell's root element. */\n ref?: React.Ref<HTMLDivElement>;\n /** Navbar content (usually a `<Navbar>`). Rendered in a drawer on small screens. */\n navbar: React.ReactNode;\n /** Brand shown in the mobile top bar. */\n mobileBrand?: React.ReactNode;\n /** Extra content on the right of the mobile top bar. */\n mobileActions?: React.ReactNode;\n /** Accessible name of the button that opens the navigation drawer on small screens. */\n menuLabel?: string;\n /** Props for the scrolling `<main>` element. */\n mainProps?: React.HTMLAttributes<HTMLElement>;\n}\n\n/**\n * Full-height layout with a fixed navbar and an internally scrolling main\n * area. Below 900px the navbar moves into a slide-in drawer.\n * Customize width with `--oui-navbar-width` and `--oui-navbar-collapsed-width`.\n */\nexport function AppShell({\n navbar,\n mobileBrand,\n mobileActions,\n menuLabel = 'Open navigation',\n mainProps,\n className,\n children,\n ref,\n ...props\n}: AppShellProps) {\n const [open, setOpen] = React.useState(false);\n const container = usePortalContainer();\n\n const closeOnNavigate = (event: React.MouseEvent) => {\n if ((event.target as HTMLElement).closest('a, .oui-navbar__item')) setOpen(false);\n };\n\n return (\n <div ref={ref} className={cx('oui-app-shell', className)} {...props}>\n <div className=\"oui-app-shell__navbar\">{navbar}</div>\n\n <BaseDialog.Root open={open} onOpenChange={setOpen}>\n <header className=\"oui-app-shell__mobile-bar\">\n <BaseDialog.Trigger className=\"oui-app-shell__menu-button\" aria-label={menuLabel}>\n <MenuIcon />\n </BaseDialog.Trigger>\n <div className=\"oui-app-shell__mobile-brand\">{mobileBrand}</div>\n {mobileActions}\n </header>\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop className=\"oui-dialog__backdrop\" />\n <BaseDialog.Popup className=\"oui-app-shell__drawer\" aria-label=\"Navigation\" onClick={closeOnNavigate}>\n <BaseDialog.Close className=\"oui-app-shell__drawer-close\" aria-label=\"Close navigation\">\n <XIcon />\n </BaseDialog.Close>\n <NavbarDrawerContext value={true}>{navbar}</NavbarDrawerContext>\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n\n <main {...mainProps} className={cx('oui-app-shell__main', mainProps?.className)}>\n {children}\n </main>\n </div>\n );\n}\n\n// ─── Page layout helpers ─────────────────────────────────────────────────────\n\nexport interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {\n /** Ref to the `<header>` element. */\n ref?: React.Ref<HTMLElement>;\n /** Trail shown above the title, usually `<Breadcrumbs>`. */\n breadcrumbs?: React.ReactNode;\n /** Small label above the title. */\n eyebrow?: React.ReactNode;\n /** Page title, rendered as the page `<h1>`. */\n title: React.ReactNode;\n /** Supporting text under the title. */\n description?: React.ReactNode;\n /** Buttons or controls aligned to the right of the title. */\n actions?: React.ReactNode;\n}\n\n/** Page title block with optional breadcrumbs, eyebrow, description and actions. */\nexport function PageHeader({\n breadcrumbs,\n eyebrow,\n title,\n description,\n actions,\n className,\n ref,\n ...props\n}: PageHeaderProps) {\n return (\n <header ref={ref} className={cx('oui-page-header', className)} {...props}>\n <div className=\"oui-page-header__text\">\n {breadcrumbs && <div className=\"oui-page-header__breadcrumbs\">{breadcrumbs}</div>}\n {eyebrow && <span className=\"oui-eyebrow\">{eyebrow}</span>}\n <h1 className=\"oui-page-header__title\">{title}</h1>\n {description && <p className=\"oui-page-header__description\">{description}</p>}\n </div>\n {actions && <div className=\"oui-page-header__actions\">{actions}</div>}\n </header>\n );\n}\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Ref to the grid element. */\n ref?: React.Ref<HTMLDivElement>;\n /** Columns on wide screens; collapses to 2 below 1200px (for 4+) and 1 below 900px. */\n columns?: 1 | 2 | 3 | 4 | 5 | 6;\n /** Space between grid cells. */\n gap?: 'sm' | 'md' | 'lg';\n}\n\n/** Responsive dashboard grid. */\nexport function Grid({ columns = 3, gap = 'md', className, ref, ...props }: GridProps) {\n return <div ref={ref} className={cx('oui-grid', className)} data-columns={columns} data-gap={gap} {...props} />;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AppShell.js","names":["React","Collapsible","BaseCollapsible","Dialog","BaseDialog","useRender","mergeProps","cx","createPrimitive","usePortalContainer","ChevronLeftIcon","ChevronRightIcon","MenuIcon","XIcon","NavbarVariant","NavbarState","variant","collapsed","peek","NavbarProps","ComponentProps","collapsible","defaultCollapsed","onCollapsedChange","expandOnHover","collapseLabel","expandLabel","NavbarCollapsedContext","createContext","NavbarDrawerContext","NavbarNestedContext","PinnedEntry","node","HTMLElement","icon","ReactNode","label","active","render","NavbarItemProps","props","Omit","PinnedRegistryContext","id","entry","Navbar","t0","$","_c","t1","t2","collapsedProp","t3","t4","t5","t6","children","ref","undefined","inDrawer","useContext","canCollapse","internal","setInternal","useState","pointerInside","setPointerInside","hovered","setHovered","t7","t8","timer","setTimeout","clearTimeout","useEffect","t9","Symbol","for","endHover","t10","toggle","t11","event","pointerType","onPointerEnter","t12","t13","state","t14","t15","t16","t17","className","onPointerLeave","t18","defaultTagName","element","t19","t20","NavbarHeader","NavbarFooter","NavbarSection","NavbarSectionLabel","NavbarBrandProps","logo","title","subtitle","NavbarBrand","NavbarItemState","badge","pinned","NavbarItem","nested","registry","register","useId","nodeRef","useRef","_className","style","_style","_title","rest","current","Ref","HTMLAnchorElement","hasActiveItem","Children","toArray","some","child","isValidElement","type","Fragment","NavbarGroup","NavbarGroupProps","HTMLAttributes","HTMLDivElement","open","defaultOpen","onOpenChange","openProp","hasActive","prevActive","setPrevActive","next","setOpen","MobileNavPosition","MoreTabPosition","AppShellProps","navbar","mobileBrand","mobileActions","mobileNavPosition","menuLabel","moreLabel","moreTabPosition","mainProps","MAX_PINNED","byDocumentOrder","a","b","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","PinnedTab","AppShell","container","Map","setPinned","prev","set","delete","hasTabs","moreTab","showTopBar","tabs","entries","sort","_temp","slice","length","map","_temp2","tabbar","target","closest","closeOnNavigate","t21","t22","t23","t24","t25","t26","t27","t28","id_0","entry_0","PageHeaderProps","breadcrumbs","eyebrow","description","actions","PageHeader","GridProps","columns","gap","Grid","_c","_Fragment","BaseCollapsible","BaseDialog"],"sources":["../../../src/components/app-shell/AppShell.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Collapsible as BaseCollapsible } from '@base-ui/react/collapsible';\nimport { Dialog as BaseDialog } from '@base-ui/react/dialog';\nimport { useRender } from '@base-ui/react/use-render';\nimport { mergeProps } from '@base-ui/react/merge-props';\nimport { cx } from '../../utils/cx';\nimport { createPrimitive } from '../../utils/primitive';\nimport { usePortalContainer } from '../../utils/portal';\nimport { ChevronLeftIcon, ChevronRightIcon, MenuIcon, XIcon } from '../../icons';\n\n// ─── Navbar ─────────────────────────────────────────────────────────────────\n\nexport type NavbarVariant = 'inverse' | 'surface';\n\nexport type NavbarState = { variant: NavbarVariant; collapsed: boolean; peek: boolean };\n\nexport interface NavbarProps extends useRender.ComponentProps<'nav', NavbarState> {\n /** `inverse` (brand-colored, default) or `surface` (light panel). */\n variant?: NavbarVariant;\n /** Shows a toggle in the top right that shrinks the navbar to an icon rail. Defaults to `true`. */\n collapsible?: boolean;\n /** Controlled collapsed state. */\n collapsed?: boolean;\n /** Initial collapsed state when uncontrolled. */\n defaultCollapsed?: boolean;\n /** Called when the user collapses or expands the navbar. */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Temporarily opens a collapsed navbar while the mouse is over it. Defaults to `true`. */\n expandOnHover?: boolean;\n /** Accessible names for the icon-only toggle. */\n collapseLabel?: string;\n /** Accessible name of the toggle while collapsed. */\n expandLabel?: string;\n}\n\nconst NavbarCollapsedContext = React.createContext(false);\n// True inside the AppShell drawer, where the navbar always shows in full.\nconst NavbarDrawerContext = React.createContext(false);\n// True for items inside a `NavbarGroup` panel: they are indented and drop their icon.\nconst NavbarNestedContext = React.createContext(false);\n\ntype PinnedEntry = {\n node: HTMLElement | null;\n icon: React.ReactNode;\n label: React.ReactNode;\n active: boolean;\n render: NavbarItemProps['render'];\n props: Omit<NavbarItemProps, 'className' | 'style' | 'title'>;\n};\n// Provided by AppShell: pinned NavbarItems register here to appear in the mobile tab bar.\nconst PinnedRegistryContext = React.createContext<((id: string, entry: PinnedEntry | null) => void) | null>(null);\n\n/**\n * Collapsible side navigation. Use inside `AppShell`. Compose with `NavbarHeader` (`NavbarBrand`),\n * `NavbarSection` (`NavbarSectionLabel`, `NavbarItem`) and `NavbarFooter`.\n */\nexport function Navbar({\n variant = 'inverse',\n collapsible = true,\n collapsed: collapsedProp,\n defaultCollapsed = false,\n onCollapsedChange,\n expandOnHover = true,\n collapseLabel = 'Collapse',\n expandLabel = 'Expand',\n render,\n children,\n ref,\n ...props\n}: NavbarProps) {\n const inDrawer = React.useContext(NavbarDrawerContext);\n const canCollapse = collapsible && !inDrawer;\n const [internal, setInternal] = React.useState(defaultCollapsed);\n const collapsed = canCollapse && (collapsedProp ?? internal);\n const label = collapsed ? expandLabel : collapseLabel;\n\n // Hover peek: shown in full once the mouse has rested over a collapsed navbar.\n const [pointerInside, setPointerInside] = React.useState(false);\n const [hovered, setHovered] = React.useState(false);\n React.useEffect(() => {\n if (!pointerInside) return;\n const timer = setTimeout(() => setHovered(true), 120);\n return () => clearTimeout(timer);\n }, [pointerInside]);\n const peek = collapsed && expandOnHover && hovered;\n\n const endHover = () => {\n setPointerInside(false);\n setHovered(false);\n };\n\n const toggle = () => {\n // Collapsing with the mouse still inside must not peek straight back open.\n endHover();\n if (collapsedProp === undefined) setInternal(!collapsed);\n onCollapsedChange?.(!collapsed);\n };\n\n const onPointerEnter = (event: React.PointerEvent) => {\n if (event.pointerType === 'mouse') setPointerInside(true);\n };\n\n const state: NavbarState = { variant, collapsed: collapsed && !peek, peek };\n const element = useRender({\n defaultTagName: 'nav',\n render,\n ref,\n state,\n props: mergeProps<'nav'>(\n {\n className: 'oui-navbar',\n onPointerEnter: collapsed && expandOnHover ? onPointerEnter : undefined,\n onPointerLeave: collapsed && expandOnHover ? endHover : undefined,\n children: (\n <>\n {canCollapse && (\n <button\n type=\"button\"\n className=\"oui-navbar__toggle\"\n aria-label={label}\n aria-expanded={!collapsed}\n title={label}\n onClick={toggle}\n >\n <ChevronLeftIcon />\n </button>\n )}\n {children}\n </>\n ),\n },\n props,\n ),\n });\n return <NavbarCollapsedContext value={collapsed && !peek}>{element}</NavbarCollapsedContext>;\n}\n\nexport const NavbarHeader = createPrimitive('div', 'oui-navbar__header', 'NavbarHeader');\nexport const NavbarFooter = createPrimitive('div', 'oui-navbar__footer', 'NavbarFooter');\nexport const NavbarSection = createPrimitive('div', 'oui-navbar__section', 'NavbarSection');\nexport const NavbarSectionLabel = createPrimitive('div', 'oui-navbar__section-label', 'NavbarSectionLabel');\n\nexport interface NavbarBrandProps extends Omit<useRender.ComponentProps<'div'>, 'title'> {\n /** Logo or icon shown before the title; stays visible when the navbar is collapsed. */\n logo?: React.ReactNode;\n /** Product or organization name. */\n title: React.ReactNode;\n /** Smaller line under the title. */\n subtitle?: React.ReactNode;\n}\n\n/** Logo, title and subtitle block for the top of a `Navbar`. */\nexport function NavbarBrand({ logo, title, subtitle, render, ref, ...props }: NavbarBrandProps) {\n return useRender({\n defaultTagName: 'div',\n render,\n ref,\n props: mergeProps<'div'>(\n {\n className: 'oui-navbar__brand',\n children: (\n <>\n {logo && <span className=\"oui-navbar__logo\">{logo}</span>}\n <span className=\"oui-navbar__brand-text\">\n <span className=\"oui-navbar__brand-title\">{title}</span>\n {subtitle && <span className=\"oui-navbar__brand-subtitle\">{subtitle}</span>}\n </span>\n </>\n ),\n },\n props,\n ),\n });\n}\n\nexport type NavbarItemState = { active: boolean };\n\nexport interface NavbarItemProps extends useRender.ComponentProps<'a', NavbarItemState> {\n /** Icon shown before the label; it stays visible when the navbar is collapsed to a rail. Not shown inside a `NavbarGroup`. */\n icon?: React.ReactNode;\n /** Marks the current page (sets aria-current). Also opens the surrounding `NavbarGroup`. */\n active?: boolean;\n /** Trailing content such as a count badge. */\n badge?: React.ReactNode;\n /**\n * Also shows the item in the `AppShell` mobile tab bar (icon and label). Pin up to four items; the\n * first four in navbar order are used. Has no effect outside an `AppShell`.\n */\n pinned?: boolean;\n}\n\n/**\n * Navigation link. Renders an `<a>`; use `render={<Link to=\"…\" />}` for a\n * router link or `render={<button />}` for an action. Inside a `NavbarGroup` it becomes an indented sub-link.\n */\nexport function NavbarItem({\n icon,\n active = false,\n badge,\n pinned = false,\n render,\n children,\n ref,\n ...props\n}: NavbarItemProps) {\n const collapsed = React.useContext(NavbarCollapsedContext);\n const nested = React.useContext(NavbarNestedContext);\n const inDrawer = React.useContext(NavbarDrawerContext);\n const registry = React.useContext(PinnedRegistryContext);\n const register = pinned && !inDrawer ? registry : null;\n const id = React.useId();\n const nodeRef = React.useRef<HTMLElement>(null);\n\n // Keep the tab bar copy in sync; the second effect removes it when unpinned or unmounted.\n React.useEffect(() => {\n if (!register) return;\n const { className: _className, style: _style, title: _title, ...rest } = props;\n register(id, { node: nodeRef.current, icon, label: children, active, render, props: rest });\n });\n React.useEffect(() => {\n if (register) return () => register(id, null);\n }, [register, id]);\n\n const state: NavbarItemState = { active };\n return useRender({\n defaultTagName: 'a',\n render,\n ref: [ref, nodeRef] as React.Ref<HTMLAnchorElement>[],\n state,\n props: mergeProps<'a'>(\n {\n className: 'oui-navbar__item',\n 'aria-current': active ? 'page' : undefined,\n title: collapsed && typeof children === 'string' ? children : undefined,\n children: (\n <>\n {icon && !nested && <span className=\"oui-navbar__item-icon\">{icon}</span>}\n <span className=\"oui-navbar__item-label\">{children}</span>\n {badge != null && <span className=\"oui-navbar__item-badge\">{badge}</span>}\n </>\n ),\n },\n props,\n ),\n });\n}\n\nfunction hasActiveItem(children: React.ReactNode): boolean {\n return React.Children.toArray(children).some(\n (child) =>\n React.isValidElement<{ active?: boolean; children?: React.ReactNode }>(child) &&\n (child.props.active === true ||\n ((child.type === React.Fragment || child.type === NavbarGroup) && hasActiveItem(child.props.children))),\n );\n}\n\nexport interface NavbarGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Ref to the group's root element. */\n ref?: React.Ref<HTMLDivElement>;\n /** Text of the parent row. A string also becomes its tooltip on the collapsed rail. */\n label: React.ReactNode;\n /** Icon of the parent row; it stays visible when the navbar is collapsed to a rail. */\n icon?: React.ReactNode;\n /** Trailing content of the parent row, such as a count badge. */\n badge?: React.ReactNode;\n /** Controlled open state. Takes over from the automatic opening on an active child. */\n open?: boolean;\n /**\n * Initial open state when uncontrolled. Whenever a child item becomes `active`, the group opens.\n * @default true when a child item is active\n */\n defaultOpen?: boolean;\n /** Called when the user opens or closes the group. */\n onOpenChange?: (open: boolean) => void;\n /** Sub-links: `NavbarItem` elements (directly or in fragments), shown indented and without icons. */\n children?: React.ReactNode;\n}\n\n/**\n * Expandable parent row in a `Navbar` with nested `NavbarItem` sub-links. Place it in a `NavbarSection`\n * next to other items. On a collapsed rail the sub-links are hidden and the parent shows as active when\n * one of them is; the hover peek shows the full tree.\n *\n * @example\n * <NavbarSection>\n * <NavbarGroup icon={<Truck />} label=\"Fleet\">\n * <NavbarItem href=\"/fleet/vehicles\" active>Vehicles</NavbarItem>\n * <NavbarItem href=\"/fleet/drivers\">Drivers</NavbarItem>\n * </NavbarGroup>\n * </NavbarSection>\n */\nexport function NavbarGroup({\n label,\n icon,\n badge,\n open: openProp,\n defaultOpen,\n onOpenChange,\n className,\n children,\n ref,\n ...props\n}: NavbarGroupProps) {\n const collapsed = React.useContext(NavbarCollapsedContext);\n const hasActive = hasActiveItem(children);\n const [internal, setInternal] = React.useState(defaultOpen ?? hasActive);\n // Open when navigation lands on one of the sub-links.\n const [prevActive, setPrevActive] = React.useState(hasActive);\n if (hasActive !== prevActive) {\n setPrevActive(hasActive);\n if (hasActive) setInternal(true);\n }\n const open = openProp ?? internal;\n\n const setOpen = (next: boolean) => {\n if (openProp === undefined) setInternal(next);\n onOpenChange?.(next);\n };\n\n return (\n <BaseCollapsible.Root\n ref={ref}\n className={cx('oui-navbar__group', className)}\n open={open}\n onOpenChange={setOpen}\n data-open={open ? '' : undefined}\n {...props}\n >\n <BaseCollapsible.Trigger\n className=\"oui-navbar__item\"\n data-has-children=\"\"\n data-open={open ? '' : undefined}\n // The parent stands in for a hidden active child.\n data-active={hasActive && (collapsed || !open) ? '' : undefined}\n title={collapsed && typeof label === 'string' ? label : undefined}\n >\n {icon && <span className=\"oui-navbar__item-icon\">{icon}</span>}\n <span className=\"oui-navbar__item-label\">{label}</span>\n {badge != null && <span className=\"oui-navbar__item-badge\">{badge}</span>}\n <ChevronRightIcon className=\"oui-navbar__item-chevron\" />\n </BaseCollapsible.Trigger>\n {/* Kept mounted so pinned sub-links stay registered for the mobile tab bar while closed. */}\n <BaseCollapsible.Panel className=\"oui-navbar__group-panel\" keepMounted>\n <div className=\"oui-navbar__group-items\">\n <NavbarNestedContext value={true}>{children}</NavbarNestedContext>\n </div>\n </BaseCollapsible.Panel>\n </BaseCollapsible.Root>\n );\n}\n\n// ─── App shell ───────────────────────────────────────────────────────────────\n\nexport type MobileNavPosition = 'bottom' | 'top';\n\nexport type MoreTabPosition = 'start' | 'end';\n\nexport interface AppShellProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Ref to the shell's root element. */\n ref?: React.Ref<HTMLDivElement>;\n /** Navbar content (usually a `<Navbar>`). Rendered in a drawer on small screens. */\n navbar: React.ReactNode;\n /** Brand shown in the mobile top bar. */\n mobileBrand?: React.ReactNode;\n /** Extra content on the right of the mobile top bar. */\n mobileActions?: React.ReactNode;\n /**\n * Where small screens show the tab bar of pinned `NavbarItem`s: below or above the main area. Both look\n * the same; the \"More\" slot (see `moreTabPosition`) opens the navbar drawer. The top bar with `mobileBrand` and\n * `mobileActions` only appears when one of them is set. Without pinned items, a top bar with a menu\n * button is shown instead.\n */\n mobileNavPosition?: MobileNavPosition;\n /** Accessible name of the button that opens the navigation drawer on small screens. */\n menuLabel?: string;\n /** Label of the tab-bar slot that opens the navigation drawer. */\n moreLabel?: string;\n /** Whether the \"More\" slot comes before or after the pinned items in the tab bar. */\n moreTabPosition?: MoreTabPosition;\n /** Props for the scrolling `<main>` element. */\n mainProps?: React.HTMLAttributes<HTMLElement>;\n}\n\nconst MAX_PINNED = 4;\n\nfunction byDocumentOrder(a: PinnedEntry, b: PinnedEntry) {\n if (!a.node || !b.node) return 0;\n return a.node.compareDocumentPosition(b.node) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n}\n\nfunction PinnedTab({ entry }: { entry: PinnedEntry }) {\n const state: NavbarItemState = { active: entry.active };\n return useRender({\n defaultTagName: 'a',\n render: entry.render,\n state,\n props: mergeProps<'a'>(\n {\n className: 'oui-app-shell__tab',\n 'aria-current': entry.active ? 'page' : undefined,\n title: typeof entry.label === 'string' ? entry.label : undefined,\n children: (\n <>\n <span className=\"oui-app-shell__tab-icon\">{entry.icon}</span>\n <span className=\"oui-app-shell__tab-label\">{entry.label}</span>\n </>\n ),\n },\n entry.props as React.ComponentProps<'a'>,\n ),\n });\n}\n\n/**\n * Full-height layout with a fixed navbar and an internally scrolling main\n * area. Below 900px the navbar moves into a slide-in drawer, and `NavbarItem`s marked `pinned` show in a\n * tab bar (see `mobileNavPosition`).\n * Customize width with `--oui-navbar-width` and `--oui-navbar-collapsed-width`.\n *\n * @example\n * <AppShell\n * mobileBrand=\"OptiControl\"\n * navbar={\n * <Navbar>\n * <NavbarSection>\n * <NavbarItem href=\"/\" icon={<Home />} active pinned>Overview</NavbarItem>\n * <NavbarItem href=\"/fleet\" icon={<Truck />} pinned>Fleet</NavbarItem>\n * </NavbarSection>\n * </Navbar>\n * }\n * >\n * <PageHeader title=\"Overview\" />\n * </AppShell>\n */\nexport function AppShell({\n navbar,\n mobileBrand,\n mobileActions,\n mobileNavPosition = 'bottom',\n menuLabel = 'Open navigation',\n moreLabel = 'More',\n moreTabPosition = 'start',\n mainProps,\n className,\n children,\n ref,\n ...props\n}: AppShellProps) {\n const [open, setOpen] = React.useState(false);\n const container = usePortalContainer();\n\n const [pinned, setPinned] = React.useState<ReadonlyMap<string, PinnedEntry>>(new Map());\n // Must stay referentially stable: items re-register on every render.\n const [register] = React.useState(() => (id: string, entry: PinnedEntry | null) => {\n setPinned((prev) => {\n const next = new Map(prev);\n if (entry) next.set(id, entry);\n else next.delete(id);\n return next;\n });\n });\n const tabs = [...pinned.entries()].sort(([, a], [, b]) => byDocumentOrder(a, b)).slice(0, MAX_PINNED);\n const hasTabs = tabs.length > 0;\n const showTopBar = !hasTabs || mobileBrand != null || mobileActions != null;\n\n const moreTab = (\n <BaseDialog.Trigger className=\"oui-app-shell__tab\">\n <span className=\"oui-app-shell__tab-icon\">\n <MenuIcon />\n </span>\n <span className=\"oui-app-shell__tab-label\">{moreLabel}</span>\n </BaseDialog.Trigger>\n );\n const tabbar = (\n <nav className=\"oui-app-shell__tabbar\" data-position={mobileNavPosition} aria-label=\"Quick navigation\">\n {moreTabPosition === 'start' && moreTab}\n {tabs.map(([id, entry]) => (\n <PinnedTab key={id} entry={entry} />\n ))}\n {moreTabPosition === 'end' && moreTab}\n </nav>\n );\n\n const closeOnNavigate = (event: React.MouseEvent) => {\n if ((event.target as HTMLElement).closest('a, .oui-navbar__item')) setOpen(false);\n };\n\n return (\n <div ref={ref} className={cx('oui-app-shell', className)} {...props}>\n <div className=\"oui-app-shell__navbar\">\n <PinnedRegistryContext value={register}>{navbar}</PinnedRegistryContext>\n </div>\n\n <BaseDialog.Root open={open} onOpenChange={setOpen}>\n {showTopBar && (\n <header className=\"oui-app-shell__mobile-bar\">\n {!hasTabs && (\n <BaseDialog.Trigger className=\"oui-app-shell__menu-button\" aria-label={menuLabel}>\n <MenuIcon />\n </BaseDialog.Trigger>\n )}\n <div className=\"oui-app-shell__mobile-brand\">{mobileBrand}</div>\n {mobileActions}\n </header>\n )}\n\n {hasTabs && mobileNavPosition === 'top' && tabbar}\n\n <main {...mainProps} className={cx('oui-app-shell__main', mainProps?.className)}>\n {children}\n </main>\n\n {hasTabs && mobileNavPosition === 'bottom' && tabbar}\n\n <BaseDialog.Portal container={container}>\n <BaseDialog.Backdrop className=\"oui-dialog__backdrop\" />\n <BaseDialog.Popup className=\"oui-app-shell__drawer\" aria-label=\"Navigation\" onClick={closeOnNavigate}>\n <BaseDialog.Close className=\"oui-app-shell__drawer-close\" aria-label=\"Close navigation\">\n <XIcon />\n </BaseDialog.Close>\n <NavbarDrawerContext value={true}>{navbar}</NavbarDrawerContext>\n </BaseDialog.Popup>\n </BaseDialog.Portal>\n </BaseDialog.Root>\n </div>\n );\n}\n\n// ─── Page layout helpers ─────────────────────────────────────────────────────\n\nexport interface PageHeaderProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {\n /** Ref to the `<header>` element. */\n ref?: React.Ref<HTMLElement>;\n /** Trail shown above the title, usually `<Breadcrumbs>`. */\n breadcrumbs?: React.ReactNode;\n /** Small label above the title. */\n eyebrow?: React.ReactNode;\n /** Page title, rendered as the page `<h1>`. */\n title: React.ReactNode;\n /** Supporting text under the title. */\n description?: React.ReactNode;\n /** Buttons or controls aligned to the right of the title. */\n actions?: React.ReactNode;\n}\n\n/** Page title block with optional breadcrumbs, eyebrow, description and actions. */\nexport function PageHeader({\n breadcrumbs,\n eyebrow,\n title,\n description,\n actions,\n className,\n ref,\n ...props\n}: PageHeaderProps) {\n return (\n <header ref={ref} className={cx('oui-page-header', className)} {...props}>\n <div className=\"oui-page-header__text\">\n {breadcrumbs && <div className=\"oui-page-header__breadcrumbs\">{breadcrumbs}</div>}\n {eyebrow && <span className=\"oui-eyebrow\">{eyebrow}</span>}\n <h1 className=\"oui-page-header__title\">{title}</h1>\n {description && <p className=\"oui-page-header__description\">{description}</p>}\n </div>\n {actions && <div className=\"oui-page-header__actions\">{actions}</div>}\n </header>\n );\n}\n\nexport interface GridProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Ref to the grid element. */\n ref?: React.Ref<HTMLDivElement>;\n /** Columns on wide screens; collapses to 2 below 1200px (for 4+) and 1 below 900px. */\n columns?: 1 | 2 | 3 | 4 | 5 | 6;\n /** Space between grid cells. */\n gap?: 'sm' | 'md' | 'lg';\n}\n\n/** Responsive dashboard grid. */\nexport function Grid({ columns = 3, gap = 'md', className, ref, ...props }: GridProps) {\n return <div ref={ref} className={cx('oui-grid', className)} data-columns={columns} data-gap={gap} {...props} />;\n}\n"],"mappings":"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"}
@@ -13,13 +13,11 @@ export interface BadgeProps extends useRender.ComponentProps<'span', BadgeState>
13
13
  variant?: BadgeVariant;
14
14
  /** Badge height and text size. */
15
15
  size?: 'sm' | 'md';
16
- /** Leading status dot. */
17
- dot?: boolean;
18
16
  }
19
17
  /**
20
18
  * Small status label.
21
19
  *
22
20
  * @example
23
- * <Badge tone="success" dot>Online</Badge>
21
+ * <Badge tone="success">Online</Badge>
24
22
  */
25
- export declare function Badge({ tone, variant, size, dot, render, children, ref, ...props }: BadgeProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
23
+ export declare function Badge({ tone, variant, size, render, children, ref, ...props }: BadgeProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
@@ -1,6 +1,5 @@
1
1
  "use client";
2
2
  import { c } from "react/compiler-runtime";
3
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
3
  import { useRender } from "@base-ui/react/use-render";
5
4
  import { mergeProps } from "@base-ui/react/merge-props";
6
5
  //#region src/components/badge/Badge.tsx
@@ -8,10 +7,10 @@ import { mergeProps } from "@base-ui/react/merge-props";
8
7
  * Small status label.
9
8
  *
10
9
  * @example
11
- * <Badge tone="success" dot>Online</Badge>
10
+ * <Badge tone="success">Online</Badge>
12
11
  */
13
12
  function Badge(t0) {
14
- const $ = c(22);
13
+ const $ = c(17);
15
14
  let t1;
16
15
  let t2;
17
16
  let t3;
@@ -19,7 +18,7 @@ function Badge(t0) {
19
18
  let t5;
20
19
  let t6;
21
20
  if ($[0] !== t0) {
22
- const { tone: t7, variant: t8, size: t9, dot, render, children, ref, ...props } = t0;
21
+ const { tone: t7, variant: t8, size: t9, render, children, ref, ...props } = t0;
23
22
  const tone = t7 === void 0 ? "neutral" : t7;
24
23
  const variant = t8 === void 0 ? "soft" : t8;
25
24
  const size = t9 === void 0 ? "md" : t9;
@@ -41,25 +40,9 @@ function Badge(t0) {
41
40
  t2 = render;
42
41
  t3 = ref;
43
42
  t4 = state;
44
- let t11;
45
- if ($[11] !== dot) {
46
- t11 = dot && /* @__PURE__ */ jsx("span", {
47
- className: "oui-badge__dot",
48
- "aria-hidden": true
49
- });
50
- $[11] = dot;
51
- $[12] = t11;
52
- } else t11 = $[12];
53
- let t12;
54
- if ($[13] !== children || $[14] !== t11) {
55
- t12 = /* @__PURE__ */ jsxs(Fragment, { children: [t11, children] });
56
- $[13] = children;
57
- $[14] = t11;
58
- $[15] = t12;
59
- } else t12 = $[15];
60
43
  t5 = mergeProps({
61
44
  className: "oui-badge",
62
- children: t12
45
+ children
63
46
  }, props);
64
47
  $[0] = t0;
65
48
  $[1] = t1;
@@ -77,7 +60,7 @@ function Badge(t0) {
77
60
  t6 = $[6];
78
61
  }
79
62
  let t7;
80
- if ($[16] !== t1 || $[17] !== t2 || $[18] !== t3 || $[19] !== t4 || $[20] !== t5) {
63
+ if ($[11] !== t1 || $[12] !== t2 || $[13] !== t3 || $[14] !== t4 || $[15] !== t5) {
81
64
  t7 = {
82
65
  defaultTagName: t1,
83
66
  render: t2,
@@ -85,13 +68,13 @@ function Badge(t0) {
85
68
  state: t4,
86
69
  props: t5
87
70
  };
88
- $[16] = t1;
89
- $[17] = t2;
90
- $[18] = t3;
91
- $[19] = t4;
92
- $[20] = t5;
93
- $[21] = t7;
94
- } else t7 = $[21];
71
+ $[11] = t1;
72
+ $[12] = t2;
73
+ $[13] = t3;
74
+ $[14] = t4;
75
+ $[15] = t5;
76
+ $[16] = t7;
77
+ } else t7 = $[16];
95
78
  return t6(t7);
96
79
  }
97
80
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.js","names":["useRender","mergeProps","BadgeTone","BadgeVariant","BadgeState","tone","variant","size","BadgeProps","ComponentProps","dot","Badge","t0","$","_c","t1","t2","t3","t4","t5","t6","t7","t8","t9","render","children","ref","props","undefined","t10","state","t11","t12","className","defaultTagName","_c","_Fragment"],"sources":["../../../src/components/badge/Badge.tsx"],"sourcesContent":["import { useRender } from '@base-ui/react/use-render';\nimport { mergeProps } from '@base-ui/react/merge-props';\n\nexport type BadgeTone = 'neutral' | 'accent' | 'info' | 'success' | 'warning' | 'danger';\nexport type BadgeVariant = 'soft' | 'solid' | 'outline';\n\nexport type BadgeState = {\n tone: BadgeTone;\n variant: BadgeVariant;\n size: 'sm' | 'md';\n};\n\nexport interface BadgeProps extends useRender.ComponentProps<'span', BadgeState> {\n /** Semantic color. */\n tone?: BadgeTone;\n /** `soft` tinted, `solid` filled, `outline` bordered. */\n variant?: BadgeVariant;\n /** Badge height and text size. */\n size?: 'sm' | 'md';\n /** Leading status dot. */\n dot?: boolean;\n}\n\n/**\n * Small status label.\n *\n * @example\n * <Badge tone=\"success\" dot>Online</Badge>\n */\nexport function Badge({\n tone = 'neutral',\n variant = 'soft',\n size = 'md',\n dot,\n render,\n children,\n ref,\n ...props\n}: BadgeProps) {\n const state: BadgeState = { tone, variant, size };\n return useRender({\n defaultTagName: 'span',\n render,\n ref,\n state,\n props: mergeProps<'span'>(\n {\n className: 'oui-badge',\n children: (\n <>\n {dot && <span className=\"oui-badge__dot\" aria-hidden />}\n {children}\n </>\n ),\n },\n props,\n ),\n });\n}\n"],"mappings":";;;;;;;;;;;;AA6BA,SAAOW,MAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAP,EAAA,OAAAD,IAAA;EAAe,MAAA,EAAAP,MAAAgB,IAAAf,SAAAgB,IAAAf,MAAAgB,IAAAb,KAAAc,QAAAC,UAAAC,KAAA,GAAAC,UAAAf;EACpB,MAAAP,OAAAgB,OAAAO,KAAAA,IAAA,YAAAP;EACA,MAAAf,UAAAgB,OAAAM,KAAAA,IAAA,SAAAN;EACA,MAAAf,OAAAgB,OAAAK,KAAAA,IAAA,OAAAL;EAAW,IAAAM;EAAA,IAAAhB,EAAA,OAAAN,QAAAM,EAAA,OAAAR,QAAAQ,EAAA,OAAAP,SAAA;GAOeuB,MAAA;IAAAxB;IAAAC;IAAAC;GAAsB;GAACM,EAAA,KAAAN;GAAAM,EAAA,KAAAR;GAAAQ,EAAA,KAAAP;GAAAO,EAAA,MAAAgB;EAAA,OAAAA,MAAAhB,EAAA;EAAjD,MAAAiB,QAA0BD;EACnB7B,KAAAA;EACWe,KAAA;EAChBS,KAAAA;EACAE,KAAAA;EACAI,KAAAA;EAAK,IAAAC;EAAA,IAAAlB,EAAA,QAAAH,KAAA;GAMIqB,MAAArB,OAAO,oBAAA,QAAA;IAAgB,WAAA;IAAiB,eAAA;GAAW,CAAA;GAAGG,EAAA,MAAAH;GAAAG,EAAA,MAAAkB;EAAA,OAAAA,MAAAlB,EAAA;EAAA,IAAAmB;EAAA,IAAAnB,EAAA,QAAAY,YAAAZ,EAAA,QAAAkB,KAAA;GADzDC,MAAA,qBAAAI,UAAA,EAAA,UAAA,CACGL,KACAN,QAAQ,EAAA,CAAA;GACRZ,EAAA,MAAAY;GAAAZ,EAAA,MAAAkB;GAAAlB,EAAA,MAAAmB;EAAA,OAAAA,MAAAnB,EAAA;EAPFM,KAAAlB,WACL;GAAAgC,WACa;GAAWR,UAEpBO;EAKJ,GACAL,KACF;EAACd,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;EAAAL,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAA;EAAAL,KAAAF,EAAA;EAAAG,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;EAAAK,KAAAL,EAAA;EAAAM,KAAAN,EAAA;EAAAO,KAAAP,EAAA;CAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,QAAAE,MAAAF,EAAA,QAAAG,MAAAH,EAAA,QAAAI,MAAAJ,EAAA,QAAAK,MAAAL,EAAA,QAAAM,IAAA;EAhBcE,KAAA;GAAAa,gBACCnB;GAAMS,QACtBA;GAAME,KACNA;GAAGI,OACHA;GAAKH,OACER;EAYT;EAACN,EAAA,MAAAE;EAAAF,EAAA,MAAAG;EAAAH,EAAA,MAAAI;EAAAJ,EAAA,MAAAK;EAAAL,EAAA,MAAAM;EAAAN,EAAA,MAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OAjBMb,GAAUqB,EAiBhB;AAAC"}
1
+ {"version":3,"file":"Badge.js","names":["useRender","mergeProps","BadgeTone","BadgeVariant","BadgeState","tone","variant","size","BadgeProps","ComponentProps","Badge","t0","$","_c","t1","t2","t3","t4","t5","t6","t7","t8","t9","render","children","ref","props","undefined","t10","state","className","defaultTagName","_c"],"sources":["../../../src/components/badge/Badge.tsx"],"sourcesContent":["import { useRender } from '@base-ui/react/use-render';\nimport { mergeProps } from '@base-ui/react/merge-props';\n\nexport type BadgeTone = 'neutral' | 'accent' | 'info' | 'success' | 'warning' | 'danger';\nexport type BadgeVariant = 'soft' | 'solid' | 'outline';\n\nexport type BadgeState = {\n tone: BadgeTone;\n variant: BadgeVariant;\n size: 'sm' | 'md';\n};\n\nexport interface BadgeProps extends useRender.ComponentProps<'span', BadgeState> {\n /** Semantic color. */\n tone?: BadgeTone;\n /** `soft` tinted, `solid` filled, `outline` bordered. */\n variant?: BadgeVariant;\n /** Badge height and text size. */\n size?: 'sm' | 'md';\n}\n\n/**\n * Small status label.\n *\n * @example\n * <Badge tone=\"success\">Online</Badge>\n */\nexport function Badge({\n tone = 'neutral',\n variant = 'soft',\n size = 'md',\n render,\n children,\n ref,\n ...props\n}: BadgeProps) {\n const state: BadgeState = { tone, variant, size };\n return useRender({\n defaultTagName: 'span',\n render,\n ref,\n state,\n props: mergeProps<'span'>(\n {\n className: 'oui-badge',\n children,\n },\n props,\n ),\n });\n}\n"],"mappings":";;;;;;;;;;;AA2BA,SAAOU,MAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAP,EAAA,OAAAD,IAAA;EAAe,MAAA,EAAAN,MAAAe,IAAAd,SAAAe,IAAAd,MAAAe,IAAAC,QAAAC,UAAAC,KAAA,GAAAC,UAAAf;EACpB,MAAAN,OAAAe,OAAAO,KAAAA,IAAA,YAAAP;EACA,MAAAd,UAAAe,OAAAM,KAAAA,IAAA,SAAAN;EACA,MAAAd,OAAAe,OAAAK,KAAAA,IAAA,OAAAL;EAAW,IAAAM;EAAA,IAAAhB,EAAA,OAAAL,QAAAK,EAAA,OAAAP,QAAAO,EAAA,OAAAN,SAAA;GAMesB,MAAA;IAAAvB;IAAAC;IAAAC;GAAsB;GAACK,EAAA,KAAAL;GAAAK,EAAA,KAAAP;GAAAO,EAAA,KAAAN;GAAAM,EAAA,MAAAgB;EAAA,OAAAA,MAAAhB,EAAA;EAAjD,MAAAiB,QAA0BD;EACnB5B,KAAAA;EACWc,KAAA;EAChBS,KAAAA;EACAE,KAAAA;EACAI,KAAAA;EACOX,KAAAjB,WACL;GAAA6B,WACa;GAAWN;EAExB,GACAE,KACF;EAACd,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;EAAAL,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAA;EAAAL,KAAAF,EAAA;EAAAG,KAAAH,EAAA;EAAAI,KAAAJ,EAAA;EAAAK,KAAAL,EAAA;EAAAM,KAAAN,EAAA;EAAAO,KAAAP,EAAA;CAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,QAAAE,MAAAF,EAAA,QAAAG,MAAAH,EAAA,QAAAI,MAAAJ,EAAA,QAAAK,MAAAL,EAAA,QAAAM,IAAA;EAXcE,KAAA;GAAAW,gBACCjB;GAAMS,QACtBA;GAAME,KACNA;GAAGI,OACHA;GAAKH,OACER;EAOT;EAACN,EAAA,MAAAE;EAAAF,EAAA,MAAAG;EAAAH,EAAA,MAAAI;EAAAJ,EAAA,MAAAK;EAAAL,EAAA,MAAAM;EAAAN,EAAA,MAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OAZMZ,GAAUoB,EAYhB;AAAC"}
@@ -1,7 +1,9 @@
1
1
  import * as React from 'react';
2
- import { formatDate, formatDateLong, type DateRange } from './date-utils';
3
- export type { DateRange };
4
- export { formatDate, formatDateLong };
2
+ import { formatDate, type DateGranularity, type DateRange, type FormatDateOptions } from './date-utils';
3
+ export type { DateRange, DateGranularity, FormatDateOptions };
4
+ export { formatDate };
5
+ /** The units a calendar grid can pick: days, whole months or whole years. */
6
+ export type CalendarGranularity = 'year' | 'month' | 'day';
5
7
  export interface CalendarLabels {
6
8
  previousMonth: string;
7
9
  nextMonth: string;
@@ -22,10 +24,15 @@ interface CalendarOptions extends Omit<React.HTMLAttributes<HTMLDivElement>, 'de
22
24
  isDateDisabled?: (date: string) => boolean;
23
25
  /** Month shown first when there is no value (any ISO date in that month). */
24
26
  defaultMonth?: string;
25
- /** BCP 47 locale for month and weekday names. Defaults to the browser's. */
27
+ /** BCP 47 locale for month and weekday names. Defaults to `DateConfigProvider`, then the browser's. */
26
28
  locale?: string;
27
- /** First column: 0 = Sunday, 1 = Monday (default). */
29
+ /**
30
+ * First column: 0 = Sunday, 1 = Monday. Defaults to `DateConfigProvider`.
31
+ * @default 1
32
+ */
28
33
  weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
34
+ /** What a pick selects: a day from the month grid, a month (as its 1st day) from a month grid, or a year (as 1 January) from a year grid. */
35
+ granularity?: CalendarGranularity;
29
36
  /** Months shown side by side (default 1). */
30
37
  numberOfMonths?: number;
31
38
  /** Move focus to the selected day (or today) on mount, e.g. inside a popover. */
@@ -33,21 +40,25 @@ interface CalendarOptions extends Omit<React.HTMLAttributes<HTMLDivElement>, 'de
33
40
  labels?: Partial<CalendarLabels>;
34
41
  }
35
42
  export interface CalendarProps extends CalendarOptions {
36
- /** Selected day as an ISO date (`"2026-03-09"`). */
43
+ /** Selected day as an ISO date (`"2026-03-09"`). With a month or year `granularity`, the day it falls in is enough. */
37
44
  value?: string | null;
38
45
  /** Initially selected day (ISO date) when uncontrolled. */
39
46
  defaultValue?: string | null;
40
- /** Called with the picked day as an ISO date. */
47
+ /** Called with the picked day as an ISO date: the 1st of the month, or 1 January, for a month or year `granularity`. */
41
48
  onValueChange?: (value: string) => void;
42
49
  }
43
50
  /**
44
51
  * Month grid for picking one day. Keyboard: arrows move by day / week,
45
52
  * Home / End jump within the week, PageUp / PageDown change month (with Shift: year).
46
53
  * The month and year in the title open a list to jump straight to another one.
54
+ * With `granularity="month"` or `"year"` it shows a month or year grid instead.
55
+ *
56
+ * @example
57
+ * <Calendar value={month} onValueChange={setMonth} granularity="month" />
47
58
  */
48
59
  export declare function Calendar({ value, defaultValue, onValueChange, ...props }: CalendarProps): React.JSX.Element;
49
60
  export interface RangeCalendarProps extends CalendarOptions {
50
- /** Selected days as ISO dates; both ends are inclusive. */
61
+ /** Selected days as ISO dates; both ends are inclusive. With a month or year `granularity`, each end is the 1st day of its month or year. */
51
62
  value?: DateRange | null;
52
63
  /** Initially selected range when uncontrolled. */
53
64
  defaultValue?: DateRange | null;