neba 1.11.0 → 1.13.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.
- package/LICENSE +1 -1
- package/README.md +43 -41
- package/dist/components/accordion/Accordion.d.ts +18 -0
- package/dist/components/accordion/Accordion.js +1 -1
- package/dist/components/anchor/Anchor.js +1 -1
- package/dist/components/animate-appear/AnimateAppear.d.ts +2 -13
- package/dist/components/animate-appear/AnimateAppear.js +1 -1
- package/dist/components/animate-blink/AnimateBlink.d.ts +2 -2
- package/dist/components/animate-blink/AnimateBlink.js +1 -1
- package/dist/components/animate-counter/AnimateCounter.d.ts +45 -0
- package/dist/components/animate-counter/AnimateCounter.js +1 -0
- package/dist/components/animate-counter/index.d.ts +1 -0
- package/dist/components/animate-counter/index.js +1 -0
- package/dist/components/animate-fade/AnimateFade.d.ts +2 -2
- package/dist/components/animate-fade/AnimateFade.js +1 -1
- package/dist/components/animate-float/AnimateFloat.d.ts +35 -0
- package/dist/components/animate-float/AnimateFloat.js +1 -0
- package/dist/components/animate-float/index.d.ts +1 -0
- package/dist/components/animate-float/index.js +1 -0
- package/dist/components/animate-grow/AnimateGrow.d.ts +2 -2
- package/dist/components/animate-grow/AnimateGrow.js +1 -1
- package/dist/components/animate-marquee/AnimateMarquee.d.ts +5 -3
- package/dist/components/animate-marquee/AnimateMarquee.js +1 -1
- package/dist/components/animate-reveal/AnimateReveal.d.ts +41 -0
- package/dist/components/animate-reveal/AnimateReveal.js +1 -0
- package/dist/components/animate-reveal/index.d.ts +1 -0
- package/dist/components/animate-reveal/index.js +1 -0
- package/dist/components/animate-rotate/AnimateRotate.d.ts +2 -2
- package/dist/components/animate-rotate/AnimateRotate.js +1 -1
- package/dist/components/animate-scramble/AnimateScramble.d.ts +48 -0
- package/dist/components/animate-scramble/AnimateScramble.js +1 -0
- package/dist/components/animate-scramble/index.d.ts +1 -0
- package/dist/components/animate-scramble/index.js +1 -0
- package/dist/components/animate-shake/AnimateShake.d.ts +39 -0
- package/dist/components/animate-shake/AnimateShake.js +1 -0
- package/dist/components/animate-shake/index.d.ts +1 -0
- package/dist/components/animate-shake/index.js +1 -0
- package/dist/components/animate-slide/AnimateSlide.d.ts +2 -2
- package/dist/components/animate-slide/AnimateSlide.js +1 -1
- package/dist/components/animate-split/AnimateSplit.d.ts +61 -0
- package/dist/components/animate-split/AnimateSplit.js +1 -0
- package/dist/components/animate-split/index.d.ts +1 -0
- package/dist/components/animate-split/index.js +1 -0
- package/dist/components/animate-typing/AnimateTyping.js +1 -1
- package/dist/components/animate-zoom/AnimateZoom.d.ts +2 -2
- package/dist/components/animate-zoom/AnimateZoom.js +1 -1
- package/dist/components/app-logo/AppLogo.js +1 -1
- package/dist/components/avatar/Avatar.js +1 -1
- package/dist/components/bar-chart/BarChart.js +1 -1
- package/dist/components/bottom-navigation/BottomNavigation.d.ts +10 -0
- package/dist/components/bottom-navigation/BottomNavigation.js +1 -1
- package/dist/components/button/Button.js +1 -1
- package/dist/components/calendar/Calendar.js +1 -1
- package/dist/components/carousel/Carousel.d.ts +13 -0
- package/dist/components/carousel/Carousel.js +1 -1
- package/dist/components/checkbox/Checkbox.js +1 -1
- package/dist/components/code-block/CodeBlock.js +1 -1
- package/dist/components/color-picker/ColorPicker.js +1 -1
- package/dist/components/combobox/Combobox.d.ts +18 -0
- package/dist/components/combobox/Combobox.js +1 -1
- package/dist/components/command-palette/CommandPalette.js +1 -1
- package/dist/components/container/Container.d.ts +12 -4
- package/dist/components/container/Container.js +1 -1
- package/dist/components/data-table/DataTable.js +1 -1
- package/dist/components/date-picker/DatePicker.js +1 -1
- package/dist/components/date-range-picker/DateRangePicker.js +1 -1
- package/dist/components/date-time-picker/DateTimePicker.js +1 -1
- package/dist/components/dialog/Dialog.js +1 -1
- package/dist/components/drawer/Drawer.js +1 -1
- package/dist/components/flex/Flex.d.ts +93 -0
- package/dist/components/flex/Flex.js +1 -0
- package/dist/components/flex/index.d.ts +2 -0
- package/dist/components/flex/index.js +1 -0
- package/dist/components/floating-action-button/FloatingActionButton.js +1 -1
- package/dist/components/footer/Footer.d.ts +4 -3
- package/dist/components/footer/Footer.js +1 -1
- package/dist/components/gallery/Gallery.d.ts +150 -0
- package/dist/components/gallery/Gallery.js +1 -0
- package/dist/components/gallery/GalleryViewer.d.ts +30 -0
- package/dist/components/gallery/GalleryViewer.js +1 -0
- package/dist/components/gallery/index.d.ts +2 -0
- package/dist/components/gallery/index.js +1 -0
- package/dist/components/gauge-chart/GaugeChart.js +1 -1
- package/dist/components/grid/Grid.d.ts +11 -1
- package/dist/components/grid/Grid.js +1 -1
- package/dist/components/grid-container/GridContainer.js +1 -1
- package/dist/components/header/Header.d.ts +5 -4
- package/dist/components/header/Header.js +1 -1
- package/dist/components/heatmap-chart/HeatmapChart.js +1 -1
- package/dist/components/hover-card/HoverCard.js +1 -1
- package/dist/components/how-to-steps/HowToSteps.js +1 -1
- package/dist/components/image/Image.d.ts +155 -7
- package/dist/components/image/Image.js +1 -1
- package/dist/components/image/index.d.ts +1 -1
- package/dist/components/menu/Menu.js +1 -1
- package/dist/components/meter/Meter.d.ts +7 -0
- package/dist/components/meter/Meter.js +1 -1
- package/dist/components/navigation-menu/NavigationMenu.js +1 -1
- package/dist/components/number-field/NumberField.js +1 -1
- package/dist/components/otp-field/OtpField.js +1 -1
- package/dist/components/overlay/Overlay.js +1 -1
- package/dist/components/panes/Panes.js +1 -1
- package/dist/components/pie-chart/PieChart.js +1 -1
- package/dist/components/popover/Popover.js +1 -1
- package/dist/components/progress-circular/ProgressCircular.d.ts +10 -1
- package/dist/components/progress-circular/ProgressCircular.js +1 -1
- package/dist/components/progress-linear/ProgressLinear.d.ts +7 -1
- package/dist/components/progress-linear/ProgressLinear.js +1 -1
- package/dist/components/provider/NebaProvider.js +1 -1
- package/dist/components/radio-group/RadioGroup.js +1 -1
- package/dist/components/rating/Rating.js +1 -1
- package/dist/components/scatter-chart/ScatterChart.js +1 -1
- package/dist/components/scroll-area/ScrollArea.js +1 -1
- package/dist/components/scroll-zone/ScrollZone.d.ts +17 -11
- package/dist/components/scroll-zone/ScrollZone.js +1 -1
- package/dist/components/select/Select.d.ts +13 -0
- package/dist/components/select/Select.js +1 -1
- package/dist/components/show/Show.d.ts +60 -0
- package/dist/components/show/Show.js +1 -0
- package/dist/components/show/index.d.ts +2 -0
- package/dist/components/show/index.js +1 -0
- package/dist/components/sidebar/Sidebar.js +1 -1
- package/dist/components/slider/Slider.d.ts +37 -2
- package/dist/components/slider/Slider.js +1 -1
- package/dist/components/spoiler/Spoiler.js +1 -1
- package/dist/components/stack/Stack.d.ts +126 -0
- package/dist/components/stack/Stack.js +1 -0
- package/dist/components/stack/index.d.ts +1 -0
- package/dist/components/stack/index.js +1 -0
- package/dist/components/statistic/Statistic.d.ts +8 -3
- package/dist/components/tabs/Tabs.d.ts +46 -0
- package/dist/components/tabs/Tabs.js +1 -1
- package/dist/components/text-field/TextField.js +1 -1
- package/dist/components/time-picker/TimePicker.js +1 -1
- package/dist/components/timeline-chart/TimelineChart.js +1 -1
- package/dist/components/toast/Toast.js +1 -1
- package/dist/components/toggle/Toggle.js +1 -1
- package/dist/components/tooltip/Tooltip.js +1 -1
- package/dist/components/tour/Tour.js +1 -1
- package/dist/components/transfer/Transfer.js +1 -1
- package/dist/components/tree-select/TreeSelect.d.ts +2 -0
- package/dist/components/tree-select/TreeSelect.js +1 -1
- package/dist/components/tree-view/TreeView.js +1 -1
- package/dist/components/typography/Typography.js +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/useMediaQuery.d.ts +35 -1
- package/dist/hooks/useMediaQuery.js +1 -1
- package/dist/index.d.ts +10 -1
- package/dist/index.js +1 -1
- package/dist/internal/animate.d.ts +65 -2
- package/dist/internal/animate.js +1 -1
- package/dist/internal/cache.d.ts +24 -0
- package/dist/internal/cache.js +1 -0
- package/dist/internal/calendar.d.ts +15 -42
- package/dist/internal/calendar.js +1 -1
- package/dist/internal/chart-frame.d.ts +48 -3
- package/dist/internal/chart-frame.js +1 -1
- package/dist/internal/chart-line.js +1 -1
- package/dist/internal/chart.d.ts +16 -0
- package/dist/internal/chart.js +1 -1
- package/dist/internal/date.js +1 -1
- package/dist/internal/drag.d.ts +8 -6
- package/dist/internal/drag.js +1 -1
- package/dist/internal/format.d.ts +21 -7
- package/dist/internal/format.js +1 -1
- package/dist/internal/grid.d.ts +29 -27
- package/dist/internal/grid.js +1 -1
- package/dist/internal/i18n.d.ts +92 -0
- package/dist/internal/i18n.js +1 -1
- package/dist/internal/icons.d.ts +25 -0
- package/dist/internal/icons.js +1 -1
- package/dist/internal/link.d.ts +5 -4
- package/dist/internal/media.d.ts +9 -2
- package/dist/internal/media.js +1 -1
- package/dist/internal/observe.js +1 -1
- package/dist/internal/page-layout.d.ts +11 -9
- package/dist/internal/page-layout.js +1 -1
- package/dist/internal/picker.d.ts +8 -3
- package/dist/internal/picker.js +1 -1
- package/dist/internal/progress.d.ts +24 -1
- package/dist/internal/progress.js +1 -1
- package/dist/internal/responsive.d.ts +97 -0
- package/dist/internal/responsive.js +1 -0
- package/dist/internal/styles.d.ts +140 -2
- package/dist/internal/styles.js +1 -1
- package/dist/internal/text.d.ts +32 -0
- package/dist/internal/text.js +1 -0
- package/dist/internal/wheel.d.ts +38 -0
- package/dist/internal/wheel.js +1 -0
- package/dist/locales/ar.js +1 -1
- package/dist/locales/de.js +1 -1
- package/dist/locales/es.js +1 -1
- package/dist/locales/fr.js +1 -1
- package/dist/locales/hi.js +1 -1
- package/dist/locales/id.js +1 -1
- package/dist/locales/it.js +1 -1
- package/dist/locales/ja.js +1 -1
- package/dist/locales/ko.js +1 -1
- package/dist/locales/nl.js +1 -1
- package/dist/locales/pl.js +1 -1
- package/dist/locales/pt.js +1 -1
- package/dist/locales/ru.js +1 -1
- package/dist/locales/th.js +1 -1
- package/dist/locales/tr.js +1 -1
- package/dist/locales/vi.js +1 -1
- package/dist/locales/zh-hans.js +1 -1
- package/dist/locales/zh-hant.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +411 -30
- package/dist/types.d.ts +119 -6
- package/package.json +19 -18
- package/dist/components/avatar-group/AvatarGroup.d.ts +0 -47
- package/dist/components/avatar-group/AvatarGroup.js +0 -1
- package/dist/components/avatar-group/index.d.ts +0 -2
- package/dist/components/avatar-group/index.js +0 -1
- package/dist/internal/avatar-group.d.ts +0 -22
- package/dist/internal/avatar-group.js +0 -1
|
@@ -2,6 +2,17 @@ import * as React from 'react';
|
|
|
2
2
|
import type { NebaOrientation, NebaStyleProps, NebaVariant } from '../../types.js';
|
|
3
3
|
/** A tab's value. The same restraint Select puts on its own — an identifier. */
|
|
4
4
|
export type TabValue = string | number;
|
|
5
|
+
/**
|
|
6
|
+
* What a bar with more tabs than room does about it.
|
|
7
|
+
*
|
|
8
|
+
* - `scroll` — stays one line and scrolls along it. The default: a tab bar is a
|
|
9
|
+
* row, and the indicator has one place to be. The ends fade while there is
|
|
10
|
+
* more bar in that direction, which is the only cue there is — the scrollbar
|
|
11
|
+
* is hidden, and on macOS it would have been invisible anyway.
|
|
12
|
+
* - `wrap` — takes as many lines as it needs, and the indicator rides the line
|
|
13
|
+
* its tab is on. For a bar whose tabs all have to be visible at once.
|
|
14
|
+
*/
|
|
15
|
+
export type TabsOverflow = 'scroll' | 'wrap';
|
|
5
16
|
export interface TabsProps extends Omit<NebaStyleProps, 'variant'>, Omit<React.ComponentPropsWithoutRef<'div'>, 'color' | 'defaultValue' | 'onChange'> {
|
|
6
17
|
/**
|
|
7
18
|
* Weight of the tab *bar*, not of the panels under it.
|
|
@@ -41,6 +52,41 @@ export interface TabsProps extends Omit<NebaStyleProps, 'variant'>, Omit<React.C
|
|
|
41
52
|
* @default true
|
|
42
53
|
*/
|
|
43
54
|
loopFocus?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* What the bar does when there are more tabs than there is room for.
|
|
57
|
+
* @default 'scroll'
|
|
58
|
+
*/
|
|
59
|
+
overflow?: TabsOverflow;
|
|
60
|
+
/**
|
|
61
|
+
* The most tab-rows tall the bar may be, which is a cap and not a target — a
|
|
62
|
+
* bar that fits on one line stays on one line.
|
|
63
|
+
*
|
|
64
|
+
* On a horizontal bar those rows are the lines it wraps onto; on a vertical
|
|
65
|
+
* one they are the tabs in a column before it starts another. Past the cap the
|
|
66
|
+
* bar scrolls in the direction it ran out of room in.
|
|
67
|
+
*
|
|
68
|
+
* Only read when `overflow` is `wrap`, since a `scroll` bar is one row by
|
|
69
|
+
* definition. Left out, a wrapping bar takes every line it needs.
|
|
70
|
+
*/
|
|
71
|
+
lines?: number;
|
|
72
|
+
/**
|
|
73
|
+
* Turns a wheel rolled over the bar into travel along it, and holds it there
|
|
74
|
+
* while the pointer is over a bar that has somewhere to go.
|
|
75
|
+
*
|
|
76
|
+
* On by default, which is the opposite of the same prop on `ScrollZone`, and
|
|
77
|
+
* for the one reason that separates them: a ScrollZone draws a pair of
|
|
78
|
+
* buttons and a tab bar draws none. Its scrollbar is hidden too, so a wheel
|
|
79
|
+
* the page answers instead leaves the tabs past the edge reachable only by
|
|
80
|
+
* keyboard.
|
|
81
|
+
*
|
|
82
|
+
* A bar that fits takes nothing, so this costs a page with three tabs on it
|
|
83
|
+
* nothing at all. What it does take it keeps at the ends as well, rather than
|
|
84
|
+
* letting a flick that runs out of bar become a jump down the article; moving
|
|
85
|
+
* the pointer off the bar is what gives the page its wheel back. A trackpad
|
|
86
|
+
* swiping sideways is left to the browser, which scrolls it better.
|
|
87
|
+
* @default true
|
|
88
|
+
*/
|
|
89
|
+
wheel?: boolean;
|
|
44
90
|
/** The tabs share the bar's full width, each taking an equal share of it. */
|
|
45
91
|
fullWidth?: boolean;
|
|
46
92
|
children?: React.ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{Tabs as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{Tabs as o}from"@base-ui/react/tabs";import{controlHeightClasses as l,controlHeightValues as n,controlTextClasses as i,cx as r,gapClasses as s,hasContent as c,iconClasses as d,paddingXClasses as f,radiusClasses as u,surfaceClasses as b,surfaceSlots as h,transitionClasses as v}from"../../internal/styles.js";import{observeResize as p}from"../../internal/observe.js";import{bindAxisWheel as x}from"../../internal/wheel.js";const m=/*@__PURE__*/a.createContext({variant:"outline",size:"md",density:"default",orientation:"horizontal",fullWidth:!1}),w={solid:{horizontal:`${b} inline-flex bg-(--n-panel) p-1 [box-shadow:var(--neba-plate-glass)]`,vertical:`${b} inline-flex flex-col bg-(--n-panel) p-1 [box-shadow:var(--neba-plate-glass)]`},outline:{horizontal:"flex border-b [border-color:var(--n-line)]",vertical:"flex flex-col border-e [border-color:var(--n-line)]"},text:{horizontal:"flex",vertical:"flex flex-col"}},g={solid:{horizontal:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width)",vertical:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width)"},outline:{horizontal:"absolute bottom-0 left-(--active-tab-left) h-0.5 w-(--active-tab-width)",vertical:"absolute end-0 top-(--active-tab-top) h-(--active-tab-height) w-0.5"},text:{horizontal:"absolute bottom-0 left-(--active-tab-left) h-0.5 w-(--active-tab-width)",vertical:"absolute end-0 top-(--active-tab-top) h-(--active-tab-height) w-0.5"}},y={horizontal:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width) border-b-2 [border-color:var(--n-accent)] !bg-transparent",vertical:"absolute left-(--active-tab-left) top-(--active-tab-top) h-(--active-tab-height) w-(--active-tab-width) border-e-2 [border-color:var(--n-accent)] !bg-transparent"},z={solid:`${b} bg-(--n-panel-press) [box-shadow:var(--neba-shadow-1),var(--neba-plate-glass)]`,outline:"bg-(--n-accent)",text:"bg-(--n-accent)"},N={solid:"text-(--neba-muted-fg) hover:text-(--neba-fg) data-[active]:text-(--n-accent)",outline:"text-(--neba-muted-fg) hover:text-(--neba-fg) data-[active]:text-(--n-accent)",text:"text-(--neba-muted-fg) hover:text-(--neba-fg) data-[active]:text-(--n-accent)"};export const Tab=/*@__PURE__*/a.forwardRef(function({value:n,startIcon:b,endIcon:h,disabled:p=!1,className:x,children:w,...g},y){const{variant:z,size:$,density:j,fullWidth:k}=a.useContext(m);return t(o.Tab,{ref:y,value:n,disabled:p,className:r("relative z-10 inline-flex shrink-0 cursor-pointer items-center justify-center select-none","whitespace-nowrap font-medium","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",l[$],i[$],s[$],f[j][$],"solid"===z?u[$]:"",v,d,N[z],"focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:[outline-offset:-2px]","data-[disabled]:cursor-not-allowed data-[disabled]:text-(--neba-disabled-fg)",k?"flex-1":"",x??""),...g,children:[c(b)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:b}):null,w,c(h)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:h}):null]})});export const TabPanel=/*@__PURE__*/a.forwardRef(function({value:t,keepMounted:l=!1,className:n,children:i,...r},s){const{size:c}=a.useContext(m);return e(o.Panel,{ref:s,value:t,keepMounted:l,className:["min-w-0 flex-1 text-(--neba-fg)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2","data-[starting-style]:opacity-0","[transition:opacity_var(--neba-duration)_var(--neba-ease)]",u[c],n??""].filter(Boolean).join(" "),...r,children:i})});export const Tabs=/*@__PURE__*/a.forwardRef(function({variant:l="outline",size:i="md",color:s="primary",density:c="default",value:d,defaultValue:f,onValueChange:b,orientation:v="horizontal",activateOnFocus:N=!1,loopFocus:$=!0,overflow:j="scroll",lines:k,wheel:T=!0,fullWidth:C=!1,className:E,style:M,children:R,...W},_){const V="horizontal"===v,A="wrap"===j,F=a.useRef(null),L=a.useRef(null),P=a.useMemo(()=>({variant:l,size:i,density:c,orientation:v,fullWidth:C}),[l,i,c,v,C]),H=[],I=[];a.Children.forEach(R,e=>{a.isValidElement(e)&&e.type===TabPanel?I.push(e):null!=e&&!1!==e&&H.push(e)});const O=H.length;return a.useEffect(()=>{const e=L.current,t=F.current;if(!e||!t)return;const a=()=>{const a=Math.abs(V?e.scrollLeft:e.scrollTop),o=V?e.clientWidth:e.clientHeight,l=V?e.scrollWidth:e.scrollHeight,n=V?"x":"y",i=V?"y":"x";t.toggleAttribute(`data-overflow-${n}-start`,a>1),t.toggleAttribute(`data-overflow-${n}-end`,l-o-a>1),t.removeAttribute(`data-overflow-${i}-start`),t.removeAttribute(`data-overflow-${i}-end`)};a(),e.addEventListener("scroll",a,{passive:!0});const o=p(e,a);return()=>{e.removeEventListener("scroll",a),o()}},[V,O]),a.useEffect(()=>{const e=L.current;if(e&&T)return x(e)},[T]),e(m.Provider,{value:P,children:t(o.Root,{ref:e=>{F.current=e,"function"==typeof _?_(e):_&&(_.current=e)},value:d,defaultValue:f,onValueChange:e=>b?.(e),orientation:v,className:r("flex min-w-0","vertical"===v?"flex-row gap-4":"flex-col gap-4",E??""),style:{...h(s,0),...M},...W,children:[t(o.List,{ref:L,activateOnFocus:N,loopFocus:$,className:r("relative shrink-0",w[l][v],"solid"===l?u[i]:"",C&&"horizontal"===v?"w-full":"",A?"flex-wrap":V?"overflow-x-auto":"",A&&void 0!==k?V?"overflow-y-auto":"overflow-x-auto":"",!A&&V?"overflow-y-hidden":"","overscroll-contain","[scrollbar-width:none] [&::-webkit-scrollbar]:hidden","neba-scroll-fade"),style:{"--n-fade":"2rem",maxHeight:A&&void 0!==k?`calc(${n[i]} * ${Math.max(1,Math.round(k))}${"solid"===l?" + 0.5rem":""})`:void 0},children:[H,e(o.Indicator,{className:["pointer-events-none",A&&"solid"!==l?y[v]:g[l][v],z[l],"solid"===l?u[i]:"rounded-full","[transition-property:left,top,width,height]","[transition-duration:var(--neba-duration)]","[transition-timing-function:var(--neba-ease)]"].join(" ")})]}),I]})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{Field as r}from"@base-ui/react/field";import{Input as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{Field as r}from"@base-ui/react/field";import{Input as l}from"@base-ui/react/input";import{SpinnerIcon as s}from"../../internal/icons.js";import{controlTextLeadingClasses as a,cx as i,disabledClasses as o,fieldFocusTransitionClasses as c,fieldHeightClasses as m,fieldReadOnlyClasses as d,fieldRestClasses as u,fieldRingClasses as p,gapClasses as f,iconClasses as x,metaTextClasses as h,paddingXClasses as b,radiusClasses as g,stackGapClasses as y,surfaceSlots as $,transitionClasses as w}from"../../internal/styles.js";import{keyHandler as N}from"../../internal/keys.js";import{useStyleDefaults as v}from"../../internal/defaults.js";const j={xs:`${f.xs} ${g.xs} ${a.xs}`,sm:`${f.sm} ${g.sm} ${a.sm}`,md:`${f.md} ${g.md} ${a.md}`,lg:`${f.lg} ${g.lg} ${a.lg}`,xl:`${f.xl} ${g.xl} ${a.xl}`},z={xs:"min-h-5.5 py-[3px]",sm:"min-h-6.5 py-[4px]",md:"min-h-8 py-[5px]",lg:"min-h-10 py-[8px]",xl:"min-h-12 py-[10px]"},k={none:"resize-none",vertical:"resize-y",horizontal:"resize-x",both:"resize"},D=["group relative flex w-full cursor-text","[-webkit-tap-highlight-color:transparent]",w,c,p,x].join(" "),R=u,I=d;export const TextField=/*@__PURE__*/n.forwardRef(function(a,c){const{variant:d="outline",size:u="md",color:p="primary",density:f="default",elevation:x=0,multiline:g=!1,rows:w=3,resize:K="vertical",label:O,description:T,error:C,invalid:E,startIcon:F,endIcon:L,loading:P=!1,fullWidth:W=!1,classNames:q,shortcuts:A,onKeyDown:B,readOnly:G=!1,disabled:H=!1,type:J="text",className:M,style:Q,...S}=v(a,["size","density","variant"]),U=null!=C&&!1!==C&&""!==C,V=E??U,X=V?"danger":p,Y=n.useRef(null),Z=n.useCallback(e=>{Y.current=e,"function"==typeof c?c(e):c&&(c.current=e)},[c]),_=i(D,j[u],g?`${z[u]} items-start`:`${m[u]} items-center`,b[f][u],H?o[d]:G?I[d]:R[d],q?.shell),ee=i("min-w-0 flex-1 bg-transparent [font:inherit] text-inherit","[outline:none]","placeholder:text-(--neba-muted-fg)","caret-(--n-accent) selection:bg-(--n-soft-press)","disabled:cursor-not-allowed",g?`block ${k[K]}`:"self-stretch",q?.control),te="inline-flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg) transition-[color] duration-(--neba-duration) group-focus-within:text-(--n-accent)";return t(r.Root,{disabled:H,invalid:V,className:i("flex-col align-top",y[u],W?"flex w-full":"inline-flex",M??""),style:{...$(X,x),...Q},children:[O?e(r.Label,{className:i(h[u],"font-medium",H?"text-(--neba-disabled-fg)":"text-(--neba-fg)",q?.label),children:O}):null,t("span",{className:_,onPointerDown:e=>{e.target!==e.currentTarget||H||(e.preventDefault(),Y.current?.focus())},children:[F?e("span",{className:te,children:F}):null,e(l,{ref:Z,className:ee,disabled:H,readOnly:G,"aria-busy":P||void 0,"data-loading":P||void 0,...g?{render:e("textarea",{rows:w})}:{type:J},...S,onKeyDown:N(A,B)}),P?e("span",{className:te,children:e(s,{})}):L?e("span",{className:te,children:L}):null]}),T?e(r.Description,{className:i(h[u],"text-(--neba-muted-fg)",q?.description),children:T}):null,e(r.Error,U?{match:!0,className:i(h[u],"text-(--n-accent)",q?.error),children:C}:{className:i(h[u],"text-(--n-accent)",q?.error)})]})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as o from"react";import{Button as
|
|
1
|
+
"use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as o from"react";import{Button as l}from"../button/Button.js";import{TimeGrid as t,usePickerLabels as a}from"../../internal/calendar.js";import{ClockIcon as i}from"../../internal/icons.js";import{PickerFooter as r,PickerShell as s}from"../../internal/picker.js";import{displaySamples as c,formatDate as d,isHour12 as u,isValidDate as m,secondsOfDay as p,timeUnitSpan as h,toISOTime as f,withPlaceholder as y,withTime as S}from"../../internal/date.js";import{cx as b}from"../../internal/styles.js";import{useStyleDefaults as g}from"../../internal/defaults.js";export const TimePicker=/*@__PURE__*/o.forwardRef(function(v,j){const{value:x,defaultValue:C,onValueChange:w,open:z,defaultOpen:k,onOpenChange:D,referenceDate:O,minTime:T,maxTime:M,shouldDisableTime:V,hour12:B,showSeconds:I=!1,hourStep:N=1,minuteStep:R=1,secondStep:F=1,locale:H,format:L,placeholder:P,clearable:q=!1,showNowButton:A=!0,closeOnSelect:E=!1,labels:G,name:J,size:K="md",color:Q="primary",density:U="default",readOnly:W=!1,disabled:X=!1,startIcon:Y,...Z}=g(v,["size","density","locale"]),$=a(G,H),_=B??u(H),[ee,ne]=o.useState(C??null),oe=void 0!==x?x:ee,[le,te]=o.useState(k??!1),ae=z??le,[ie]=o.useState(()=>O??new Date),re=e=>{e&&(W||X)||(void 0===z&&te(e),D?.(e))},se=e=>{void 0===x&&ne(e),w?.(e)},ce=o.useCallback((e,n)=>{const[o,l]=h(n,e);return!!(m(T)&&l<p(T))||(!!(m(M)&&o>p(M))||(V?.(e,n)??!1))},[T,M,V]),de=o.useMemo(()=>L??{hour:"numeric",minute:"2-digit",...I?{second:"2-digit"}:{}},[L,I]),ue=new Date,me=S(O??ie,{hours:ue.getHours(),minutes:ue.getMinutes(),seconds:I?ue.getSeconds():0}),pe=A||q||!E,he=o.useMemo(()=>y(c(H,de),P),[H,de,P]);return e(s,{...Z,size:K,color:Q,density:U,readOnly:W,disabled:X,triggerRef:j,startIcon:Y??e(i,{}),display:m(oe)?d(oe,H,de):P??"",samples:he,empty:!m(oe),clearable:q,onClear:()=>se(null),open:ae,onOpenChange:re,clearLabel:$.clear,hiddenValues:J?[{name:J,value:m(oe)?f(oe,I):""}]:void 0,children:n("div",{className:b("flex flex-col",pe&&"gap-1.5"),children:[e(t,{size:K,density:U,locale:H,value:m(oe)?oe:null,referenceDate:O??ie,onChange:e=>{se(e),E&&re(!1)},hour12:_,showSeconds:I,hourStep:N,minuteStep:R,secondStep:F,shouldDisableTime:ce,labels:$,autoFocus:!0}),pe?n(r,{size:K,children:[q?e(l,{variant:"text",size:K,color:Q,density:"compact",onClick:()=>{se(null),re(!1)},children:$.clear}):null,A?e(l,{variant:"text",size:K,color:Q,density:"compact",disabled:ce(me,"second"),onClick:()=>{se(me),re(!1)},children:$.now}):null,E?null:e(l,{variant:"solid",size:K,color:Q,density:"compact",onClick:()=>re(!1),children:$.done})]}):null]})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as t from"react";import{CartesianChart as o}from"../../internal/chart-frame.js";import{barBandRatio as
|
|
1
|
+
"use client";import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as t from"react";import{CartesianChart as o,markTransitionClasses as r}from"../../internal/chart-frame.js";import{barBandRatio as s,barMaxThickness as a,barRadius as l,formatTimeTicks as i,formatTimeValue as c,markGap as m,resolveColor as d,seriesColor as u,timeScale as h,toNumber as f}from"../../internal/chart.js";import{srOnlyClasses as x}from"../../internal/styles.js";import{useStyleDefaults as p}from"../../internal/defaults.js";export function TimelineChart(n){const{series:r,min:l,max:d,barSize:x,rounded:k=!0,size:g="md",density:v="default",xAxis:j,yAxis:$,locale:C,...z}=p(n,["size","density","locale"]),w=t.useMemo(()=>r.map(M),[r]),A=t.useMemo(()=>w.map(e=>e.spans),[w]),E=t.useMemo(()=>{let e=1/0,n=-1/0,t=!1;for(const o of A)for(const r of o)r&&(t=!0,e=Math.min(e,r.from),n=Math.max(n,r.to));return t?{min:e,max:n}:null},[A]),P=t.useMemo(()=>h(E,{min:f(l)??void 0,max:f(d)??void 0,tickCount:$?.tickCount}),[E,l,d,$?.tickCount]),B=t.useMemo(()=>i(P.ticks,P.unit,C),[P,C]),I=t.useMemo(()=>r.map((e,n)=>u(e,n)),[r]),N=t.useMemo(()=>[{data:A.map(e=>e.some(Boolean)?1:null)}],[A]),T=t.useMemo(()=>r.map((e,n)=>e.name??`${n+1}`),[r]),F=x??a[g],R=t.useCallback(e=>{const n=[];return w.forEach((t,o)=>{const r=Math.min(F,Math.max(1,(e.band.band-m*(t.lanes-1))/t.lanes)),s=r*t.lanes+m*(t.lanes-1),a=e.plot.top+e.categoryPx(o)-s/2+r/2;t.spans.forEach((t,s)=>{if(!t)return;const l=e.valuePx(t.from),i=e.valuePx(t.to);n.push({series:o,index:s,x:(l+i)/2,y:a+t.lane*(r+m),r:r/2,rx:Math.max(0,(i-l)/2),ry:r/2})})}),n},[w,F]),S=t.useCallback(e=>{const n=A[e.series]?.[e.index];if(!n)return null;const t=[{seriesIndex:e.series,name:T[e.series],color:n.color??I[e.series],value:n.to-n.from,formatted:`${c(n.from,P.unit,C)} – ${c(n.to,P.unit,C)}`}];return{heading:n.span.label??T[e.series],items:t}},[A,T,I,P.unit,C]);return e(o,{...z,series:N,categories:T,size:g,density:v,locale:C,horizontal:!0,scale:P,xAxis:j,yAxis:{tickFormat:(e,n)=>B[n]??"",...$},legend:!1,bandRatio:s[v],marks:R,markTooltip:S,table:n=>e(y,{id:n,names:T,series:r,spans:A,unit:P.unit,label:z.label,corner:j?.label,locale:C}),children:n=>e(b,{context:n,spans:A,colors:I,rounded:k})})}function M(e){const n=e.data.map(e=>{const n=f(e.start),t=f(e.end);return null===n||null===t?null:{from:Math.min(n,t),to:Math.max(n,t),lane:0,color:e.color?d(e.color):void 0,span:e}}),t=[];return n.map((e,n)=>({one:e,index:n})).filter(e=>Boolean(e.one)).sort((e,n)=>e.one.from-n.one.from).forEach(({one:e})=>{const n=t.findIndex(n=>n<=e.from),o=-1===n?t.length:n;t[o]=e.to,e.lane=o}),{spans:n,lanes:Math.max(1,t.length)}}function b({context:n,spans:t,colors:o,rounded:s}){const{marks:a,activeMark:i,plot:c}=n,m=s?l:0;return e("g",{children:a.map(n=>{const s=t[n.series]?.[n.index];if(!s)return null;const a=i?.series===n.series&&i?.index===n.index,l=n.rx??n.r,d=2*(n.ry??n.r),u=Math.max(c.left,n.x-l),h=Math.min(c.left+c.width,n.x+l);if(h<c.left||u>c.left+c.width)return null;const f=Math.max(1,h-u);return e("rect",{x:u,y:n.y-d/2,width:f,height:d,rx:Math.min(m,f/2,d/2),fill:s.color??o[n.series],opacity:a?1:.92,className:r},`${n.series}-${n.index}`)})})}const y=/*@__PURE__*/t.memo(function({id:t,names:o,series:r,spans:s,unit:a,label:l,corner:i,locale:m}){const d=r.some(e=>e.data.some(e=>void 0!==e.label));return n("table",{id:t,className:x,children:[l?e("caption",{children:l}):null,e("thead",{children:n("tr",{children:[e("th",{scope:"col",children:i??""}),d?e("th",{scope:"col",children:"label"}):null,e("th",{scope:"col",children:"start"}),e("th",{scope:"col",children:"end"})]})}),e("tbody",{children:s.flatMap((t,s)=>t.map((t,l)=>n("tr",{children:[e("th",{scope:"row",children:o[s]}),d?e("td",{children:r[s].data[l]?.label??""}):null,e("td",{children:t?c(t.from,a,m):""}),e("td",{children:t?c(t.to,a,m):""})]},`${s}-${l}`)))})]})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{Toast as s}from"@base-ui/react/toast";import{boxPaddingClasses as i}from"../box/Box.js";import{actionMessages as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{Toast as s}from"@base-ui/react/toast";import{boxPaddingClasses as i}from"../box/Box.js";import{actionMessages as n,useMessages as a}from"../../internal/i18n.js";import{CloseIcon as r,severityIcon as l}from"../../internal/icons.js";import{controlSlots as c,cx as d,focusRingClasses as m,hasContent as p,iconClasses as u,metaTextClasses as f,popupFadeClasses as b,radiusClasses as x,sheetBodyClasses as v,sheetHeaderGapClasses as h,sheetSectionGapClasses as w,sheetTitleClasses as g,surfaceClasses as y}from"../../internal/styles.js";import{useStyleDefaults as N}from"../../internal/defaults.js";const j={"top-start":"top-0 items-start","top-center":"top-0 items-center","top-end":"top-0 items-end","bottom-start":"bottom-0 items-start flex-col-reverse","bottom-center":"bottom-0 items-center flex-col-reverse","bottom-end":"bottom-0 items-end flex-col-reverse"},z={solid:[y,"text-(--n-on-solid) bg-(--n-fill)","[box-shadow:var(--neba-shadow-3),var(--neba-plate-solid)]"].join(" "),outline:[y,"border text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]"].join(" "),text:[y,"text-(--neba-fg) bg-(--n-panel-press)","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]"].join(" ")},T={solid:"",outline:"text-(--n-accent)",text:"text-(--n-accent)"};function _(e){const{color:t,variant:o,icon:s,actionLabel:i,onAction:n,...a}=e;return{...a,data:{color:t,variant:o,icon:s},actionProps:void 0===i?void 0:{children:i,onClick:n}}}export function useToast(){const e=s.useToastManager();return o.useMemo(()=>({add:t=>e.add(_(t)),close:t=>e.close(t),update:(t,o)=>e.update(t,_(o)),promise:(t,o)=>e.promise(t,{loading:_(o.loading),success:e=>_("function"==typeof o.success?o.success(e):o.success),error:e=>_("function"==typeof o.error?o.error(e):o.error)}),toasts:e.toasts}),[e])}function k({toast:o,variant:n,color:a,size:y,density:N,closeLabel:j,swipeDirection:_,classNames:k}){const D=o.data?.variant??n??"outline",L=o.data?.color??a,M=void 0===o.data?.icon?l(L):o.data.icon,P=T[D],$=p(o.title);return t(s.Root,{toast:o,swipeDirection:_,className:d("pointer-events-auto flex w-full items-start",i[N??"default"][y],x[y],w[y],v[y],z[D],u,b,"data-[limited]:hidden",m,k?.toast),style:c(L,3,D),children:[p(M)?e("span",{className:`flex h-[1lh] shrink-0 items-center ${P}`,children:M}):null,t("div",{className:`flex min-w-0 flex-1 flex-col ${h[y]}`,children:[e(s.Title,{className:d("neba-title font-semibold",g[y],P,k?.title)}),e(s.Description,{className:d($&&"solid"!==D?"text-(--neba-muted-fg)":"",k?.description)})]}),e(s.Action,{className:d("flex h-[1lh] shrink-0 cursor-pointer items-center rounded-full px-2","font-medium underline-offset-2",P||"text-(--n-on-solid)","hover:underline","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",f[y],k?.action)}),e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(s.Close,{"aria-label":j,className:d("inline-flex size-[1.15em] cursor-pointer items-center justify-center rounded-full","opacity-70 [transition:opacity_var(--neba-duration)_var(--neba-ease)]","hover:opacity-100 focus-visible:opacity-100","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",k?.close),children:e(r,{})})})]})}function D(t){const{toasts:i}=s.useToastManager(),{position:n,width:a,classNames:r,...l}=t,c=o.useMemo(()=>[n.startsWith("top")?"up":"down","left","right"],[n]);return e(s.Portal,{children:e(s.Viewport,{className:d("neba-portal pointer-events-none fixed inset-x-0 z-(--neba-z-portal) flex flex-col gap-2 p-4",j[n],r?.viewport),children:i.map(t=>e("div",{className:"w-full",style:{maxWidth:"number"==typeof a?`${a}px`:a},children:e(k,{toast:t,swipeDirection:c,classNames:r,...l})},t.id))})})}export function ToastProvider(o){const{variant:i="outline",size:r="md",color:l="primary",density:c="default",position:d="bottom-end",timeout:m=5e3,limit:p=3,width:u=380,locale:f,closeLabel:b,classNames:x,children:v}=N(o,["size","density","variant","locale"]),h=a(n,f);return t(s.Provider,{timeout:m,limit:p,children:[v,e(D,{position:d,variant:i,size:r,color:l,density:c,width:u,closeLabel:b??h.close,classNames:x})]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsxs as e}from"react/jsx-runtime";import*as t from"react";import{Toggle as n}from"@base-ui/react/toggle";import{ButtonGroupContext as o}from"../../internal/button-group.js";import{controlHeightClasses as
|
|
1
|
+
"use client";import{jsxs as e}from"react/jsx-runtime";import*as t from"react";import{Toggle as n}from"@base-ui/react/toggle";import{ButtonGroupContext as o}from"../../internal/button-group.js";import{controlHeightClasses as s,controlSlots as r,controlSquareClasses as a,controlTextClasses as l,cx as i,disabledClasses as d,focusRingClasses as b,gapClasses as v,iconClasses as g,paddingXClasses as p,pressTransitionClasses as x,radiusClasses as m,surfaceClasses as f,transitionClasses as c}from"../../internal/styles.js";import{useStyleDefaults as h}from"../../internal/defaults.js";const u={xs:`${s.xs} ${v.xs} ${m.xs} ${l.xs}`,sm:`${s.sm} ${v.sm} ${m.sm} ${l.sm}`,md:`${s.md} ${v.md} ${m.md} ${l.md}`,lg:`${s.lg} ${v.lg} ${m.lg} ${l.lg}`,xl:`${s.xl} ${v.xl} ${m.xl} ${l.xl}`},$={xs:`${a.xs} px-0`,sm:`${a.sm} px-0`,md:`${a.md} px-0`,lg:`${a.lg} px-0`,xl:`${a.xl} px-0`},j=["relative inline-flex shrink-0 cursor-pointer select-none items-center justify-center","whitespace-nowrap align-middle font-medium leading-none","[-webkit-tap-highlight-color:transparent] [touch-action:manipulation]",c,x,b,g].join(" "),y={solid:[f,"text-(--neba-muted-fg) bg-(--neba-panel-hover)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]","hover:bg-(--neba-panel-press) hover:text-(--neba-fg)","active:bg-(--neba-panel-press)"].join(" "),outline:[f,"border text-(--neba-muted-fg) bg-(--neba-panel)","[border-color:var(--neba-border)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]","hover:bg-(--neba-panel-hover) hover:text-(--neba-fg)","active:bg-(--neba-panel-press)"].join(" "),text:["text-(--neba-muted-fg) bg-transparent","hover:bg-(--n-soft) hover:text-(--neba-fg)","active:bg-(--n-soft-hover)"].join(" ")},w={solid:[f,"text-(--n-on-solid) bg-(--n-fill)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]","hover:bg-(--n-fill-hover)","active:bg-(--n-fill-active)"].join(" "),outline:[f,"border text-(--n-accent) bg-(--n-panel-press)","[border-color:var(--n-line-hover)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]","hover:bg-(--n-soft-hover)","active:bg-(--n-soft-press)"].join(" "),text:["text-(--n-accent) bg-(--n-soft-hover)","hover:bg-(--n-soft-press)","active:bg-(--n-soft-press)"].join(" ")};export const Toggle=/*@__PURE__*/t.forwardRef(function(s,a){const{variant:l,size:b,color:v,density:g,elevation:x,pressed:m,defaultPressed:f,onPressedChange:c,value:P,startIcon:z,endIcon:C,fullWidth:T=!1,disabled:k,className:E,style:I,children:M,onPointerMove:N,...R}=h(s,["size","density","variant"]),W=t.useContext(o),X=l??W?.variant??"outline",Y=b??W?.size??"md",q=v??W?.color??"primary",A=g??W?.density??"default",B=x??W?.elevation??0,D=k??W?.disabled??!1,F=null==M||!1===M;return e(n,{ref:a,value:P,pressed:m,defaultPressed:f,onPressedChange:e=>c?.(e),disabled:D,className:e=>i(j,u[Y],F?$[Y]:p[A][Y],D?d[X]:e.pressed?w[X]:y[X],D?"":"neba-glow",T?"w-full":"",E??""),style:{...r(q,B,X),...I},onPointerMove:e=>{if(!D){const t=e.currentTarget;t.style.setProperty("--n-mx",`${e.nativeEvent.offsetX}px`),t.style.setProperty("--n-my",`${e.nativeEvent.offsetY}px`)}N?.(e)},...R,children:[z,M,C]})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{Tooltip as a}from"@base-ui/react/tooltip";import{controlSlots as i,cx as s,metaTextClasses as l,paddingXClasses as n,popupFadeClasses as r,radiusClasses as d,surfaceClasses as p}from"../../internal/styles.js";import{useStyleDefaults as c}from"../../internal/defaults.js";export const TooltipProvider=a.Provider;const m=[p,"max-w-64 text-(--n-on-solid) bg-(--n-fill)","[box-shadow:var(--neba-shadow-3),var(--neba-plate-solid)]","[outline:none]",r,"data-[instant]:[transition-duration:0ms]"].join(" "),f={xs:"py-0.5",sm:"py-0.5",md:"py-1",lg:"py-1.5",xl:"py-2"},h={xs:6,sm:7,md:8,lg:9,xl:10};export function Tooltip(r){const{content:p,children:u,size:x="sm",color:y="secondary",density:b="default",side:g="top",align:v="center",sideOffset:j=6,delay:w,closeDelay:O,arrow:z=!0,open:N,defaultOpen:P,onOpenChange:T,disabled:C=!1,className:D,style:k,...A}=c(r,["size","density"]),B=h[x],I=o.useId(),[L,M]=o.useState(P??!1),R=N??L;return t(a.Root,{open:N,defaultOpen:P,onOpenChange:e=>{void 0===N&&M(e),T?.(e)},children:[e(a.Trigger,{render:u,delay:w,closeDelay:O,disabled:C,"aria-describedby":R?I:void 0}),e(a.Portal,{children:e(a.Positioner,{className:"neba-portal z-(--neba-z-portal) [outline:none]",side:g,align:v,sideOffset:j,children:t(a.Popup,{id:I,role:"tooltip",className:s(m,d[x],n[b][x],f[x],l[x],D??""),style:{...i(y,3,"solid"),...k},...A,children:[z?e(a.Arrow,{className:["data-[side=top]:bottom-[-1px]","data-[side=bottom]:top-[-1px] data-[side=bottom]:rotate-180","data-[side=left]:right-[-1px] data-[side=left]:-rotate-90","data-[side=right]:left-[-1px] data-[side=right]:rotate-90"].join(" "),children:e("svg",{width:B,height:B/2,viewBox:"0 0 10 5","aria-hidden":"true",className:"block",children:e("path",{d:"M0 0h10L5 5z",fill:"var(--n-fill)"})})}):null,p]})})})]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{Popover as s}from"@base-ui/react/popover";import{Button as
|
|
1
|
+
"use client";import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as n from"react";import{Popover as s}from"@base-ui/react/popover";import{Button as o}from"../button/Button.js";import{boxPaddingXClasses as i,boxPaddingYClasses as r}from"../box/Box.js";import{actionMessages as l,fill as a,stepsMessages as c,useMessages as d}from"../../internal/i18n.js";import{CloseIcon as m}from"../../internal/icons.js";import{observeResize as u}from"../../internal/observe.js";import{cx as p,hasContent as f,metaTextClasses as h,popupFadeClasses as g,radiusClasses as b,sheetBodyClasses as v,sheetHeaderGapClasses as x,sheetSectionGapClasses as w,sheetTitleClasses as N,surfaceClasses as k,surfaceSlots as z}from"../../internal/styles.js";import{useStyleDefaults as j}from"../../internal/defaults.js";const y=[k,"relative flex flex-col","border text-(--neba-fg) bg-(--n-panel-press)","[border-color:var(--n-line)]","[box-shadow:var(--neba-shadow-3),var(--neba-plate-glass)]","[outline:none]",g].join(" "),_={xs:"max-w-56",sm:"max-w-64",md:"max-w-80",lg:"max-w-96",xl:"max-w-lg"},L={xs:"xs",sm:"xs",md:"sm",lg:"sm",xl:"md"};function S({spot:t,radius:n,className:s}){return e("div",null===t?{"aria-hidden":"true",className:p("pointer-events-none fixed inset-0 z-40 bg-(--neba-scrim)",s)}:{"aria-hidden":"true",className:p("pointer-events-none fixed z-40 [box-shadow:0_0_0_9999px_var(--neba-scrim)]",s),style:{top:t.top,left:t.left,width:t.width,height:t.height,borderRadius:n}})}export function Tour(g){const{steps:k,open:C,defaultOpen:E=!1,onOpenChange:P,step:O,defaultStep:q=0,onStepChange:B,onFinish:F,mask:M=!0,skippable:R=!0,dismissible:T=!0,scrollIntoView:A=!0,locale:I,previousLabel:V,nextLabel:$,doneLabel:D,skipLabel:H,size:G="md",color:J="primary",density:K="default",className:Q,classNames:U}=j(g,["size","density","locale"]),W=d(c,I),X=d(l,I),[Y,Z]=n.useState(E),[ee,te]=n.useState(q),ne=C??Y,se=Math.min(O??ee,Math.max(0,k.length-1)),oe=k[se],[ie,re]=n.useState(null),le=e=>{void 0===C&&Z(e),P?.(e)},ae=e=>{void 0===O&&te(e),B?.(e)};if(n.useEffect(()=>{const e=oe?.target;if(!ne||!e)return;const t=document.querySelector(e);if(!(t instanceof HTMLElement))return;A&&t.scrollIntoView({block:"center",inline:"nearest",behavior:"smooth"});const n=oe?.padding??6;let s=0;const o=()=>{s=0;const o=t.getBoundingClientRect();re({selector:e,spot:{top:o.top-n,left:o.left-n,width:o.width+2*n,height:o.height+2*n}})},i=()=>{0===s&&(s=requestAnimationFrame(o))};o();const r=u(t,i);return window.addEventListener("scroll",i,{passive:!0,capture:!0}),window.addEventListener("resize",i,{passive:!0}),()=>{0!==s&&cancelAnimationFrame(s),r(),window.removeEventListener("scroll",i,!0),window.removeEventListener("resize",i)}},[ne,oe?.target,oe?.padding,A]),0===k.length)return null;const ce=ne&&oe?.target&&ie?.selector===oe.target?ie.spot:null,de=0===se,me=se===k.length-1,ue=i[K][G],pe=r[K][G],fe=L[G],he=f(oe?.title)||f(oe?.content);return t(s.Root,{open:ne,onOpenChange:(e,t)=>{(e||T||"escape-key"!==t.reason)&&(e||"outside-press"!==t.reason&&"focus-out"!==t.reason)?le(e):t.cancel()},children:[ne&&M?e(S,{spot:ce,radius:ce?8:0,className:U?.mask}):null,e(s.Portal,{children:e(s.Positioner,{className:"neba-portal z-(--neba-z-portal) [outline:none]",side:oe?.side??"bottom",align:oe?.align??"center",sideOffset:10,collisionPadding:12,anchor:()=>{if(!oe?.target)return null;const e=document.querySelector(oe.target);return e instanceof Element?e:null},children:t(s.Popup,{className:p(y,b[G],v[G],w[G],_[G],ue,pe,Q),style:z(J,3),children:[he?t("div",{className:"flex items-start gap-3",children:[t("div",{className:`flex min-w-0 flex-1 flex-col ${x[G]}`,children:[f(oe?.title)?e(s.Title,{className:p("m-0 font-semibold",N[G],U?.title),children:oe?.title}):null,f(oe?.content)?e(s.Description,{className:p("m-0 min-w-0",U?.description),children:oe?.content}):null]}),T?e("button",{type:"button","aria-label":X.close,onClick:()=>le(!1),className:p("flex size-[1.6em] shrink-0 cursor-pointer items-center justify-center","rounded-full text-(--neba-muted-fg)","[&_svg]:size-[1.1em] [&_svg]:shrink-0","[transition:background-color_var(--neba-duration)_var(--neba-ease),color_var(--neba-duration)_var(--neba-ease)]","hover:bg-(--n-soft) hover:text-(--neba-fg)","focus-visible:[outline:2px_solid_var(--n-ring)] focus-visible:outline-offset-2",U?.close),children:e(m,{})}):null]}):null,t("div",{className:p("flex items-center gap-2",U?.footer),children:[e("span",{className:`shrink-0 tabular-nums text-(--neba-muted-fg) ${h[G]}`,children:a(W.position,{index:String(se+1),total:String(k.length)})}),t("div",{className:"ms-auto flex items-center gap-2",children:[R&&!me?e(o,{size:fe,variant:"text",color:"secondary",onClick:()=>le(!1),children:H??W.skip}):null,de?null:e(o,{size:fe,variant:"outline",color:J,onClick:()=>ae(se-1),children:V??W.previous}),e(o,{size:fe,color:J,onClick:()=>me?(F?.(),void le(!1)):ae(se+1),children:me?D??W.done:$??W.next})]})]})]})})})]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as
|
|
1
|
+
"use client";import{jsx as e,jsxs as a}from"react/jsx-runtime";import*as l from"react";import{Checkbox as t}from"../checkbox/Checkbox.js";import{IconButton as s}from"../icon-button/IconButton.js";import{ScrollArea as r}from"../scroll-area/ScrollArea.js";import{TextField as i}from"../text-field/TextField.js";import{transferMessages as n,useMessages as o}from"../../internal/i18n.js";import{ArrowRightIcon as c}from"../../internal/icons.js";import{searchText as d}from"../../internal/search.js";import{cx as m,fieldRestClasses as u,hasContent as h,metaTextClasses as f,paddingXClasses as b,radiusClasses as p,surfaceSlots as v,toLength as g}from"../../internal/styles.js";import{useStyleDefaults as x}from"../../internal/defaults.js";const y={xs:"py-1",sm:"py-1.5",md:"py-2",lg:"py-2.5",xl:"py-3"},k={xs:"py-0.5",sm:"py-1",md:"py-1",lg:"py-1.5",xl:"py-2"};function S({title:l,rows:s,arrived:n,ticked:o,onTick:c,onTickAll:d,search:h,onSearch:g,searchable:x,disabled:S,height:w,emptyMessage:j,searchLabel:N,selectAllLabel:z,style:M}){const{size:$,variant:A="outline",color:C="primary",density:T="default"}=M,L=s.filter(e=>!e.disabled),_=L.filter(e=>o.has(e.value)),V=L.length>0&&_.length===L.length,B=_.length>0&&!V,F=b[T][$];return a("div",{className:["flex min-w-0 flex-col overflow-hidden",u[A],p[$]].join(" "),style:v(C,0),children:[a("div",{className:`flex items-center gap-2 border-b [border-color:var(--neba-border)] ${F} ${y[$]}`,children:[e(t,{size:$,color:C,checked:V,indeterminate:B,disabled:S||0===L.length,"aria-label":z,onCheckedChange:e=>d(!0===e)}),e("span",{className:`min-w-0 flex-1 truncate font-medium ${f[$]}`,children:l}),a("span",{className:`shrink-0 tabular-nums text-(--neba-muted-fg) ${f[$]}`,children:[_.length,"/",s.length]})]}),x?e("div",{className:`${F} ${y[$]}`,children:e(i,{size:$,color:C,density:T,fullWidth:!0,variant:"text",disabled:S,placeholder:N,"aria-label":N,value:h,onChange:e=>g(e.target.value)})}):null,e(r,{size:$,color:C,height:w,fade:!0,children:e("div",{className:`flex flex-col ${F} ${y[$]}`,children:0===s.length?e("span",{className:`text-(--neba-muted-fg) ${f[$]} ${k[$]}`,children:j}):s.map(a=>e(t,{size:$,color:C,className:m(k[$],n.has(a.value)?"[animation:neba-anim-fade_var(--neba-duration-fill)_var(--neba-ease)_both]":""),label:a.label,checked:o.has(a.value),disabled:S||a.disabled,onCheckedChange:e=>c(a.value,!0===e)},a.value))})})]})}function w(e,a,l){const t=d(a);return""===t?e:e.filter(e=>{const a=l.get(e.value);return void 0===a||a.includes(t)})}export const Transfer=/*@__PURE__*/l.forwardRef(function(t,r){const{items:i,value:u,defaultValue:f,onValueChange:b,sourceLabel:p,targetLabel:v,searchable:y=!1,height:k=220,disabled:j=!1,locale:N,variant:z="outline",size:M="md",color:$="primary",density:A="default",className:C,...T}=x(t,["size","density","variant","locale"]),L=o(n,N),[_,V]=l.useState(f??[]),B=u??_,[F,I]=l.useState(()=>new Set),[R,W]=l.useState(()=>new Set),[q,D]=l.useState(""),[E,G]=l.useState(""),H=l.useMemo(()=>new Set(B),[B]),J=l.useMemo(()=>i.filter(e=>!H.has(e.value)),[i,H]),K=l.useMemo(()=>i.filter(e=>H.has(e.value)),[i,H]),O=(e,a)=>{I(l=>{const t=new Set(l);return a?t.add(e):t.delete(e),t})},P=(e,a)=>{I(l=>{const t=new Set(l);for(const l of e)l.disabled||(a?t.add(l.value):t.delete(l.value));return t})},Q=(e,a)=>{const l=e.filter(e=>!e.disabled&&F.has(e.value));if(0===l.length)return;const t=new Set(l.map(e=>e.value)),s=a?i.filter(e=>H.has(e.value)||t.has(e.value)).map(e=>e.value):B.filter(e=>!t.has(e));I(e=>new Set([...e].filter(e=>!t.has(e)))),W(t),(e=>{void 0===u&&V(e),b?.(e)})(s)},U=l.useMemo(()=>function(e){const a=new Map;for(const l of e)"string"==typeof l.label&&a.set(l.value,d(l.label));return a}(i),[i]),X=l.useMemo(()=>w(J,q,U),[J,q,U]),Y=l.useMemo(()=>w(K,E,U),[K,E,U]),Z=X.some(e=>!e.disabled&&F.has(e.value)),ee=Y.some(e=>!e.disabled&&F.has(e.value)),ae=g(k),le={variant:z,size:M,color:$,density:A};return a("div",{ref:r,className:m("grid w-full items-center gap-3","[grid-template-columns:minmax(0,1fr)_auto_minmax(0,1fr)]",C??""),...T,children:[e(S,{title:h(p)?p:L.source,rows:X,arrived:R,ticked:F,onTick:O,onTickAll:e=>P(X,e),search:q,onSearch:D,searchable:y,disabled:j,height:ae,emptyMessage:L.empty,searchLabel:L.search,selectAllLabel:L.selectAll,style:le}),a("div",{className:"flex flex-col gap-2",children:[e(s,{size:M,color:$,variant:"text"===z?"text":"outline",label:L.toTarget,disabled:j||!Z,onClick:()=>Q(X,!0),icon:e(c,{})}),e(s,{size:M,color:$,variant:"text"===z?"text":"outline",label:L.toSource,disabled:j||!ee,onClick:()=>Q(Y,!1),icon:e("span",{className:"flex rotate-180",children:e(c,{})})})]}),e(S,{title:h(v)?v:L.target,rows:Y,arrived:R,ticked:F,onTick:O,onTickAll:e=>P(Y,e),search:E,onSearch:G,searchable:y,disabled:j,height:ae,emptyMessage:L.empty,searchLabel:L.search,selectAllLabel:L.selectAll,style:le})]})});
|
|
@@ -53,6 +53,8 @@ export interface TreeSelectProps extends PickerShellProps {
|
|
|
53
53
|
placeholder?: React.ReactNode;
|
|
54
54
|
/** Offers the × that empties the control. @default false */
|
|
55
55
|
clearable?: boolean;
|
|
56
|
+
/** Accessible name of the clear button. Defaults to the `locale`'s word. */
|
|
57
|
+
clearLabel?: string;
|
|
56
58
|
/** Closes the popup as soon as a node is chosen. @default !multiple */
|
|
57
59
|
closeOnSelect?: boolean;
|
|
58
60
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as a from"react";import{TreeItem as n,TreeView as r}from"../tree-view/TreeView.js";import{PickerShell as t}from"../../internal/picker.js";import{
|
|
1
|
+
"use client";import{jsx as e,jsxs as l}from"react/jsx-runtime";import*as a from"react";import{TreeItem as n,TreeView as r}from"../tree-view/TreeView.js";import{PickerShell as t}from"../../internal/picker.js";import{searchHaystack as o,searchText as i}from"../../internal/search.js";import{actionMessages as s,commandMessages as c,comboboxMessages as d,useMessages as u}from"../../internal/i18n.js";import{useStyleDefaults as h}from"../../internal/defaults.js";function p(e,l=new Map){for(const a of e)l.set(a.value,a),a.children&&p(a.children,l);return l}function m(e,l=new Map){for(const a of e)l.set(a,o([a.searchLabel??("string"==typeof a.label?a.label:String(a.value))])),a.children&&m(a.children,l);return l}function f(e,l,a){if(""===l)return e;const n=[];for(const r of e){const e=r.children?f(r.children,l,a):void 0,t=(a.get(r)??"").includes(l);(t||e&&e.length>0)&&n.push({...r,children:t?r.children:e})}return n}function g(e,l=[]){for(const a of e)a.children&&a.children.length>0&&(l.push(a.value),g(a.children,l));return l}export const TreeSelect=/*@__PURE__*/a.forwardRef(function(o,v){const{items:b=[],value:x,defaultValue:y,onValueChange:w,multiple:C=!1,selectableBranches:S=!1,defaultExpanded:j,expanded:N,onExpandedChange:M,open:O,defaultOpen:z,onOpenChange:V,placeholder:E,clearable:L=!1,clearLabel:T,closeOnSelect:k,searchable:A=!1,searchPlaceholder:I,locale:R,format:B,name:P,size:$="md",color:q="primary",readOnly:D=!1,disabled:F=!1,classNames:G,...H}=h(o,["size","locale"]),J=u(d,R),K=u(c,R),Q=u(s,R),U=e=>null==e?[]:Array.isArray(e)?e:[e],[W,X]=a.useState(()=>U(y)),Y=void 0!==x?U(x):W,[Z,_]=a.useState(z??!1),ee=O??Z,[le,ae]=a.useState(""),ne=a.useMemo(()=>p(b),[b]),re=a.useMemo(()=>m(b),[b]),te=i(le),oe=a.useMemo(()=>f(b,te,re),[b,te,re]),ie=a.useMemo(()=>""===te?void 0:g(oe),[te,oe]),[se,ce]=a.useState(()=>j??[]),de=ie??N??se,ue=e=>{e&&(D||F)||(void 0===O&&_(e),e||ae(""),V?.(e))},he=e=>{void 0===x&&X(e),w?.(e)},pe=e=>e.selectable??(!(e.children&&e.children.length>0)||S),me=Y.map(e=>ne.get(e)).filter(e=>void 0!==e),fe=0===me.length?E??"":B?B(me):me.map(e=>e.label).reduce((e,l,a)=>0===a?[l]:[...e,", ",l],[]),ge=l=>l.map(l=>e(n,{value:l.value,label:l.label,startIcon:l.startIcon,disabled:l.disabled||!pe(l),className:G?.item,children:l.children?ge(l.children):null},l.value));return e(t,{...H,size:$,color:q,readOnly:D,disabled:F,triggerRef:v,display:fe,empty:0===me.length,clearable:L,onClear:()=>he([]),open:ee,onOpenChange:ue,clearLabel:T??Q.clear,popupClassName:G?.popup,hiddenValues:P?Y.map(e=>({name:P,value:String(e)})):void 0,children:l("div",{className:"flex max-h-80 w-64 flex-col gap-2 overflow-hidden",children:[A?e("input",{type:"text",value:le,placeholder:I??K.search,"aria-label":I??K.search,onChange:e=>ae(e.currentTarget.value),className:"w-full shrink-0 bg-transparent px-1 py-1 [font:inherit] text-(--neba-fg) [outline:none] placeholder:text-(--neba-muted-fg)"}):null,e("div",{className:"min-h-0 flex-1 overflow-auto",children:0===oe.length?e("p",{className:`px-1 py-2 text-(--neba-muted-fg) ${G?.empty??""}`,children:J.empty}):e(r,{size:$,color:q,multiple:C,selected:Y,onSelectedChange:e=>{const l=e.filter(e=>{const l=ne.get(e);return void 0!==l&&pe(l)&&!l.disabled});he(C?l:l.slice(-1)),(k??!C)&&ue(!1)},expanded:de,onExpandedChange:ie?()=>{}:e=>{void 0===N&&ce(e),M?.(e)},className:G?.tree,children:ge(oe)})})]})})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as e,Fragment as t,jsxs as r}from"react/jsx-runtime";import*as n from"react";import{ChevronIcon as a}from"../../internal/icons.js";import{controlTextClasses as l,cx as s,gapClasses as o,hasContent as i,iconClasses as c,radiusClasses as d,surfaceClasses as u,surfaceSlots as m,transitionClasses as f}from"../../internal/styles.js";import{useStyleDefaults as p}from"../../internal/defaults.js";const
|
|
1
|
+
"use client";import{jsx as e,Fragment as t,jsxs as r}from"react/jsx-runtime";import*as n from"react";import{ChevronIcon as a}from"../../internal/icons.js";import{controlTextClasses as l,cx as s,gapClasses as o,hasContent as i,iconClasses as c,radiusClasses as d,surfaceClasses as u,surfaceSlots as m,transitionClasses as f}from"../../internal/styles.js";import{useStyleDefaults as p}from"../../internal/defaults.js";const g=/*@__PURE__*/n.createContext({size:"md",density:"default",disabled:!1,expandedKeys:new Set,selectedKeys:new Set,activeKey:null,toggle:()=>{},select:()=>{},activate:()=>{},register:()=>()=>{}}),x=/*@__PURE__*/n.createContext(!1),b={solid:[u,"text-(--neba-fg) bg-(--n-panel-hover)","[box-shadow:var(--n-elev),var(--neba-plate-solid)]"].join(" "),outline:[u,"border text-(--neba-fg) bg-(--n-panel)","[border-color:var(--n-line)]","[box-shadow:var(--n-elev),var(--neba-plate-glass)]"].join(" "),text:"text-(--neba-fg) bg-transparent"},v={xs:"0.875rem",sm:"1rem",md:"1.25rem",lg:"1.5rem",xl:"1.75rem"},h={xs:"1.375rem",sm:"1.625rem",md:"2rem",lg:"2.5rem",xl:"3rem"},w={default:{xs:"px-1.5",sm:"px-2",md:"px-2.5",lg:"px-3",xl:"px-3.5"},compact:{xs:"px-1",sm:"px-1",md:"px-1.5",lg:"px-2",xl:"px-2.5"}},y={xs:"rounded-[0.3125rem]",sm:"rounded-[0.375rem]",md:"rounded-[0.5rem]",lg:"rounded-[0.625rem]",xl:"rounded-[0.75rem]"},k={none:"",simple:"neba-tree-simple",folder:"neba-tree-folder"};function C(e){return Array.from(e.querySelectorAll('[role="treeitem"]')).filter(e=>null===e.closest("[data-closing]"))}const N=e=>String(e);export const TreeView=/*@__PURE__*/n.forwardRef(function(t,r){const{variant:a="outline",size:l="md",color:o="primary",density:i="default",elevation:c=0,lines:u="simple",expanded:x,defaultExpanded:w,onExpandedChange:y,selected:S,defaultSelected:A,onSelectedChange:j,multiple:K=!1,disabled:D=!1,label:E,className:R,style:P,children:I,onKeyDown:_,...z}=p(t,["size","density","variant"]),[F,M]=n.useState(w??[]),[T,V]=n.useState(A??[]),[q,L]=n.useState(null),H=x??F,O=S??T,U=n.useRef(null),B=n.useCallback(e=>{U.current=e,"function"==typeof r?r(e):r&&(r.current=e)},[r]),G=n.useCallback(e=>{const t=N(e),r=x??F,n=r.some(e=>N(e)===t)?r.filter(e=>N(e)!==t):[...r,e];void 0===x&&M(n),y?.(n)},[x,F,y]),J=n.useCallback(e=>{const t=N(e),r=S??T,n=r.some(e=>N(e)===t),a=K?n?r.filter(e=>N(e)!==t):[...r,e]:[e];void 0===S&&V(a),j?.(a)},[K,S,T,j]),Q=n.useRef(new Map),W=n.useCallback((e,t)=>(Q.current.set(e,t),()=>{Q.current.delete(e)}),[]),X=n.useMemo(()=>H.map(N).join("\0"),[H]),Y=n.useMemo(()=>O.map(N).join("\0"),[O]),Z=n.useMemo(()=>({size:l,density:i,disabled:D,expandedKeys:new Set(H.map(N)),selectedKeys:new Set(O.map(N)),activeKey:q,toggle:G,select:J,activate:L,register:W}),[l,i,D,X,Y,q,G,J,W]);n.useEffect(()=>{if(null!==q&&Q.current.has(q))return;const e=U.current;if(!e)return;const t=C(e);0!==t.length&&L(t[0].dataset.nebaValue??null)});const $=s("flex list-none flex-col p-1",d[l],b[a],f,k[u],R);return e(g.Provider,{value:Z,children:e("ul",{ref:B,role:"tree","aria-label":E,"aria-multiselectable":K||void 0,className:$,style:{...m(o,c),"--n-tree-indent":v[l],"--n-tree-row":h[l],...P},onKeyDown:function(e){if(_?.(e),e.defaultPrevented)return;const t=U.current,r=e.target?.closest?.('[role="treeitem"]');if(!t||!r||!t.contains(r))return;const n=C(t),a=n.indexOf(r);if(-1===a)return;const l=t=>{t&&(e.preventDefault(),L(t.dataset.nebaValue??null),t.focus())},s=e=>{const t=e.dataset.nebaValue;t&&Q.current.get(t)?.toggle()},o="rtl"===getComputedStyle(t).direction,i=o?"ArrowLeft":"ArrowRight",c=o?"ArrowRight":"ArrowLeft",d=r.getAttribute("aria-expanded");switch(e.key){case"ArrowDown":l(n[a+1]);break;case"ArrowUp":l(n[a-1]);break;case"Home":l(n[0]);break;case"End":l(n[n.length-1]);break;case i:"false"===d?(e.preventDefault(),s(r)):"true"===d&&l(n[a+1]);break;case c:"true"===d?(e.preventDefault(),s(r)):l(r.parentElement?.closest('[role="treeitem"]'));break;case"Enter":case" ":e.preventDefault(),r.click()}},...z,children:I})})});export const TreeItem=/*@__PURE__*/n.forwardRef(function({value:d,label:u,startIcon:m,endIcon:p,action:b,href:v,expandable:h,disabled:k=!1,className:C,children:S,onClick:A,...j},K){const{size:D,density:E,disabled:R,expandedKeys:P,selectedKeys:I,activeKey:_,toggle:z,select:F,activate:M,register:T}=n.useContext(g),V=n.useId(),q=d??V,L=N(q),H=n.useRef(null),O=n.useCallback(e=>{H.current=e,"function"==typeof K?K(e):K&&(K.current=e)},[K]),U=n.Children.toArray(S),B=h??U.length>0,G=B&&P.has(L),J=I.has(L),Q=k||R,W=n.useRef({toggle:()=>{}});W.current.toggle=()=>{!Q&&B&&z(q)};const X=n.useContext(x);n.useEffect(()=>X?void 0:T(L,W.current),[X,L,T]);const[Y,Z]=n.useState(G),[$,ee]=n.useState(G),te=n.useRef(null);n.useEffect(()=>{if(G){Z(!0);const e=requestAnimationFrame(()=>ee(!0));return()=>cancelAnimationFrame(e)}ee(!1);const e=te.current;(null===e||getComputedStyle(e).transitionDuration.split(",").every(e=>0===parseFloat(e)))&&Z(!1)},[G]);const re=s("flex min-w-0 flex-1 cursor-pointer items-center text-start","h-(--n-tree-row)",w[E][D],y[D],o[D],l[D],f,c,"group-focus-visible/tree-item:[outline:2px_solid_var(--n-ring)]","group-focus-visible/tree-item:outline-offset-[-2px]",Q?"cursor-not-allowed text-(--neba-disabled-fg)":J?"bg-(--n-soft-press) font-medium text-(--n-accent) hover:bg-(--n-soft-press)":"hover:bg-(--n-soft)"),ne=r(t,{children:[e("span",{"aria-hidden":"true",onClick:e=>{!Q&&B&&(e.stopPropagation(),e.preventDefault(),H.current?.focus(),M(L),z(q))},className:s("flex h-[1lh] w-[1.15em] shrink-0 items-center justify-center","[transition:rotate_var(--neba-duration)_var(--neba-ease)]",B?"text-(--neba-muted-fg)":"",G?"rotate-0":"-rotate-90 rtl:rotate-90"),children:B?e(a,{}):null}),i(m)?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg)",children:m}):null,e("span",{className:"min-w-0 flex-1 truncate",children:u}),i(p)?e("span",{className:"flex h-[1lh] shrink-0 items-center text-(--neba-muted-fg)",children:p}):null]});return r("li",{ref:O,role:"treeitem","aria-expanded":B?G:void 0,"aria-selected":!!J||void 0,"aria-disabled":Q||void 0,"data-neba-value":L,tabIndex:_===L?0:-1,className:s("group/tree-item relative block [outline:none]",C),onClick:function(e){e.stopPropagation(),Q?e.preventDefault():(H.current?.focus(),M(L),A?.(e),e.defaultPrevented||(B&&z(q),F(q)))},...j,children:[r("div",{className:"flex w-full items-center",children:[v&&!Q?e("a",{href:v,tabIndex:-1,className:re,"aria-current":J?"page":void 0,children:ne}):e("div",{className:re,children:ne}),i(b)?e("span",{className:s("flex shrink-0 items-center",w[E][D]),onClick:e=>e.stopPropagation(),children:b}):null]}),B&&Y&&U.length>0?e("div",{ref:te,"data-closing":G?void 0:"",className:s("grid [transition:grid-template-rows_var(--neba-duration)_var(--neba-ease)]",$?"[grid-template-rows:1fr]":"[grid-template-rows:0fr] pointer-events-none"),onTransitionEnd:e=>{e.target!==e.currentTarget||"grid-template-rows"!==e.propertyName||G||Z(!1)},children:e("ul",{role:"group",className:"min-h-0 list-none overflow-hidden ps-(--n-tree-indent)",children:e(x.Provider,{value:X||!G,children:S})})}):null]})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import*as e from"react";import{useRender as t}from"@base-ui/react/use-render";import{transitionProps as r}from"../../internal/animate.js";import{cx as m}from"../../internal/styles.js";const
|
|
1
|
+
"use client";import*as e from"react";import{useRender as t}from"@base-ui/react/use-render";import{transitionProps as r}from"../../internal/animate.js";import{clampClasses as n,cx as m}from"../../internal/styles.js";const a={h1:"text-[1.875rem]/[1.2] tracking-[-0.02em]",h2:"text-[1.5rem]/[1.25] tracking-[-0.015em]",h3:"text-[1.25rem]/[1.3] tracking-[-0.01em]",h4:"text-[1.0625rem]/[1.41176]",h5:"text-[0.9375rem]/[1.46667]",h6:"text-[0.8125rem]/[1.53846]",lead:"text-[1.0625rem]/[1.64706]",body:"text-[0.8125rem]/[1.69231]",caption:"text-[0.75rem]/[1.5]",overline:"text-[0.6875rem]/[1.45455] tracking-[0.08em] uppercase"},o={h1:"semibold",h2:"semibold",h3:"semibold",h4:"semibold",h5:"semibold",h6:"semibold",lead:"regular",body:"regular",caption:"regular",overline:"medium"},i={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",lead:"p",body:"p",caption:"span",overline:"span"},l=new Set(["caption","overline"]),s={h1:"mb-4",h2:"mb-3.5",h3:"mb-3",h4:"mb-2.5",h5:"mb-2",h6:"mb-2",lead:"mb-4",body:"mb-3",caption:"mb-2",overline:"mb-2"},h={regular:"font-normal",medium:"font-medium",semibold:"font-semibold",bold:"font-bold"},c={start:"text-start",center:"text-center",end:"text-end",justify:"text-justify"};export const Typography=/*@__PURE__*/e.forwardRef(function({level:d="body",color:b,weight:p,align:x,lines:u,gutter:f=!1,transition:y,render:g,className:v,style:j,children:k,...w},N){const E=r(y),R=m("neba-typography",a[d],h[p??o[d]],x?c[x]:"",u?n(u):"",f?s[d]:"",b?"text-(--n-accent)":l.has(d)?"text-(--neba-muted-fg)":"text-(--neba-fg)",E.className,v??"");return t({render:g??e.createElement(i[d]),ref:N,props:{className:R,style:b?{"--n-accent":`var(--neba-${b}-accent)`,...E.style,...j}:{...E.style,...j},children:k,...w}})});
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { useDisclosure } from './useDisclosure.js';
|
|
|
2
2
|
export type { Disclosure } from './useDisclosure.js';
|
|
3
3
|
export { useElementSize } from './useElementSize.js';
|
|
4
4
|
export type { ElementSize } from './useElementSize.js';
|
|
5
|
-
export { useBreakpoint, useMediaQuery } from './useMediaQuery.js';
|
|
5
|
+
export { useBreakpoint, useBreakpointValue, useCurrentBreakpoint, useMediaQuery } from './useMediaQuery.js';
|
|
6
6
|
export { useOnScreen } from './useOnScreen.js';
|
|
7
7
|
export type { OnScreenOptions } from './useOnScreen.js';
|
|
8
8
|
export { useShortcut } from './useShortcut.js';
|
package/dist/hooks/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{useDisclosure}from"./useDisclosure.js";export{useElementSize}from"./useElementSize.js";export{useBreakpoint,useMediaQuery}from"./useMediaQuery.js";export{useOnScreen}from"./useOnScreen.js";export{useShortcut}from"./useShortcut.js";export{usePrefersReducedMotion}from"../internal/media.js";
|
|
1
|
+
export{useDisclosure}from"./useDisclosure.js";export{useElementSize}from"./useElementSize.js";export{useBreakpoint,useBreakpointValue,useCurrentBreakpoint,useMediaQuery}from"./useMediaQuery.js";export{useOnScreen}from"./useOnScreen.js";export{useShortcut}from"./useShortcut.js";export{usePrefersReducedMotion}from"../internal/media.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { NebaBreakpoint } from '../types.js';
|
|
1
|
+
import type { NebaBreakpoint, NebaResponsive } from '../types.js';
|
|
2
2
|
/**
|
|
3
3
|
* One media query, as a boolean this component re-renders on.
|
|
4
4
|
*
|
|
@@ -25,3 +25,37 @@ export declare function useMediaQuery(query: string): boolean;
|
|
|
25
25
|
* is the value with no media query around it.
|
|
26
26
|
*/
|
|
27
27
|
export declare function useBreakpoint(breakpoint: NebaBreakpoint): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Which breakpoint the window is currently in — the widest whose floor it has
|
|
30
|
+
* reached.
|
|
31
|
+
*
|
|
32
|
+
* Four subscriptions and not five: `xs` is a floor of zero, so it is where the
|
|
33
|
+
* window is when none of the others match, and there is no query to ask. They
|
|
34
|
+
* are four separate calls rather than a loop because they are hooks; the count
|
|
35
|
+
* is fixed, which is what makes that legal, and each one costs nothing extra —
|
|
36
|
+
* a `MediaQueryList` is shared per query string for the whole page.
|
|
37
|
+
*
|
|
38
|
+
* `xs` on a server, which is the same answer the stylesheet gives before any
|
|
39
|
+
* media query has had a chance to apply.
|
|
40
|
+
*/
|
|
41
|
+
export declare function useCurrentBreakpoint(): NebaBreakpoint;
|
|
42
|
+
/**
|
|
43
|
+
* A responsive prop's own shape, resolved in JavaScript.
|
|
44
|
+
*
|
|
45
|
+
* `useBreakpointValue({ xs: 1, md: 3 })` is `1` under 48rem and `3` from there
|
|
46
|
+
* up, reading the map exactly as the CSS cascade behind `span` and `spacing`
|
|
47
|
+
* reads it: every entry is a floor, so the nearest one at or below the current
|
|
48
|
+
* width wins. That sameness is the point — a component's responsive props and
|
|
49
|
+
* the numbers a caller works out for themselves should not need two mental
|
|
50
|
+
* models, or two ideas of what `{ md: 6 }` says about a phone.
|
|
51
|
+
*
|
|
52
|
+
* A bare value is returned unchanged, and `undefined` means the map has not
|
|
53
|
+
* said anything yet at this width: `{ lg: 4 }` on a phone is the caller
|
|
54
|
+
* declining to have an opinion there, not a failure. Pair it with `??` for a
|
|
55
|
+
* default.
|
|
56
|
+
*
|
|
57
|
+
* It re-renders on a resize, which the CSS form does not — so reach for it when
|
|
58
|
+
* the value is one JavaScript has to see (how many items to fetch, what to pass
|
|
59
|
+
* a chart), and leave layout to the props that resolve in the stylesheet.
|
|
60
|
+
*/
|
|
61
|
+
export declare function useBreakpointValue<T>(value: NebaResponsive<T> | undefined): T | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{useMediaQuery as e,widthAtLeast as r}from"../internal/media.js";export function useMediaQuery(r){return e(r)}export function useBreakpoint(n){return e(r(n))}
|
|
1
|
+
"use client";import{useMediaQuery as e,widthAtLeast as r}from"../internal/media.js";import{valueAt as n}from"../internal/responsive.js";export function useMediaQuery(r){return e(r)}export function useBreakpoint(n){return e(r(n))}export function useCurrentBreakpoint(){const n=e(r("sm")),t=e(r("md")),u=e(r("lg"));return e(r("xl"))?"xl":u?"lg":t?"md":n?"sm":"xs"}export function useBreakpointValue(e){return n(e,useCurrentBreakpoint())}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,19 +6,24 @@ export * from './components/anchor/index.js';
|
|
|
6
6
|
export * from './components/animate-appear/index.js';
|
|
7
7
|
export * from './components/app-logo/index.js';
|
|
8
8
|
export * from './components/animate-blink/index.js';
|
|
9
|
+
export * from './components/animate-counter/index.js';
|
|
9
10
|
export * from './components/animate-fade/index.js';
|
|
11
|
+
export * from './components/animate-float/index.js';
|
|
10
12
|
export * from './components/animate-grow/index.js';
|
|
11
13
|
export * from './components/animate-headline/index.js';
|
|
12
14
|
export * from './components/animate-lighting/index.js';
|
|
13
15
|
export * from './components/animate-marquee/index.js';
|
|
16
|
+
export * from './components/animate-reveal/index.js';
|
|
14
17
|
export * from './components/animate-rotate/index.js';
|
|
18
|
+
export * from './components/animate-scramble/index.js';
|
|
19
|
+
export * from './components/animate-shake/index.js';
|
|
20
|
+
export * from './components/animate-split/index.js';
|
|
15
21
|
export * from './components/animate-slide/index.js';
|
|
16
22
|
export * from './components/animate-typing/index.js';
|
|
17
23
|
export * from './components/animate-zoom/index.js';
|
|
18
24
|
export * from './components/area-chart/index.js';
|
|
19
25
|
export * from './components/aspect-ratio/index.js';
|
|
20
26
|
export * from './components/avatar/index.js';
|
|
21
|
-
export * from './components/avatar-group/index.js';
|
|
22
27
|
export * from './components/badge/index.js';
|
|
23
28
|
export * from './components/bar-chart/index.js';
|
|
24
29
|
export * from './components/blockquote/index.js';
|
|
@@ -51,7 +56,9 @@ export * from './components/drawer/index.js';
|
|
|
51
56
|
export * from './components/empty/index.js';
|
|
52
57
|
export * from './components/fieldset/index.js';
|
|
53
58
|
export * from './components/file-picker/index.js';
|
|
59
|
+
export * from './components/flex/index.js';
|
|
54
60
|
export * from './components/form/index.js';
|
|
61
|
+
export * from './components/gallery/index.js';
|
|
55
62
|
export * from './components/gauge-chart/index.js';
|
|
56
63
|
export * from './components/grid/index.js';
|
|
57
64
|
export * from './components/floating-action-button/index.js';
|
|
@@ -96,11 +103,13 @@ export * from './components/scroll-zone/index.js';
|
|
|
96
103
|
export * from './components/segmented-button/index.js';
|
|
97
104
|
export * from './components/select/index.js';
|
|
98
105
|
export * from './components/shortcut/index.js';
|
|
106
|
+
export * from './components/show/index.js';
|
|
99
107
|
export * from './components/sidebar/index.js';
|
|
100
108
|
export * from './components/skeleton/index.js';
|
|
101
109
|
export * from './components/slider/index.js';
|
|
102
110
|
export * from './components/sparkline/index.js';
|
|
103
111
|
export * from './components/spoiler/index.js';
|
|
112
|
+
export * from './components/stack/index.js';
|
|
104
113
|
export * from './components/statistic/index.js';
|
|
105
114
|
export * from './components/switch/index.js';
|
|
106
115
|
export * from './components/table/index.js';
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export*from"./types.js";export*from"./hooks/index.js";export*from"./components/accordion/index.js";export*from"./components/alert/index.js";export*from"./components/anchor/index.js";export*from"./components/animate-appear/index.js";export*from"./components/app-logo/index.js";export*from"./components/animate-blink/index.js";export*from"./components/animate-fade/index.js";export*from"./components/animate-grow/index.js";export*from"./components/animate-headline/index.js";export*from"./components/animate-lighting/index.js";export*from"./components/animate-marquee/index.js";export*from"./components/animate-rotate/index.js";export*from"./components/animate-
|
|
1
|
+
export*from"./types.js";export*from"./hooks/index.js";export*from"./components/accordion/index.js";export*from"./components/alert/index.js";export*from"./components/anchor/index.js";export*from"./components/animate-appear/index.js";export*from"./components/app-logo/index.js";export*from"./components/animate-blink/index.js";export*from"./components/animate-counter/index.js";export*from"./components/animate-fade/index.js";export*from"./components/animate-float/index.js";export*from"./components/animate-grow/index.js";export*from"./components/animate-headline/index.js";export*from"./components/animate-lighting/index.js";export*from"./components/animate-marquee/index.js";export*from"./components/animate-reveal/index.js";export*from"./components/animate-rotate/index.js";export*from"./components/animate-scramble/index.js";export*from"./components/animate-shake/index.js";export*from"./components/animate-split/index.js";export*from"./components/animate-slide/index.js";export*from"./components/animate-typing/index.js";export*from"./components/animate-zoom/index.js";export*from"./components/area-chart/index.js";export*from"./components/aspect-ratio/index.js";export*from"./components/avatar/index.js";export*from"./components/badge/index.js";export*from"./components/bar-chart/index.js";export*from"./components/blockquote/index.js";export*from"./components/bottom-navigation/index.js";export*from"./components/box/index.js";export*from"./components/breadcrumb/index.js";export*from"./components/button/index.js";export*from"./components/button-group/index.js";export*from"./components/calendar/index.js";export*from"./components/card/index.js";export*from"./components/carousel/index.js";export*from"./components/chat-bubble/index.js";export*from"./components/checkbox/index.js";export*from"./components/chip/index.js";export*from"./components/code-block/index.js";export*from"./components/collapsible/index.js";export*from"./components/color-picker/index.js";export*from"./components/combobox/index.js";export*from"./components/command-palette/index.js";export*from"./components/confirm/index.js";export*from"./components/container/index.js";export*from"./components/data-list/index.js";export*from"./components/data-table/index.js";export*from"./components/date-picker/index.js";export*from"./components/date-range-picker/index.js";export*from"./components/date-time-picker/index.js";export*from"./components/dialog/index.js";export*from"./components/divider/index.js";export*from"./components/drawer/index.js";export*from"./components/empty/index.js";export*from"./components/fieldset/index.js";export*from"./components/file-picker/index.js";export*from"./components/flex/index.js";export*from"./components/form/index.js";export*from"./components/gallery/index.js";export*from"./components/gauge-chart/index.js";export*from"./components/grid/index.js";export*from"./components/floating-action-button/index.js";export*from"./components/floating-bottom-navigation/index.js";export*from"./components/footer/index.js";export*from"./components/grid-container/index.js";export*from"./components/header/index.js";export*from"./components/heatmap-chart/index.js";export*from"./components/highlight/index.js";export*from"./components/hover-card/index.js";export*from"./components/how-to-steps/index.js";export*from"./components/icon/index.js";export*from"./components/icon-button/index.js";export*from"./components/image/index.js";export*from"./components/line-chart/index.js";export*from"./components/list/index.js";export*from"./components/menu/index.js";export*from"./components/menubar/index.js";export*from"./components/meter/index.js";export*from"./components/mockup/index.js";export*from"./components/navigation-menu/index.js";export*from"./components/number-field/index.js";export*from"./components/otp-field/index.js";export*from"./components/overlay/index.js";export*from"./components/page-layout/index.js";export*from"./components/pagination/index.js";export*from"./components/panes/index.js";export*from"./components/pie-chart/index.js";export*from"./components/pill/index.js";export*from"./components/popconfirm/index.js";export*from"./components/popover/index.js";export*from"./components/portal/index.js";export*from"./components/progress-box/index.js";export*from"./components/progress-circular/index.js";export*from"./components/progress-linear/index.js";export*from"./components/provider/index.js";export*from"./components/radio-group/index.js";export*from"./components/rating/index.js";export*from"./components/scatter-chart/index.js";export*from"./components/scroll-area/index.js";export*from"./components/scroll-zone/index.js";export*from"./components/segmented-button/index.js";export*from"./components/select/index.js";export*from"./components/shortcut/index.js";export*from"./components/show/index.js";export*from"./components/sidebar/index.js";export*from"./components/skeleton/index.js";export*from"./components/slider/index.js";export*from"./components/sparkline/index.js";export*from"./components/spoiler/index.js";export*from"./components/stack/index.js";export*from"./components/statistic/index.js";export*from"./components/switch/index.js";export*from"./components/table/index.js";export*from"./components/tabs/index.js";export*from"./components/text-field/index.js";export*from"./components/text-link/index.js";export*from"./components/time-picker/index.js";export*from"./components/timeline/index.js";export*from"./components/timeline-chart/index.js";export*from"./components/toast/index.js";export*from"./components/toggle/index.js";export*from"./components/toggle-group/index.js";export*from"./components/toolbar/index.js";export*from"./components/tooltip/index.js";export*from"./components/tour/index.js";export*from"./components/transfer/index.js";export*from"./components/tree-select/index.js";export*from"./components/tree-view/index.js";export*from"./components/typography/index.js";export*from"./components/visually-hidden/index.js";export*from"./components/window-pane/index.js";
|