altum 0.0.10 → 0.0.12

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 (31) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/components/ActionList/ActionList.js +1 -1
  3. package/dist/components/ActionList/actionListFilter.js +1 -1
  4. package/dist/components/CommandPalette/CommandPalette.module.css.js +1 -1
  5. package/dist/components/ConfirmDialog/ConfirmDialog.js +1 -1
  6. package/dist/components/DateField/DateField.js +1 -1
  7. package/dist/components/DateRangeField/DateRangeField.js +1 -1
  8. package/dist/components/Header/Header.js +1 -0
  9. package/dist/components/Header/Header.module.css.js +1 -0
  10. package/dist/components/Layout/Layout.js +1 -1
  11. package/dist/components/Layout/Layout.module.css.js +1 -1
  12. package/dist/components/Listbox/Listbox.js +1 -1
  13. package/dist/components/Menu/Menu.js +1 -1
  14. package/dist/components/Modal/Modal.js +1 -1
  15. package/dist/components/Modal/Modal.module.css.js +1 -1
  16. package/dist/components/Popover/Popover.js +1 -1
  17. package/dist/components/PopupSwitch/PopupSwitch.js +1 -1
  18. package/dist/components/Select/Select.js +1 -1
  19. package/dist/components/Tabs/Tabs.js +1 -1
  20. package/dist/components/Tabs/Tabs.module.css.js +1 -1
  21. package/dist/components/ThemeProvider/ThemeProvider.module.css.js +1 -1
  22. package/dist/components/TimeField/TimeField.js +1 -1
  23. package/dist/entries/hooks.js +1 -1
  24. package/dist/hooks/useStickyChrome.js +1 -0
  25. package/dist/index.js +1 -1
  26. package/docs/COMPONENTS.md +6 -5
  27. package/docs/LAYOUT.md +9 -3
  28. package/docs/THEMING.md +2 -2
  29. package/package.json +1 -1
  30. package/types/entries/hooks.d.ts +12 -2
  31. package/types/index.d.ts +48 -29
package/CHANGELOG.md CHANGED
@@ -8,6 +8,26 @@
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.0.12] — 2026-10-03
12
+
13
+ **`Header`** — шапка страницы: `Title`, `Subtitle` и вкладки. Внутри **`Layout.Header`** черта на всю ширину и по нижнему краю, до контента полный `gap`.
14
+
15
+ **`Layout`** — `padding` 12 / 20 / 28px. Низ шапки и верх подвала — половина `gap`. У sticky `variant` `primary` / `tinted` / `secondary` красит фон после сдвига скролла. Заливка промежутка через `::before` / `::after` снята.
16
+
17
+ **Добавлено.** **`useStickyChrome`** в `altum/hooks`: флаг и `data-scrolled`, край `start` / `end`, свой scrollport или окно. **`Modal.Header`** собирает шапку через **`Header`**.
18
+
19
+ **Несовместимо.** **`Tabs`**: `items` на корне, панели через `tabsRef`. Контекст и `Tabs.List` сняты.
20
+
21
+ **Исправлено.** **`Tabs`** `line` — прямая черта без скруглённой заливки; `pill` снова берёт трек **`SegmentedControl`**.
22
+
23
+ ## [0.0.11] — 2026-10-03
24
+
25
+ **`Modal`** — `size` `sm` / `md` / `lg` (400 / 500 / 600px): ширина не больше окна и отступает на 16px от краёв. **`CommandPalette`** той же ширины, что **`Modal`** `md`.
26
+
27
+ **Добавлено.** **`Menu`** и **`ActionList`** принимают в `items` `{ type: 'separator' }`, как **`Listbox`**. Линия не выбирается.
28
+
29
+ **Исправлено.** **`Tabs`** больше не сжимает полосу вкладок по высоте. `popovertarget` и `popovertargetaction` в нижнем регистре — React 18 ставит атрибут на кнопку **`Select`** и других триггеров.
30
+
11
31
  ## [0.0.10] — 2026-10-03
12
32
 
13
33
  **`Select`** рисует один `TextField`: поле задаётся `inputProps`, его же настраивают **`SuggestField`**, **`AutocompleteField`** и **`MultiSelect`**.
@@ -1 +1 @@
1
- "use client";import{jsxs as D,jsx as u}from"react/jsx-runtime";import{useRef as g,useMemo as E,useLayoutEffect as I}from"react";import{Listbox as M}from"../Listbox/Listbox.js";import{cn as L}from"../../core/utils/cn.js";import{uRef as O}from"../../core/utils/bundle.js";import{useLocale as _}from"../../locales/localeContext.js";import{SearchField as j}from"../SearchField/SearchField.js";import{buildActionListOptions as k,applyActionListFilter as v,moveActionListHighlight as q,ACTION_LIST_EMPTY_ATTR as z}from"./actionListFilter.js";import n from"./ActionList.module.css.js";import H from"../../styles/utilities.module.css.js";import{ruSlice as K}from"../../locales/slices/actionList.ru.js";import{useFallbackId as B}from"../../core/utils/useFallbackId.js";const Q={actionList:K};function Y({items:o,groups:b,className:y,id:x,"aria-label":A,onAction:N,onHighlightChange:m,filterable:p=!1,filterPlaceholder:T,query:r,onQueryChange:C,emptyText:S,rootRef:F,...P}){const{t:s}=_(Q),f=B(x),l=g(null),a=g(m);a.current=m;const R=E(()=>k(o),[o]),w=e=>{const t=o.find(c=>c.id===e);t&&(t.onSelect?.(),N?.(t))},d=T??s("actionList.filterPlaceholder"),h=S??s("actionList.empty"),i=p||r!==void 0;return I(()=>{const e=l.current;if(!e||!i)return;const t=e.querySelector("input"),c=r!==void 0?r:t?.value??"";v(e,c,a.current)},[i,r,o]),D("div",{...P,ref:O(F,l),className:L(n.root,y),children:[p&&u(j,{wrapperClassName:n.filter,size:"sm",keepPlaceholder:!0,"aria-label":d,placeholder:d,value:r,autoComplete:"off",role:"combobox","aria-expanded":!0,"aria-controls":f,"aria-autocomplete":"list",autoFocus:!0,onChange:e=>{const t=l.current;t&&v(t,e.target.value,a.current),C?.(e.target.value)},onKeyDown:e=>{const t=l.current;t&&q(t,e,a.current)}}),u(M,{id:f,className:L(H.scrollport,n.list),options:R,groups:b,navigation:"highlight",multiline:!0,virtualized:i?!1:void 0,noOptionsText:h,"aria-label":A??s("actionList.ariaLabel"),onMouseDown:i?e=>{const t=e.target;t instanceof Element&&t.closest('[role="option"]')&&e.preventDefault()}:void 0,onSelect:w}),i&&o.length>0?u("p",{[z]:"",className:n.empty,children:h}):null]})}export{Y as ActionList};
1
+ "use client";import{jsxs as w,jsx as u}from"react/jsx-runtime";import{useRef as g,useMemo as D,useLayoutEffect as E}from"react";import{Listbox as M}from"../Listbox/Listbox.js";import{cn as L}from"../../core/utils/cn.js";import{uRef as O}from"../../core/utils/bundle.js";import{useLocale as _}from"../../locales/localeContext.js";import{SearchField as j}from"../SearchField/SearchField.js";import{buildActionListOptions as k,applyActionListFilter as v,moveActionListHighlight as q,ACTION_LIST_EMPTY_ATTR as z,isActionListItem as H}from"./actionListFilter.js";import s from"./ActionList.module.css.js";import K from"../../styles/utilities.module.css.js";import{ruSlice as J}from"../../locales/slices/actionList.ru.js";import{useFallbackId as Q}from"../../core/utils/useFallbackId.js";const Y={actionList:J};function B({items:o,groups:b,className:y,id:x,"aria-label":A,onAction:N,onHighlightChange:m,filterable:p=!1,filterPlaceholder:T,query:r,onQueryChange:C,emptyText:S,rootRef:F,...I}){const{t:c}=_(Y),f=Q(x),l=g(null),n=g(m);n.current=m;const P=D(()=>k(o),[o]),R=e=>{const t=o.find(a=>H(a)&&a.id===e);t&&(t.onSelect?.(),N?.(t))},d=T??c("actionList.filterPlaceholder"),h=S??c("actionList.empty"),i=p||r!==void 0;return E(()=>{const e=l.current;if(!e||!i)return;const t=e.querySelector("input"),a=r!==void 0?r:t?.value??"";v(e,a,n.current)},[i,r,o]),w("div",{...I,ref:O(F,l),className:L(s.root,y),children:[p&&u(j,{wrapperClassName:s.filter,size:"sm",keepPlaceholder:!0,"aria-label":d,placeholder:d,value:r,autoComplete:"off",role:"combobox","aria-expanded":!0,"aria-controls":f,"aria-autocomplete":"list",autoFocus:!0,onChange:e=>{const t=l.current;t&&v(t,e.target.value,n.current),C?.(e.target.value)},onKeyDown:e=>{const t=l.current;t&&q(t,e,n.current)}}),u(M,{id:f,className:L(K.scrollport,s.list),options:P,groups:b,navigation:"highlight",multiline:!0,virtualized:i?!1:void 0,noOptionsText:h,"aria-label":A??c("actionList.ariaLabel"),onMouseDown:i?e=>{const t=e.target;t instanceof Element&&t.closest('[role="option"]')&&e.preventDefault()}:void 0,onSelect:R}),i&&o.length>0?u("p",{[z]:"",className:s.empty,children:h}):null]})}export{B as ActionList};
@@ -1 +1 @@
1
- "use client";import{jsx as m}from"react/jsx-runtime";import{LISTBOX_HIGHLIGHTED_ATTR as u,LISTBOX_INDEX_ATTR as I}from"../Listbox/Listbox.utils.js";import{ActionItem as y}from"./ActionItem.js";const d="data-filter",f="data-action-list-empty",L='[role="option"]:not([hidden]):not([disabled])';function g(t){return[t.textValue??(typeof t.label=="string"||typeof t.label=="number"?String(t.label):t.id),...t.keywords??[],typeof t.description=="string"?t.description:"",t.id].join(" ")}function S(t){return t.map(e=>{const n=g(e);return{value:e.id,label:m(y,{label:e.label,icon:e.icon,description:e.description,shortcut:e.shortcut}),textValue:n,disabled:e.disabled,groupId:e.groupId,buttonProps:{...e.buttonProps,[d]:n.toLowerCase()}}})}function h(t){return Array.from(t.querySelectorAll(L))}const A="data-list-focus";function p(t,e,n){const o=t.querySelector("input");if(t.querySelectorAll(`[${u}="true"]`).forEach(r=>{r!==e&&r.removeAttribute(u)}),!e)return o?.removeAttribute("aria-activedescendant"),t.removeAttribute(A),-1;e.setAttribute(u,"true"),t.setAttribute(A,""),e.id&&o?o.setAttribute("aria-activedescendant",e.id):o?.removeAttribute("aria-activedescendant"),n&&e.scrollIntoView({block:"nearest"});const i=e.getAttribute(I);return i==null?-1:Number(i)}function v(t,e,n){const o=e.trim().toLowerCase(),i=t.querySelectorAll('[role="option"]');let r=0;i.forEach(c=>{const a=c.getAttribute(d)??"",b=o.length===0||a.includes(o);c.toggleAttribute("hidden",!b),b&&(r+=1)}),t.querySelectorAll('[role="group"]').forEach(c=>{const a=c.querySelector('[role="option"]:not([hidden])')!=null;c.toggleAttribute("hidden",!a)});const l=t.querySelector(`[${f}]`);l&&l.toggleAttribute("data-visible",i.length>0&&r===0);const s=o.length>0?h(t)[0]:void 0,T=p(t,s,o.length>0);n?.(T)}function _(t,e,n){const o=h(t);if(o.length===0)return;const i=t.querySelector(`[role="option"][${u}="true"]:not([hidden])`);let r=i?o.indexOf(i):-1;const l=e.key;if(l==="ArrowDown")r=(r+1)%o.length;else if(l==="ArrowUp")r=(r-1+o.length)%o.length;else if(l==="Home")r=0;else if(l==="End")r=o.length-1;else if(l==="Enter"){e.preventDefault(),(i??o[0])?.click();return}else return;e.preventDefault();const s=p(t,o[r],!0);n?.(s)}export{f as ACTION_LIST_EMPTY_ATTR,d as ACTION_LIST_FILTER_ATTR,A as ACTION_LIST_FOCUS_ATTR,g as actionListItemText,v as applyActionListFilter,S as buildActionListOptions,_ as moveActionListHighlight,p as paintActionListHighlight};
1
+ "use client";import{jsx as _}from"react/jsx-runtime";import{LISTBOX_HIGHLIGHTED_ATTR as a,LISTBOX_INDEX_ATTR as E}from"../Listbox/Listbox.utils.js";import{ActionItem as q}from"./ActionItem.js";const p="data-filter",m="data-action-list-empty",O='[role="option"]:not([hidden]):not([disabled])';function T(t){return!("type"in t&&t.type==="separator")}function y(t){return[t.textValue??(typeof t.label=="string"||typeof t.label=="number"?String(t.label):t.id),...t.keywords??[],typeof t.description=="string"?t.description:"",t.id].join(" ")}function w(t){return t.map(e=>{if(!T(e))return{type:"separator",id:e.id,groupId:e.groupId};const l=y(e);return{value:e.id,label:_(q,{label:e.label,icon:e.icon,description:e.description,shortcut:e.shortcut}),textValue:l,disabled:e.disabled,groupId:e.groupId,buttonProps:{...e.buttonProps,[p]:l.toLowerCase()}}})}function I(t){return Array.from(t.querySelectorAll(O))}const A="data-list-focus";function g(t,e,l){const r=t.querySelector("input");if(t.querySelectorAll(`[${a}="true"]`).forEach(o=>{o!==e&&o.removeAttribute(a)}),!e)return r?.removeAttribute("aria-activedescendant"),t.removeAttribute(A),-1;e.setAttribute(a,"true"),t.setAttribute(A,""),e.id&&r?r.setAttribute("aria-activedescendant",e.id):r?.removeAttribute("aria-activedescendant"),l&&e.scrollIntoView({block:"nearest"});const n=e.getAttribute(E);return n==null?-1:Number(n)}function x(t,e,l){const r=e.trim().toLowerCase(),n=t.querySelectorAll('[role="option"]');let o=0;n.forEach(i=>{const c=i.getAttribute(p)??"",s=r.length===0||c.includes(r);i.toggleAttribute("hidden",!s),s&&(o+=1)}),t.querySelectorAll('[role="group"]').forEach(i=>{const c=i.querySelector('[role="option"]:not([hidden])')!=null;i.toggleAttribute("hidden",!c)}),t.querySelectorAll("[data-separator]").forEach(i=>{if(r.length===0){i.toggleAttribute("hidden",!1);return}const c=i.parentElement;if(!c)return;const s=Array.from(c.children),f=s.indexOf(i),b=h=>h.getAttribute("role")==="option"&&!h.hasAttribute("hidden"),S=s.slice(0,f).some(b),v=s.slice(f+1).some(b);i.toggleAttribute("hidden",!(S&&v))});const u=t.querySelector(`[${m}]`);u&&u.toggleAttribute("data-visible",n.length>0&&o===0);const d=r.length>0?I(t)[0]:void 0,L=g(t,d,r.length>0);l?.(L)}function C(t,e,l){const r=I(t);if(r.length===0)return;const n=t.querySelector(`[role="option"][${a}="true"]:not([hidden])`);let o=n?r.indexOf(n):-1;const u=e.key;if(u==="ArrowDown")o=(o+1)%r.length;else if(u==="ArrowUp")o=(o-1+r.length)%r.length;else if(u==="Home")o=0;else if(u==="End")o=r.length-1;else if(u==="Enter"){e.preventDefault(),(n??r[0])?.click();return}else return;e.preventDefault();const d=g(t,r[o],!0);l?.(d)}export{m as ACTION_LIST_EMPTY_ATTR,p as ACTION_LIST_FILTER_ATTR,A as ACTION_LIST_FOCUS_ATTR,y as actionListItemText,x as applyActionListFilter,w as buildActionListOptions,T as isActionListItem,C as moveActionListHighlight,g as paintActionListHighlight};
@@ -1 +1 @@
1
- "use client";import{injectCss as a}from"../../core/utils/injectCss.js";var t=".-tr8s{align-self:flex-start;display:flex;flex-direction:column;margin-top:\u00028);max-height:min(72vh,\u0013command-palette-max-height));max-width:\u0013command-palette-max-width);overflow:hidden;width:100%}.-tr8s ._6FJ4A{border-bottom:\u000bcolor-dropdown-border);color:\u0001muted);flex-shrink:0;font-size:\u00032xs);line-\u000fg-line-height-2xs);padding:\u00023) \u00023) \u00022)}.-tr8s .h6lAS{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;overflow:hidden}.-tr8s .sPMvY{border-bottom:\u000bcolor-dropdown-border);flex-shrink:0;padding:\u00022) \u00023)}.-tr8s [data-list-focus] .sPMvY:is(:focus-within,[data-active],:has([aria-expanded=true])):not(\u001d]):not([data-error]):not([data-readonly]){\u0014field-control-border:\u0001field-border);\u0014field-control-shadow:none;\u0014field-label-color:\u0006label)}.-tr8s [data-list-focus] .sPMvY:hover:not(\u001d]):not([data-readonly]){\u0014field-control-border:\u0001border-hover)}.-tr8s .cYTlj{flex:1 1 auto;min-height:0;padding:\u00022)}.-tr8s [hidden]{display:none!important}.-tr8s .oSIlh{color:\u0006label);display:none;font-size:\u0003base);padding:\u00023) \u00024);text-align:center}[data-visible]:is(.-tr8s .oSIlh){display:block}.-tr8s .QSkKY{padding:\u00022) \u00023)}";const l={panel:"-tr8s",title:"_6FJ4A",body:"h6lAS",filter:"sPMvY",list:"cYTlj",empty:"oSIlh",footer:"QSkKY"};a(t);export{l as default};
1
+ "use client";import{injectCss as a}from"../../core/utils/injectCss.js";var t=".-tr8s{align-self:flex-start;display:flex;flex-direction:column;margin-top:\u00028);margin-inline:auto;max-height:min(72vh,\u0013command-palette-max-height));overflow:hidden;width:min(\u0013command-palette-max-width),calc(100dvw - \u00024)*2))}.-tr8s ._6FJ4A{border-bottom:\u000bcolor-dropdown-border);color:\u0001muted);flex-shrink:0;font-size:\u00032xs);line-\u000fg-line-height-2xs);padding:\u00023) \u00023) \u00022)}.-tr8s .h6lAS{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;overflow:hidden}.-tr8s .sPMvY{border-bottom:\u000bcolor-dropdown-border);flex-shrink:0;padding:\u00022) \u00023)}.-tr8s [data-list-focus] .sPMvY:is(:focus-within,[data-active],:has([aria-expanded=true])):not(\u001d]):not([data-error]):not([data-readonly]){\u0014field-control-border:\u0001field-border);\u0014field-control-shadow:none;\u0014field-label-color:\u0006label)}.-tr8s [data-list-focus] .sPMvY:hover:not(\u001d]):not([data-readonly]){\u0014field-control-border:\u0001border-hover)}.-tr8s .cYTlj{flex:1 1 auto;min-height:0;padding:\u00022)}.-tr8s [hidden]{display:none!important}.-tr8s .oSIlh{color:\u0006label);display:none;font-size:\u0003base);padding:\u00023) \u00024);text-align:center}[data-visible]:is(.-tr8s .oSIlh){display:block}.-tr8s .QSkKY{padding:\u00022) \u00023)}";const l={panel:"-tr8s",title:"_6FJ4A",body:"h6lAS",filter:"sPMvY",list:"cYTlj",empty:"oSIlh",footer:"QSkKY"};a(t);export{l as default};
@@ -1 +1 @@
1
- "use client";import{jsxs as m,jsx as i}from"react/jsx-runtime";import{Button as o}from"../Button/Button.js";import{Modal as n}from"../Modal/Modal.js";import{Title as z}from"../Title/Title.js";import{useLocale as B}from"../../locales/localeContext.js";import{ruSlice as j}from"../../locales/slices/confirmDialog.ru.js";import{useFallbackId as w}from"../../core/utils/useFallbackId.js";const F={confirmDialog:j};function M({open:f,title:p,message:g,confirmLabel:b,cancelLabel:h,status:l="default",secondaryAction:e,onConfirm:u,onOpenChange:d,loading:a=!1,className:C,id:y,rootRef:v,...k}){const{t:c}=B(F),D=b??c("confirmDialog.confirm"),L=h??c("confirmDialog.cancel"),r=w(y),s=`${r}-title`,t=`${r}-message`,x=()=>{a||d(!1)};return m(n,{rootRef:v,open:f,onOpenChange:d,"aria-labelledby":s,"aria-describedby":t,className:C,id:r,...k,showClose:!1,children:[i(n.Header,{children:i(z,{level:3,id:s,children:p})}),i(n.Body,{id:t,children:g}),m(n.Footer,{align:e?"space-between":"end","data-variant":l,children:[e&&i(o,{variant:e.variant??"secondary",size:"md",onClick:e.onClick,disabled:a||e.disabled,children:e.label}),i(o,{variant:"secondary",size:"md",onClick:x,disabled:a,children:L}),i(o,{variant:l==="danger"?"danger":"primary",size:"md",onClick:u,loading:a,children:D})]})]})}export{M as ConfirmDialog};
1
+ "use client";import{jsxs as m,jsx as a}from"react/jsx-runtime";import{Button as l}from"../Button/Button.js";import{Modal as i}from"../Modal/Modal.js";import{useLocale as x}from"../../locales/localeContext.js";import{ruSlice as B}from"../../locales/slices/confirmDialog.ru.js";import{useFallbackId as j}from"../../core/utils/useFallbackId.js";const w={confirmDialog:B};function F({open:f,title:g,message:p,confirmLabel:b,cancelLabel:h,status:o="default",secondaryAction:e,onConfirm:u,onOpenChange:d,loading:n=!1,className:C,id:y,rootRef:v,...k}){const{t:c}=x(w),z=b??c("confirmDialog.confirm"),D=h??c("confirmDialog.cancel"),r=j(y),s=`${r}-title`,t=`${r}-message`,L=()=>{n||d(!1)};return m(i,{rootRef:v,open:f,onOpenChange:d,"aria-labelledby":s,"aria-describedby":t,className:C,id:r,...k,showClose:!1,children:[a(i.Header,{children:a(i.Header.Title,{level:4,id:s,children:g})}),a(i.Body,{id:t,children:p}),m(i.Footer,{align:e?"space-between":"end","data-variant":o,children:[e&&a(l,{variant:e.variant??"secondary",size:"md",onClick:e.onClick,disabled:n||e.disabled,children:e.label}),a(l,{variant:"secondary",size:"md",onClick:L,disabled:n,children:D}),a(l,{variant:o==="danger"?"danger":"primary",size:"md",onClick:u,loading:n,children:z})]})]})}export{F as ConfirmDialog};
@@ -1 +1 @@
1
- "use client";import{jsx as o,jsxs as b}from"react/jsx-runtime";import{useRef as w,useState as u}from"react";import{Calendar as t}from"../Calendar/Calendar.js";import{FieldBaseIcon as O}from"../TextField/TextField.js";import{IconCalendar as V}from"../../icons/icons/IconCalendar.js";import{MaskedField as q}from"../MaskedField/MaskedField.js";import{Popover as E}from"../Popover/Popover.js";import{bindFieldChromeRef as H}from"../../core/utils/dom.js";import{commitMaskedValue as L}from"../../core/utils/commitMaskedValue.js";import{uRef as X}from"../../core/utils/bundle.js";import{formatDateToDigits as z,parseDigitsToDate as G}from"../../core/utils/date.js";import{popoverDomId as J,hidePopover as K,showPopover as x}from"../../core/utils/popover.js";import k from"./DateField.module.css.js";import{useFallbackId as Q}from"../../core/utils/useFallbackId.js";function U({value:i,onChange:a,label:m,width:F="md",disabled:v=!1,readOnly:h=!1,prefix:R,onClear:g,onClick:y,onFocus:A,inputRef:P,...I}){const C=w(null),n=w(null),N=J(Q()),D=z(i),p=i?.getTime(),[M,s]=u(D),[S,j]=u(p),[B,c]=u(()=>i??new Date),l=!v&&!h;p!==S&&(j(p),s(D));const T=(e,d)=>o(q,{...I,inputRef:X(P,d?H(d):void 0),label:m,width:F,mask:"99.99.9999",value:M,disabled:v,readOnly:h,type:"text",prefix:R??o(O,{children:o(V,{})}),popoverTarget:e?.popoverTarget,popoverTargetAction:e?.popoverTargetAction,onClick:r=>{y?.(r),e?.onClick?.(r),l&&!r.defaultPrevented&&x(n.current)},onFocus:r=>{A?.(r),l&&r.currentTarget.matches(":focus-visible")&&x(n.current)},onChange:r=>{l&&(s(r),L(r,G,f=>{a(f),f&&c(f)}))},onClear:g?()=>{s(""),a(void 0),g()}:void 0});return o("div",{className:k.host,ref:C,children:l?o(E,{id:N,popoverTargetAction:"show",role:"dialog",side:"bottom",align:"start",widthMode:"content",className:k.panel,panelRef:n,onToggle:e=>W(C.current,e),trigger:(e,d)=>T(e,d),children:o(t.Provider,{value:i,viewDate:B,onViewDateChange:c,onChange:e=>{e instanceof Date&&(a(e),c(e),K(n.current))},children:b(t.Root,{children:[b(t.Header,{children:[o(t.Nav,{direction:"prev"}),o(t.Title,{}),o(t.Nav,{direction:"next"})]}),o(t.Body,{})]})})}):T()})}function W(i,a){i?.querySelectorAll("[data-field-control]").forEach(m=>{m.setAttribute("aria-expanded",a?"true":"false")})}export{U as DateField};
1
+ "use client";import{jsx as o,jsxs as D}from"react/jsx-runtime";import{useRef as w,useState as u}from"react";import{Calendar as t}from"../Calendar/Calendar.js";import{FieldBaseIcon as O}from"../TextField/TextField.js";import{IconCalendar as V}from"../../icons/icons/IconCalendar.js";import{MaskedField as q}from"../MaskedField/MaskedField.js";import{Popover as E}from"../Popover/Popover.js";import{bindFieldChromeRef as H}from"../../core/utils/dom.js";import{commitMaskedValue as L}from"../../core/utils/commitMaskedValue.js";import{uRef as X}from"../../core/utils/bundle.js";import{formatDateToDigits as z,parseDigitsToDate as G}from"../../core/utils/date.js";import{popoverDomId as J,hidePopover as K,showPopover as T}from"../../core/utils/popover.js";import k from"./DateField.module.css.js";import{useFallbackId as Q}from"../../core/utils/useFallbackId.js";function U({value:i,onChange:a,label:m,width:F="md",disabled:v=!1,readOnly:h=!1,prefix:R,onClear:g,onClick:y,onFocus:P,inputRef:I,...N}){const C=w(null),n=w(null),A=J(Q()),b=z(i),p=i?.getTime(),[M,s]=u(b),[S,j]=u(p),[B,c]=u(()=>i??new Date),l=!v&&!h;p!==S&&(j(p),s(b));const x=(e,d)=>o(q,{...N,inputRef:X(I,d?H(d):void 0),label:m,width:F,mask:"99.99.9999",value:M,disabled:v,readOnly:h,type:"text",prefix:R??o(O,{children:o(V,{})}),popovertarget:e?.popovertarget,popovertargetaction:e?.popovertargetaction,onClick:r=>{y?.(r),e?.onClick?.(r),l&&!r.defaultPrevented&&T(n.current)},onFocus:r=>{P?.(r),l&&r.currentTarget.matches(":focus-visible")&&T(n.current)},onChange:r=>{l&&(s(r),L(r,G,f=>{a(f),f&&c(f)}))},onClear:g?()=>{s(""),a(void 0),g()}:void 0});return o("div",{className:k.host,ref:C,children:l?o(E,{id:A,popoverTargetAction:"show",role:"dialog",side:"bottom",align:"start",widthMode:"content",className:k.panel,panelRef:n,onToggle:e=>W(C.current,e),trigger:(e,d)=>x(e,d),children:o(t.Provider,{value:i,viewDate:B,onViewDateChange:c,onChange:e=>{e instanceof Date&&(a(e),c(e),K(n.current))},children:D(t.Root,{children:[D(t.Header,{children:[o(t.Nav,{direction:"prev"}),o(t.Title,{}),o(t.Nav,{direction:"next"})]}),o(t.Body,{})]})})}):x()})}function W(i,a){i?.querySelectorAll("[data-field-control]").forEach(m=>{m.setAttribute("aria-expanded",a?"true":"false")})}export{U as DateField};
@@ -1 +1 @@
1
- "use client";import{jsx as i,jsxs as V}from"react/jsx-runtime";import{useRef as X,useId as pe,useState as C}from"react";import{MaskedField as q}from"../MaskedField/MaskedField.js";import{Calendar as p}from"../Calendar/Calendar.js";import{Popover as fe}from"../Popover/Popover.js";import b from"./DateRangeField.module.css.js";import me from"../../styles/utilities.module.css.js";import{cn as Y}from"../../core/utils/cn.js";import{bindFieldChromeRef as ue}from"../../core/utils/dom.js";import{uRef as Z}from"../../core/utils/bundle.js";import{formatDateToDigits as f,parseDigitsToDate as ee}from"../../core/utils/date.js";import{popoverDomId as ge,hidePopover as he,showPopover as G}from"../../core/utils/popover.js";import{useLocale as ve}from"../../locales/localeContext.js";import{ruSlice as be}from"../../locales/slices/dateRangeField.ru.js";import{useFallbackId as Re}from"../../core/utils/useFallbackId.js";const Te={dateRangeField:be},te=e=>!e.start&&!e.end?"":e.start&&!e.end?f(e.start):e.start&&e.end?`${f(e.start)}${f(e.end)}`:"",re=(e,a)=>(e?.getTime()??null)===(a?.getTime()??null);function Ce({isSplit:e,size:a="md",width:R,startLabel:L,endLabel:w,label:D,startDigits:z,endDigits:x,singleDigits:N,disabled:m,readOnly:u,error:S,description:k,prefix:A,postfix:O,onClear:P,clearLabel:I,fieldId:$,inputRef:F,slot:l,anchorRef:s,panelRef:g,interactive:d,onStart:E,onEnd:M,onRange:j}){const c=n=>{l?.onClick?.(n),d&&!n.defaultPrevented&&G(g.current)},B=n=>{d&&n.currentTarget.matches(":focus-visible")&&G(g.current)};return e?V("div",{className:b.splitFields,"data-size":a!=="md"?a:void 0,ref:s,popoverTarget:l?.popoverTarget,popoverTargetAction:l?.popoverTargetAction,onClick:l||d?c:void 0,onFocusCapture:n=>{d&&n.target instanceof HTMLElement&&n.target.matches(":focus-visible")&&G(g.current)},children:[i("div",{className:b.fieldSlot,children:i(q,{inputRef:F,label:L,size:a,mask:"99.99.9999",type:"text",value:z,onChange:E,disabled:m,readOnly:u})}),i("span",{className:Y(me.fCenter,b.dash),"aria-hidden":!0,children:"\u2014"}),i("div",{className:b.fieldSlot,children:i(q,{label:w,size:a,mask:"99.99.9999",type:"text",value:x,onChange:M,disabled:m,readOnly:u})})]}):i(q,{inputRef:Z(F,s?ue(s):void 0),id:$,label:D,size:a,width:R,mask:"99.99.9999 \u2014 99.99.9999",type:"text",value:N,error:S,description:k,prefix:A,postfix:O,onClear:P,clearLabel:I,disabled:m,readOnly:u,popoverTarget:l?.popoverTarget,popoverTargetAction:l?.popoverTargetAction,onClick:c,onFocus:B,onChange:j})}const ae=(e,a)=>{if(e.length===8)return ee(e);if(e.length!==0)return a};function De({value:e,onChange:a,label:R,startLabel:L,endLabel:w,layout:D="single",size:z="md",width:x="md",className:N,disabled:m=!1,readOnly:u=!1,error:S,description:k,prefix:A,postfix:O,onClear:P,clearLabel:I,rootRef:$,inputRef:F,...l}){const{messages:s}=ve(Te),g=X(null),d=X(null),E=ge(Re()),M=pe(),j=D==="split",c=!m&&!u,B=e.start?.getTime(),n=e.end?.getTime(),H=`${B??""}|${n??""}`,[ie,J]=C(()=>f(e.start)),[ne,K]=C(()=>f(e.end)),[oe,Q]=C(()=>te(e)),[le,de]=C(H),[se,T]=C(()=>e.end??e.start??new Date);H!==le&&(de(H),J(f(e.start)),K(f(e.end)),Q(te(e)));const y=t=>{re(t.start,e.start)&&re(t.end,e.end)||a(t)},U=(t,o)=>{if(!c||(o==="start"?J(t):K(t),t.length!==0&&t.length!==8))return;const r=t?ee(t):void 0;t&&!r||(o==="start"?y({start:r,end:e.end&&r&&r>e.end?void 0:e.end}):e.start&&r&&r<e.start?y({start:r,end:e.start}):y({start:e.start,end:r}),r&&T(r))},ce=t=>{if(!c)return;Q(t);const o=t.slice(0,8),r=t.slice(8,16);let h=ae(o,e.start),v=ae(r,e.end);h&&v&&v<h&&([h,v]=[v,h]),y({start:h,end:v});const _=r.length===8?v:o.length===8?h:void 0;_&&T(_)},W=(t,o)=>i(Ce,{isSplit:j,size:z,width:x,startLabel:L??s.dateRangeField.start,endLabel:w??s.dateRangeField.end,label:R??s.dateRangeField.label,startDigits:ie,endDigits:ne,singleDigits:oe,disabled:m,readOnly:u,error:S,description:k,prefix:A,postfix:O,onClear:P,clearLabel:I,fieldId:M,inputRef:F,slot:t,anchorRef:o,panelRef:d,interactive:c,onStart:r=>U(r,"start"),onEnd:r=>U(r,"end"),onRange:ce});return i("div",{ref:Z($,g),className:Y(b.root,N),"data-layout":D,"data-width":x==="full"?"full":void 0,...l,children:c?i(fe,{id:E,popoverTargetAction:"show",role:"dialog",side:"bottom",align:"start",widthMode:"content",className:b.panel,panelRef:d,onToggle:t=>xe(g.current,t),trigger:(t,o)=>W(t,o),children:i(p.Provider,{selectionMode:"range",value:e,viewDate:se,onViewDateChange:T,onChange:t=>{t instanceof Date||(a(t),t.end?T(t.end):t.start&&T(t.start),t.start&&t.end&&he(d.current))},children:V(p.Root,{children:[V(p.Header,{children:[i(p.Nav,{direction:"prev"}),i(p.Title,{}),i(p.Nav,{direction:"next"})]}),i(p.Body,{})]})})}):W()})}function xe(e,a){e?.querySelectorAll("[data-field-control]").forEach(R=>{R.setAttribute("aria-expanded",a?"true":"false")})}export{De as DateRangeField};
1
+ "use client";import{jsx as i,jsxs as q}from"react/jsx-runtime";import{useRef as X,useId as pe,useState as D}from"react";import{MaskedField as G}from"../MaskedField/MaskedField.js";import{Calendar as p}from"../Calendar/Calendar.js";import{Popover as fe}from"../Popover/Popover.js";import b from"./DateRangeField.module.css.js";import me from"../../styles/utilities.module.css.js";import{cn as Y}from"../../core/utils/cn.js";import{bindFieldChromeRef as ue}from"../../core/utils/dom.js";import{uRef as Z}from"../../core/utils/bundle.js";import{formatDateToDigits as f,parseDigitsToDate as ee}from"../../core/utils/date.js";import{popoverDomId as ge,hidePopover as he,showPopover as J}from"../../core/utils/popover.js";import{useLocale as ve}from"../../locales/localeContext.js";import{ruSlice as be}from"../../locales/slices/dateRangeField.ru.js";import{useFallbackId as Re}from"../../core/utils/useFallbackId.js";const Ce={dateRangeField:be},te=e=>!e.start&&!e.end?"":e.start&&!e.end?f(e.start):e.start&&e.end?`${f(e.start)}${f(e.end)}`:"",re=(e,a)=>(e?.getTime()??null)===(a?.getTime()??null);function De({isSplit:e,size:a="md",width:R,startLabel:F,endLabel:T,label:x,startDigits:N,endDigits:y,singleDigits:S,disabled:m,readOnly:u,error:k,description:z,prefix:O,postfix:P,onClear:A,clearLabel:I,fieldId:$,inputRef:L,slot:l,anchorRef:s,panelRef:g,interactive:d,onStart:E,onEnd:M,onRange:j}){const c=n=>{l?.onClick?.(n),d&&!n.defaultPrevented&&J(g.current)},B=n=>{d&&n.currentTarget.matches(":focus-visible")&&J(g.current)};return e?q("div",{className:b.splitFields,"data-size":a!=="md"?a:void 0,ref:s,popovertarget:l?.popovertarget,popovertargetaction:l?.popovertargetaction,onClick:l||d?c:void 0,onFocusCapture:n=>{d&&n.target instanceof HTMLElement&&n.target.matches(":focus-visible")&&J(g.current)},children:[i("div",{className:b.fieldSlot,children:i(G,{inputRef:L,label:F,size:a,mask:"99.99.9999",type:"text",value:N,onChange:E,disabled:m,readOnly:u})}),i("span",{className:Y(me.fCenter,b.dash),"aria-hidden":!0,children:"\u2014"}),i("div",{className:b.fieldSlot,children:i(G,{label:T,size:a,mask:"99.99.9999",type:"text",value:y,onChange:M,disabled:m,readOnly:u})})]}):i(G,{inputRef:Z(L,s?ue(s):void 0),id:$,label:x,size:a,width:R,mask:"99.99.9999 \u2014 99.99.9999",type:"text",value:S,error:k,description:z,prefix:O,postfix:P,onClear:A,clearLabel:I,disabled:m,readOnly:u,popovertarget:l?.popovertarget,popovertargetaction:l?.popovertargetaction,onClick:c,onFocus:B,onChange:j})}const ae=(e,a)=>{if(e.length===8)return ee(e);if(e.length!==0)return a};function xe({value:e,onChange:a,label:R,startLabel:F,endLabel:T,layout:x="single",size:N="md",width:y="md",className:S,disabled:m=!1,readOnly:u=!1,error:k,description:z,prefix:O,postfix:P,onClear:A,clearLabel:I,rootRef:$,inputRef:L,...l}){const{messages:s}=ve(Ce),g=X(null),d=X(null),E=ge(Re()),M=pe(),j=x==="split",c=!m&&!u,B=e.start?.getTime(),n=e.end?.getTime(),H=`${B??""}|${n??""}`,[ie,K]=D(()=>f(e.start)),[ne,Q]=D(()=>f(e.end)),[oe,U]=D(()=>te(e)),[le,de]=D(H),[se,C]=D(()=>e.end??e.start??new Date);H!==le&&(de(H),K(f(e.start)),Q(f(e.end)),U(te(e)));const w=t=>{re(t.start,e.start)&&re(t.end,e.end)||a(t)},V=(t,o)=>{if(!c||(o==="start"?K(t):Q(t),t.length!==0&&t.length!==8))return;const r=t?ee(t):void 0;t&&!r||(o==="start"?w({start:r,end:e.end&&r&&r>e.end?void 0:e.end}):e.start&&r&&r<e.start?w({start:r,end:e.start}):w({start:e.start,end:r}),r&&C(r))},ce=t=>{if(!c)return;U(t);const o=t.slice(0,8),r=t.slice(8,16);let h=ae(o,e.start),v=ae(r,e.end);h&&v&&v<h&&([h,v]=[v,h]),w({start:h,end:v});const _=r.length===8?v:o.length===8?h:void 0;_&&C(_)},W=(t,o)=>i(De,{isSplit:j,size:N,width:y,startLabel:F??s.dateRangeField.start,endLabel:T??s.dateRangeField.end,label:R??s.dateRangeField.label,startDigits:ie,endDigits:ne,singleDigits:oe,disabled:m,readOnly:u,error:k,description:z,prefix:O,postfix:P,onClear:A,clearLabel:I,fieldId:M,inputRef:L,slot:t,anchorRef:o,panelRef:d,interactive:c,onStart:r=>V(r,"start"),onEnd:r=>V(r,"end"),onRange:ce});return i("div",{ref:Z($,g),className:Y(b.root,S),"data-layout":x,"data-width":y==="full"?"full":void 0,...l,children:c?i(fe,{id:E,popoverTargetAction:"show",role:"dialog",side:"bottom",align:"start",widthMode:"content",className:b.panel,panelRef:d,onToggle:t=>ye(g.current,t),trigger:(t,o)=>W(t,o),children:i(p.Provider,{selectionMode:"range",value:e,viewDate:se,onViewDateChange:C,onChange:t=>{t instanceof Date||(a(t),t.end?C(t.end):t.start&&C(t.start),t.start&&t.end&&he(d.current))},children:q(p.Root,{children:[q(p.Header,{children:[i(p.Nav,{direction:"prev"}),i(p.Title,{}),i(p.Nav,{direction:"next"})]}),i(p.Body,{})]})})}):W()})}function ye(e,a){e?.querySelectorAll("[data-field-control]").forEach(R=>{R.setAttribute("aria-expanded",a?"true":"false")})}export{xe as DateRangeField};
@@ -0,0 +1 @@
1
+ "use client";import{jsx as r}from"react/jsx-runtime";import{Text as f}from"../Text/Text.js";import{Title as n}from"../Title/Title.js";import{Tabs as p}from"../Tabs/Tabs.js";import{cn as t}from"../../core/utils/cn.js";import o from"./Header.module.css.js";const l=({className:e,rootRef:a,...s})=>r("div",{ref:a,"data-page-header":"",className:t(o.header,e),...s}),m=({className:e,level:a=3,...s})=>r(n,{level:a,className:t(o.title,e),...s}),i=({className:e,size:a="sm",color:s="secondary",...d})=>r(f,{size:a,color:s,className:e,...d}),c=({className:e,variant:a="line",...s})=>r(p,{...s,variant:a,className:t(o.tabs,e),"data-chrome":""}),N=Object.assign(l,{Title:m,Subtitle:i,Tabs:c});export{N as Header,l as HeaderRoot,i as HeaderSubtitle,c as HeaderTabs,m as HeaderTitle};
@@ -0,0 +1 @@
1
+ "use client";import{injectCss as a}from"../../core/utils/injectCss.js";var o=".RUooH{align-items:stretch;\u001e;display:flex;flex-direction:column;gap:\u00021);margin:0}.KJawI,.RUooH{min-width:0;width:100%}.KJawI{margin-top:\u00023)}";const t={header:"RUooH",tabs:"KJawI"};a(o);export{t as default};
@@ -1 +1 @@
1
- "use client";import{jsx as u}from"react/jsx-runtime";import{cn as L}from"../../core/utils/cn.js";import o from"./Layout.module.css.js";function e(a,{as:t="div",className:r,sticky:c,align:g,padding:l,gap:y,style:f,rootRef:m,...p}){return u(t,{ref:m,...p,className:L(a,r),"data-padding":l,"data-gap":y,"data-sticky":c?"":void 0,"data-align":g,style:f})}const n=a=>e(o.root,a),s=({as:a="header",...t})=>e(o.header,{as:a,...t}),i=a=>e(o.content,a),d=({as:a="footer",align:t="start",...r})=>e(o.footer,{as:a,align:t,...r}),h=Object.assign(n,{Header:s,Content:i,Footer:d});export{h as Layout,i as LayoutContent,d as LayoutFooter,s as LayoutHeader,n as LayoutRoot};
1
+ "use client";import{jsx as R}from"react/jsx-runtime";import{useRef as k}from"react";import{cn as L}from"../../core/utils/cn.js";import{uRef as h}from"../../core/utils/bundle.js";import{useStickyChrome as C}from"../../hooks/useStickyChrome.js";import s from"./Layout.module.css.js";function c(t,r,a){const o=k(null);return C(o,{enabled:r,edge:a,offset:a==="start"?0:1}),h(o,t)}function i(t,{as:r="div",className:a,sticky:o,variant:e,align:n,padding:f,gap:l,style:p,rootRef:g,...v}){return R(r,{ref:g,...v,className:L(t,a),"data-padding":f,"data-gap":l,"data-sticky":o?"":void 0,"data-variant":e,"data-align":n,style:p})}const d=t=>i(s.root,t),u=({as:t="header",sticky:r,variant:a,rootRef:o,...e})=>{const n=c(o,!!(r&&a),"start");return i(s.header,{as:t,sticky:r,variant:a,rootRef:n,...e})},m=t=>i(s.content,t),y=({as:t="footer",align:r="start",sticky:a,variant:o,rootRef:e,...n})=>{const f=c(e,!!(a&&o),"end");return i(s.footer,{as:t,align:r,sticky:a,variant:o,rootRef:f,...n})},b=Object.assign(d,{Header:u,Content:m,Footer:y});export{b as Layout,m as LayoutContent,y as LayoutFooter,u as LayoutHeader,d as LayoutRoot};
@@ -1 +1 @@
1
- "use client";import{injectCss as a}from"../../core/utils/injectCss.js";var t=".tyzJ8{\u0014layout-pad:0;\u0014layout-gap:0;\u001e;display:flex;flex:1 1 auto;flex-direction:column;height:100%;min-height:0;min-width:0;overflow:hidden auto;width:100%}.tyzJ8[data-padding=sm]{\u0014layout-pad:\u00023)}.tyzJ8[data-padding=md]{\u0014layout-pad:\u00024)}.tyzJ8[data-padding=lg]{\u0014layout-pad:\u00026)}.tyzJ8[data-gap=sm]{\u0014layout-gap:\u00023)}.tyzJ8[data-gap=md]{\u0014layout-gap:\u00024)}.tyzJ8[data-gap=lg]{\u0014layout-gap:\u00026)}.tyzJ8[data-gap]{\u0011layout-gap)}.tyzJ8[data-padding]>:is(.j6ao5,.Wa4rZ,._266Qh){\u001e;padding-inline:\u0013layout-pad)}.tyzJ8[data-padding]>:is(.j6ao5,._266Qh:first-child,.Wa4rZ:first-child){padding-block-start:\u0013layout-pad)}.tyzJ8[data-padding]>:is(._266Qh,.j6ao5:last-child,.Wa4rZ:last-child){padding-block-end:\u0013layout-pad)}.tyzJ8 ._266Qh,.tyzJ8 .j6ao5{flex-shrink:0}.tyzJ8 .Wa4rZ{flex:1 0 auto;min-width:0}.tyzJ8 ._266Qh{align-items:center;display:flex;gap:\u00023);justify-content:flex-start}[data-align=center]:is(.tyzJ8 ._266Qh){justify-content:center}[data-align=end]:is(.tyzJ8 ._266Qh){justify-content:flex-end}[data-align=space-between]:is(.tyzJ8 ._266Qh){justify-content:space-between}.tyzJ8 ._266Qh[data-sticky],.tyzJ8 .j6ao5[data-sticky]{position:sticky;z-index:\u0013g-z-raised)}.tyzJ8 .j6ao5[data-sticky]{top:0}:is(.tyzJ8 .j6ao5[data-sticky]):after{background-color:inherit;content:\"\";\u000flayout-gap);left:calc(\u0013layout-pad)*-1);margin-top:1px;pointer-events:none;position:absolute;right:calc(\u0013layout-pad)*-1);top:100%}.tyzJ8 ._266Qh[data-sticky]{bottom:0}:is(.tyzJ8 ._266Qh[data-sticky]):before{background-color:inherit;bottom:100%;content:\"\";\u000flayout-gap);left:calc(\u0013layout-pad)*-1);margin-bottom:1px;pointer-events:none;position:absolute;right:calc(\u0013layout-pad)*-1)}";const o={root:"tyzJ8",header:"j6ao5",content:"Wa4rZ",footer:"_266Qh"};a(t);export{o as default};
1
+ "use client";import{injectCss as a}from"../../core/utils/injectCss.js";var t=".tyzJ8{\u0014layout-pad:0;\u0014layout-gap:0;\u001e;display:flex;flex:1 1 auto;flex-direction:column;height:100%;min-height:0;min-width:0;overflow:hidden auto;width:100%}.tyzJ8[data-padding=sm]{\u0014layout-pad:\u00023)}.tyzJ8[data-padding=md]{\u0014layout-pad:\u00025)}.tyzJ8[data-padding=lg]{\u0014layout-pad:\u00027)}.tyzJ8[data-gap=sm]{\u0014layout-gap:\u00023)}.tyzJ8[data-gap=md]{\u0014layout-gap:\u00024)}.tyzJ8[data-gap=lg]{\u0014layout-gap:\u00026)}.tyzJ8[data-gap]{gap:calc(\u0013layout-gap)/2)}.tyzJ8[data-padding]>:is(.j6ao5,.Wa4rZ,._266Qh){\u001e;padding-inline:\u0013layout-pad)}.tyzJ8[data-padding]>:is(.j6ao5,._266Qh){padding-block:\u0013layout-pad)}.tyzJ8[data-gap]>.j6ao5{padding-bottom:calc(\u0013layout-gap)/2)}.tyzJ8[data-gap]>.j6ao5:has([data-page-header]){margin-bottom:calc(\u0013layout-gap)/-2);padding-bottom:0}.tyzJ8[data-gap]>.j6ao5:has([data-page-header])+.Wa4rZ{padding-top:\u0013layout-gap)}.tyzJ8[data-gap]>._266Qh{padding-top:calc(\u0013layout-gap)/2)}.tyzJ8[data-padding]>.Wa4rZ:first-child{padding-block-start:\u0013layout-pad)}.tyzJ8[data-padding]>.Wa4rZ:last-child{padding-block-end:\u0013layout-pad)}.tyzJ8 ._266Qh,.tyzJ8 .j6ao5{flex-shrink:0}.tyzJ8 .Wa4rZ{flex:1 0 auto;min-width:0}.tyzJ8 ._266Qh{align-items:center;display:flex;gap:\u00023);justify-content:flex-start}[data-align=center]:is(.tyzJ8 ._266Qh){justify-content:center}[data-align=end]:is(.tyzJ8 ._266Qh){justify-content:flex-end}[data-align=space-between]:is(.tyzJ8 ._266Qh){justify-content:space-between}.tyzJ8 ._266Qh[data-sticky],.tyzJ8 .j6ao5[data-sticky]{position:sticky;z-index:\u0013g-z-raised)}.tyzJ8 .j6ao5[data-sticky]{top:0}.tyzJ8 ._266Qh[data-sticky]{bottom:0}\u0016primary]:is(.tyzJ8 [data-sticky][data-scrolled]:is(.j6ao5,._266Qh)){background-color:\u0012\u0001bg) 42%,\u0001surface))}\u0016secondary]:is(.tyzJ8 [data-sticky][data-scrolled]:is(.j6ao5,._266Qh)){\u0007color-bg)}\u0016tinted]:is(.tyzJ8 [data-sticky][data-scrolled]:is(.j6ao5,._266Qh)){background-color:\u0012\u0001brand) 10%,\u0001surface))}";const d={root:"tyzJ8",header:"j6ao5",content:"Wa4rZ",footer:"_266Qh"};a(t);export{d as default};
@@ -1 +1 @@
1
- "use client";import{jsx as f}from"react/jsx-runtime";import{useRef as u,useMemo as C,useLayoutEffect as ne}from"react";import{getListboxOptionDomId as ie}from"../../core/utils/listboxOptions.js";import{buildListboxView as le,LISTBOX_HIGHLIGHTED_ATTR as I,LISTBOX_INDEX_ATTR as se}from"./Listbox.utils.js";import{ListboxGroup as ce}from"./ListboxGroup.js";import{ListboxRow as ae}from"./ListboxRow.js";import{Separator as ue}from"../Separator/Separator.js";import{VirtualList as de}from"../VirtualList/VirtualList.js";import{cn as me}from"../../core/utils/cn.js";import{uRef as fe}from"../../core/utils/bundle.js";import{handleRovingFocusKeyDown as pe}from"../../core/utils/keyboard.js";import{useLocale as be}from"../../locales/localeContext.js";import ve from"../../styles/scrollable.module.css.js";import ye from"../../styles/utilities.module.css.js";import x from"./Listbox.module.css.js";import{ruSlice as ge}from"../../locales/slices/listbox.ru.js";import{useFallbackId as he}from"../../core/utils/useFallbackId.js";import{useSelectionRoot as Ie}from"../../base/SelectionGroup/useSelectionRoot.js";const xe={listbox:ge},ke=[],Le=100,Te=40,we=1,V='[role="option"]:not([disabled]):not([hidden])';function Ee(s){return s.type==="separator"?s.key:s.option.value}function Ae(s,d){const l=`${s}-option-`;if(!d.startsWith(l))return;const a=Number(d.slice(l.length));return Number.isInteger(a)?a:void 0}function Se({options:s,groups:d,value:l=ke,multiple:a=!1,onSelect:k,customRenderOption:L,id:B,"aria-label":K,"aria-labelledby":_,noOptionsText:$,loading:F=!1,className:q,showCheck:z=!1,navigation:G="roving",activeDescendantId:b,disabled:m=!1,multiline:P=!1,virtualized:X,onKeyDown:j,onClick:U,rootRef:J,controlRef:T,...Q}){const{t:W}=be(xe),Y=$??W("listbox.noOptions"),v=he(B),p=u(null),g=u(null),w=G==="roving",r=C(()=>le(s,d),[s,d]),Z=C(()=>new Set(l),[l]),E=r.options.length,y=!d?.length&&(X??E>Le),A=u(k);A.current=k;const S=u(r);S.current=r;const H=u(l);H.current=l;const O=Ie({type:a?"checkbox":"radio",value:a?l:l[0]??"",onChange:e=>{const t=H.current;let o;if(a){const n=Array.isArray(e)?[...e]:[];o=n.find(c=>!t.includes(c))??t.find(c=>!n.includes(c))}else typeof e=="string"&&(o=e);if(!o)return;const i=S.current.options.find(n=>n.value===o);i&&A.current?.(o,i)},disabled:m,activateOnFocus:!1,orientation:"vertical"}),R=u(r.slots);R.current=r.slots;const ee=u(e=>R.current[e]?.type==="separator"?we:Te).current,D=e=>{const t=p.current;if(!t)return;t.querySelectorAll(`[${I}]`).forEach(i=>{i.removeAttribute(I)});let o=document.getElementById(e);if(!(o instanceof HTMLElement)||!t.contains(o)){const i=Ae(v,e),n=i===void 0?void 0:r.slotIndexByOption[i];n!==void 0&&g.current?.scrollToIndex(n),o=document.getElementById(e)}!(o instanceof HTMLElement)||!t.contains(o)||(o.setAttribute(I,"true"),o.scrollIntoView({block:"nearest"}))},te={focusFirst(){const e=p.current?.querySelector(V);e&&(e.focus({preventScroll:!0}),e.scrollIntoView({block:"nearest"}))},selectHighlighted(){const e=document.activeElement,t=p.current;!(e instanceof HTMLElement)||!t?.contains(e)||e.getAttribute("role")==="option"&&e.click()},scrollToId:D};T&&(T.current=te),ne(()=>{b&&D(b)},[b]);const oe=e=>{if(j?.(e),!w||m||E===0||e.defaultPrevented)return;const t=Array.from(e.currentTarget.querySelectorAll(V));if(t.length===0)return;const o=document.activeElement,i=o instanceof HTMLElement?t.indexOf(o):-1;if(e.key==="Enter"||e.key===" "){o instanceof HTMLElement&&t.includes(o)&&(e.preventDefault(),o.click());return}if(i<0){const n=e.key==="ArrowUp"||e.key==="End"?t.length-1:0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp"&&e.key!=="Home"&&e.key!=="End")return;e.preventDefault(),t[n]?.focus({preventScroll:!0}),t[n]?.scrollIntoView({block:"nearest"});return}pe(e,{currentIndex:i,length:t.length,orientation:"vertical",onMove:n=>{const c=t[n];if(!c||(c.focus({preventScroll:!0}),c.scrollIntoView({block:"nearest"}),!y))return;const M=c.getAttribute(se);if(M==null)return;const N=r.slotIndexByOption[Number(M)];N!==void 0&&g.current?.scrollToIndex(N)}})},re=e=>{U?.(e),!(m||e.defaultPrevented)&&O.onClick(e)},h=e=>{if(e.type==="separator")return f(ue,{decorative:!0},e.key);const t=e.option,o=e.index;return f(ae,{option:t,index:o,id:ie(v,o),selected:Z.has(t.value),disabled:m||!!t.disabled,showCheck:z,multiline:P,children:L?L(t):t.label},`${t.value}-${o}`)};return f("div",{...Q,...O.dataProps,ref:fe(p,J),id:v,className:me(ye.fColumn,x.listbox,y&&ve.area,y&&x.listboxVirtualized,q),role:"listbox","aria-label":K,"aria-labelledby":_,"aria-multiselectable":a||void 0,"aria-busy":F||void 0,"aria-disabled":m||void 0,"aria-activedescendant":b,tabIndex:w&&!m?0:-1,onKeyDown:oe,onClick:re,children:r.slots.length===0?f("div",{className:x.emptyState,"aria-live":"polite",children:Y}):y?f(de,{controlRef:g,scrollElement:p,items:r.slots,estimateSize:ee,gap:4,getItemKey:Ee,renderItem:({item:e})=>h(e)}):r.groups?r.groups.map(e=>f(ce,{id:e.id,label:e.label,listboxId:v,children:e.slots.map(h)},e.id)):r.slots.map(h)})}export{Se as Listbox};
1
+ "use client";import{jsx as f}from"react/jsx-runtime";import{useRef as u,useMemo as C,useLayoutEffect as ne}from"react";import{getListboxOptionDomId as ie}from"../../core/utils/listboxOptions.js";import{buildListboxView as le,LISTBOX_HIGHLIGHTED_ATTR as I,LISTBOX_INDEX_ATTR as se}from"./Listbox.utils.js";import{ListboxGroup as ce}from"./ListboxGroup.js";import{ListboxRow as ae}from"./ListboxRow.js";import{Separator as ue}from"../Separator/Separator.js";import{VirtualList as de}from"../VirtualList/VirtualList.js";import{cn as me}from"../../core/utils/cn.js";import{uRef as fe}from"../../core/utils/bundle.js";import{handleRovingFocusKeyDown as pe}from"../../core/utils/keyboard.js";import{useLocale as be}from"../../locales/localeContext.js";import ve from"../../styles/scrollable.module.css.js";import ye from"../../styles/utilities.module.css.js";import x from"./Listbox.module.css.js";import{ruSlice as ge}from"../../locales/slices/listbox.ru.js";import{useFallbackId as he}from"../../core/utils/useFallbackId.js";import{useSelectionRoot as Ie}from"../../base/SelectionGroup/useSelectionRoot.js";const xe={listbox:ge},ke=[],Le=100,Te=40,we=1,V='[role="option"]:not([disabled]):not([hidden])';function Ee(s){return s.type==="separator"?s.key:s.option.value}function Ae(s,d){const l=`${s}-option-`;if(!d.startsWith(l))return;const a=Number(d.slice(l.length));return Number.isInteger(a)?a:void 0}function Se({options:s,groups:d,value:l=ke,multiple:a=!1,onSelect:k,customRenderOption:L,id:B,"aria-label":K,"aria-labelledby":_,noOptionsText:$,loading:F=!1,className:q,showCheck:z=!1,navigation:G="roving",activeDescendantId:b,disabled:m=!1,multiline:P=!1,virtualized:X,onKeyDown:j,onClick:U,rootRef:J,controlRef:T,...Q}){const{t:W}=be(xe),Y=$??W("listbox.noOptions"),v=he(B),p=u(null),g=u(null),w=G==="roving",r=C(()=>le(s,d),[s,d]),Z=C(()=>new Set(l),[l]),E=r.options.length,y=!d?.length&&(X??E>Le),A=u(k);A.current=k;const S=u(r);S.current=r;const H=u(l);H.current=l;const O=Ie({type:a?"checkbox":"radio",value:a?l:l[0]??"",onChange:e=>{const t=H.current;let o;if(a){const n=Array.isArray(e)?[...e]:[];o=n.find(c=>!t.includes(c))??t.find(c=>!n.includes(c))}else typeof e=="string"&&(o=e);if(!o)return;const i=S.current.options.find(n=>n.value===o);i&&A.current?.(o,i)},disabled:m,activateOnFocus:!1,orientation:"vertical"}),R=u(r.slots);R.current=r.slots;const ee=u(e=>R.current[e]?.type==="separator"?we:Te).current,D=e=>{const t=p.current;if(!t)return;t.querySelectorAll(`[${I}]`).forEach(i=>{i.removeAttribute(I)});let o=document.getElementById(e);if(!(o instanceof HTMLElement)||!t.contains(o)){const i=Ae(v,e),n=i===void 0?void 0:r.slotIndexByOption[i];n!==void 0&&g.current?.scrollToIndex(n),o=document.getElementById(e)}!(o instanceof HTMLElement)||!t.contains(o)||(o.setAttribute(I,"true"),o.scrollIntoView({block:"nearest"}))},te={focusFirst(){const e=p.current?.querySelector(V);e&&(e.focus({preventScroll:!0}),e.scrollIntoView({block:"nearest"}))},selectHighlighted(){const e=document.activeElement,t=p.current;!(e instanceof HTMLElement)||!t?.contains(e)||e.getAttribute("role")==="option"&&e.click()},scrollToId:D};T&&(T.current=te),ne(()=>{b&&D(b)},[b]);const oe=e=>{if(j?.(e),!w||m||E===0||e.defaultPrevented)return;const t=Array.from(e.currentTarget.querySelectorAll(V));if(t.length===0)return;const o=document.activeElement,i=o instanceof HTMLElement?t.indexOf(o):-1;if(e.key==="Enter"||e.key===" "){o instanceof HTMLElement&&t.includes(o)&&(e.preventDefault(),o.click());return}if(i<0){const n=e.key==="ArrowUp"||e.key==="End"?t.length-1:0;if(e.key!=="ArrowDown"&&e.key!=="ArrowUp"&&e.key!=="Home"&&e.key!=="End")return;e.preventDefault(),t[n]?.focus({preventScroll:!0}),t[n]?.scrollIntoView({block:"nearest"});return}pe(e,{currentIndex:i,length:t.length,orientation:"vertical",onMove:n=>{const c=t[n];if(!c||(c.focus({preventScroll:!0}),c.scrollIntoView({block:"nearest"}),!y))return;const M=c.getAttribute(se);if(M==null)return;const N=r.slotIndexByOption[Number(M)];N!==void 0&&g.current?.scrollToIndex(N)}})},re=e=>{U?.(e),!(m||e.defaultPrevented)&&O.onClick(e)},h=e=>{if(e.type==="separator")return f(ue,{decorative:!0,"data-separator":""},e.key);const t=e.option,o=e.index;return f(ae,{option:t,index:o,id:ie(v,o),selected:Z.has(t.value),disabled:m||!!t.disabled,showCheck:z,multiline:P,children:L?L(t):t.label},`${t.value}-${o}`)};return f("div",{...Q,...O.dataProps,ref:fe(p,J),id:v,className:me(ye.fColumn,x.listbox,y&&ve.area,y&&x.listboxVirtualized,q),role:"listbox","aria-label":K,"aria-labelledby":_,"aria-multiselectable":a||void 0,"aria-busy":F||void 0,"aria-disabled":m||void 0,"aria-activedescendant":b,tabIndex:w&&!m?0:-1,onKeyDown:oe,onClick:re,children:r.slots.length===0?f("div",{className:x.emptyState,"aria-live":"polite",children:Y}):y?f(de,{controlRef:g,scrollElement:p,items:r.slots,estimateSize:ee,gap:4,getItemKey:Ee,renderItem:({item:e})=>h(e)}):r.groups?r.groups.map(e=>f(ce,{id:e.id,label:e.label,listboxId:v,children:e.slots.map(h)},e.id)):r.slots.map(h)})}export{Se as Listbox};
@@ -1 +1 @@
1
- "use client";import{jsx as l,jsxs as K,Fragment as j}from"react/jsx-runtime";import{useRef as x,useCallback as B}from"react";import{ActionList as O}from"../ActionList/ActionList.js";import{Dropdown as X}from"../Dropdown/Dropdown.js";import u from"./Menu.module.css.js";import{cn as $}from"../../core/utils/cn.js";import{useLocale as q}from"../../locales/localeContext.js";import{popoverFromInvoker as H,showPopover as S}from"../../core/utils/popover.js";import{renderChildren as Y}from"../../core/utils/renderChildren.js";import{ruSlice as z}from"../../locales/slices/menu.ru.js";const G={menu:z};function J({trigger:p,children:b,items:y,groups:T,onOpenChange:C,popupRef:i,align:L="right",widthMode:M,mobileTitle:R,emptyText:E,onAction:k,className:m,tabIndex:D,"aria-label":N,onContextMenu:P,onKeyDown:A,rootRef:s,...d}){const{t:f}=q(G),r=p==="context",c=x(null),g=x(null),F=B(e=>{c.current=e,typeof i=="function"?i(e):i&&(i.current=e)},[i]),I=(e,n)=>{const t=H(g.current);return t&&(t.style.setProperty("--altum-menu-x",`${n}px`),t.style.setProperty("--altum-menu-y",`${e}px`),t)},v=e=>{e?S(e):c.current?.show()},h=(e,n,t=0)=>{const o=I(e,n);if(t&2){const a=()=>{window.removeEventListener("pointerup",a,!0),window.removeEventListener("pointercancel",a,!0),v(o)};window.addEventListener("pointerup",a,!0),window.addEventListener("pointercancel",a,!0);return}queueMicrotask(()=>v(o))},w=l(X,{rootRef:r?void 0:s,className:r?u.host:m,popupRef:F,onOpenChange:C,popupRole:"none",align:r?"left":L,widthMode:M,mobileTitle:R??f("menu.mobileTitle"),panelClassName:r?u.menu:void 0,trigger:(e,n)=>{if(!r)return Y({children:p,props:e,contentRef:n});const{popoverTarget:t}=e;return l("span",{ref:o=>{g.current=o,n(o)},tabIndex:-1,className:u.anchor,"aria-hidden":!0,popoverTarget:t})},...r?{}:d,children:l(O,{"aria-label":N??f(r?"menu.contextAriaLabel":"menu.ariaLabel"),items:y,groups:T,emptyText:E,onAction:e=>{k?.(e),c.current?.hide()}})});return r?K(j,{children:[l("div",{ref:s,className:$(u.target,m),...d,tabIndex:D??0,onContextMenu:e=>{if(P?.(e),e.defaultPrevented)return;e.preventDefault();let n=e.clientX,t=e.clientY;if(!n&&!t){const o=e.currentTarget.getBoundingClientRect();n=o.left,t=o.bottom}h(t,n,e.buttons)},onKeyDown:e=>{if(A?.(e),e.defaultPrevented||e.key!=="ContextMenu"&&!(e.shiftKey&&e.key==="F10"))return;e.preventDefault();const n=document.activeElement,t=(n instanceof HTMLElement&&e.currentTarget.contains(n)?n:e.currentTarget).getBoundingClientRect();h(t.bottom,t.left,0)},children:b}),w]}):w}export{J as Menu};
1
+ "use client";import{jsx as l,jsxs as K,Fragment as j}from"react/jsx-runtime";import{useRef as x,useCallback as B}from"react";import{ActionList as O}from"../ActionList/ActionList.js";import{Dropdown as X}from"../Dropdown/Dropdown.js";import u from"./Menu.module.css.js";import{cn as $}from"../../core/utils/cn.js";import{useLocale as q}from"../../locales/localeContext.js";import{popoverFromInvoker as H,showPopover as S}from"../../core/utils/popover.js";import{renderChildren as Y}from"../../core/utils/renderChildren.js";import{ruSlice as z}from"../../locales/slices/menu.ru.js";const G={menu:z};function J({trigger:p,children:b,items:y,groups:C,onOpenChange:L,popupRef:i,align:M="right",widthMode:R,mobileTitle:T,emptyText:E,onAction:k,className:m,tabIndex:D,"aria-label":N,onContextMenu:P,onKeyDown:A,rootRef:s,...d}){const{t:f}=q(G),r=p==="context",c=x(null),g=x(null),F=B(e=>{c.current=e,typeof i=="function"?i(e):i&&(i.current=e)},[i]),I=(e,n)=>{const t=H(g.current);return t&&(t.style.setProperty("--altum-menu-x",`${n}px`),t.style.setProperty("--altum-menu-y",`${e}px`),t)},v=e=>{e?S(e):c.current?.show()},h=(e,n,t=0)=>{const o=I(e,n);if(t&2){const a=()=>{window.removeEventListener("pointerup",a,!0),window.removeEventListener("pointercancel",a,!0),v(o)};window.addEventListener("pointerup",a,!0),window.addEventListener("pointercancel",a,!0);return}queueMicrotask(()=>v(o))},w=l(X,{rootRef:r?void 0:s,className:r?u.host:m,popupRef:F,onOpenChange:L,popupRole:"none",align:r?"left":M,widthMode:R,mobileTitle:T??f("menu.mobileTitle"),panelClassName:r?u.menu:void 0,trigger:(e,n)=>{if(!r)return Y({children:p,props:e,contentRef:n});const{popovertarget:t}=e;return l("span",{ref:o=>{g.current=o,n(o)},tabIndex:-1,className:u.anchor,"aria-hidden":!0,popovertarget:t})},...r?{}:d,children:l(O,{"aria-label":N??f(r?"menu.contextAriaLabel":"menu.ariaLabel"),items:y,groups:C,emptyText:E,onAction:e=>{k?.(e),c.current?.hide()}})});return r?K(j,{children:[l("div",{ref:s,className:$(u.target,m),...d,tabIndex:D??0,onContextMenu:e=>{if(P?.(e),e.defaultPrevented)return;e.preventDefault();let n=e.clientX,t=e.clientY;if(!n&&!t){const o=e.currentTarget.getBoundingClientRect();n=o.left,t=o.bottom}h(t,n,e.buttons)},onKeyDown:e=>{if(A?.(e),e.defaultPrevented||e.key!=="ContextMenu"&&!(e.shiftKey&&e.key==="F10"))return;e.preventDefault();const n=document.activeElement,t=(n instanceof HTMLElement&&e.currentTarget.contains(n)?n:e.currentTarget).getBoundingClientRect();h(t.bottom,t.left,0)},children:b}),w]}):w}export{J as Menu};
@@ -1 +1 @@
1
- "use client";import{jsx as a}from"react/jsx-runtime";import{cn as n}from"../../core/utils/cn.js";import{useLocale as b}from"../../locales/localeContext.js";import{ruSlice as g}from"../../locales/slices/modal.ru.js";import{DialogLayout as y}from"../DialogLayout/DialogLayout.js";import{Layout as t}from"../Layout/Layout.js";import{Overlay as u}from"../Overlay/Overlay.js";import m from"./Modal.module.css.js";import R from"../../styles/overlayScrim.module.css.js";const h={modal:g},v=({rootRef:e,...o})=>a(t.Header,{rootRef:e,sticky:!0,...o}),C=({className:e,rootRef:o,...r})=>a(t.Content,{rootRef:o,...r,className:n(m.body,e)}),N=({align:e="end",rootRef:o,...r})=>a(t.Footer,{rootRef:o,sticky:!0,align:e,...r}),L=({open:e,onOpenChange:o,children:r,className:s,"aria-labelledby":i,"aria-label":l,"aria-describedby":d,rootRef:c,...f})=>{const{t:p}=b(h);return a(u,{variant:"modal",open:e,onOpenChange:o,hostClassName:R.host,"aria-labelledby":l?void 0:i,"aria-label":l??(i?void 0:p("modal.ariaLabel")),"aria-describedby":d,children:a(y,{rootRef:c,...f,variant:"floating",radius:"lg",className:n(m.modalContent,s),onClose:()=>o(!1),children:a(t,{padding:"md",gap:"md",children:r})})})},O=Object.assign(L,{Header:v,Body:C,Footer:N});export{O as Modal};
1
+ "use client";import{jsx as r}from"react/jsx-runtime";import{cn as m}from"../../core/utils/cn.js";import{useLocale as g}from"../../locales/localeContext.js";import{ruSlice as h}from"../../locales/slices/modal.ru.js";import{DialogLayout as u}from"../DialogLayout/DialogLayout.js";import{Header as t}from"../Header/Header.js";import{Layout as i}from"../Layout/Layout.js";import{Overlay as v}from"../Overlay/Overlay.js";import s from"./Modal.module.css.js";import R from"../../styles/overlayScrim.module.css.js";const C={modal:h},L=({rootRef:o,children:e,...a})=>r(i.Header,{rootRef:o,variant:"primary",sticky:!0,...a,children:r(t,{children:e})}),N=({className:o,rootRef:e,...a})=>r(i.Content,{rootRef:e,...a,className:m(s.body,o)}),O=({align:o="end",rootRef:e,...a})=>r(i.Footer,{rootRef:e,variant:"primary",sticky:!0,align:o,...a}),T=({open:o,onOpenChange:e,children:a,size:l="md",className:c,"aria-labelledby":n,"aria-label":d,"aria-describedby":f,rootRef:p,...b})=>{const{t:y}=g(C);return r(v,{variant:"modal",open:o,onOpenChange:e,hostClassName:R.host,"aria-labelledby":d?void 0:n,"aria-label":d??(n?void 0:y("modal.ariaLabel")),"aria-describedby":f,children:r(u,{rootRef:p,...b,variant:"floating",radius:"lg",className:m(s.modalContent,c),"data-size":l!=="md"?l:void 0,onClose:()=>e(!1),children:r(i,{padding:"md",gap:"lg",children:a})})})},j=Object.assign(T,{Header:Object.assign(L,{Title:t.Title,Subtitle:t.Subtitle,Tabs:t.Tabs}),Body:N,Footer:O});export{j as Modal};
@@ -1 +1 @@
1
- "use client";import{injectCss as t}from"../../core/utils/injectCss.js";var i=".QNpBm{font-family:\u0013g-font-family-ui);width:min(90%,\u0013dialog-max-width-md))}.lVhql{\fdialog-body-size);line-height:1.5}";const a={modalContent:"QNpBm",body:"lVhql"};t(i);export{a as default};
1
+ "use client";import{injectCss as a}from"../../core/utils/injectCss.js";var l=".QNpBm{--local-width:\u0013dialog-max-width-md);font-family:\u0013g-font-family-ui);margin-inline:auto;width:min(var(--local-width),calc(100dvw - \u00024)*2))}.QNpBm\u001asm]{--local-width:\u0013dialog-max-width-sm)}.QNpBm\u001alg]{--local-width:\u0013dialog-max-width-lg)}.lVhql{\fdialog-body-size);line-height:1.5}";const t={modalContent:"QNpBm",body:"lVhql"};a(l);export{t as default};
@@ -1 +1 @@
1
- "use client";import{jsxs as w,Fragment as A,jsx as f}from"react/jsx-runtime";import{useRef as C,useLayoutEffect as F}from"react";import{Box as O}from"../Box/Box.js";import{Overlay as k}from"../Overlay/Overlay.js";import{cn as E}from"../../core/utils/cn.js";import{popoverDomId as I,positionArea as z,anchorNameFor as B}from"../../core/utils/popover.js";import{renderChildren as D}from"../../core/utils/renderChildren.js";import L from"../../styles/floating.module.css.js";import t from"./Popover.module.css.js";import{useFallbackId as M}from"../../core/utils/useFallbackId.js";function S(e,r){if(typeof e=="function"){e(r);return}e!=null&&(e.current=r)}function q({children:e,trigger:r,id:d,disabled:n=!1,variant:i="panel",className:u,role:g,side:p="bottom",align:h="center",widthMode:l,popoverTargetAction:v="toggle",defaultOpen:c=!1,onToggle:y,panelRef:R}){const b=M(),a=d??I(b),m=B(a),s=C(null),x=z(p,h),N=o=>{o?.style.setProperty("anchor-name",m)},P=o=>{s.current=o,S(R,o)};F(()=>{if(!c||n)return;const o=s.current;o&&!o.matches(":popover-open")&&o.showPopover()},[c,n]);const T=n?{}:{popoverTarget:a,popoverTargetAction:v},j={"--altum-popover-anchor":m,"--altum-popover-area":x};return w(A,{children:[D({children:r,props:T,contentRef:N}),f(k,{variant:"floating",id:a,rootRef:P,role:g??"dialog",className:E(i==="plain"&&L.panel,t.anchor,l!=null&&t.sized,t.content,u),style:j,"data-side":p,"data-width-mode":l,onOpenChange:y,children:i==="panel"?f(O,{variant:"floating",className:t.contentPanel,children:e}):e})]})}export{q as Popover};
1
+ "use client";import{jsxs as C,Fragment as F,jsx as f}from"react/jsx-runtime";import{useRef as O,useLayoutEffect as k}from"react";import{Box as A}from"../Box/Box.js";import{Overlay as E}from"../Overlay/Overlay.js";import{cn as I}from"../../core/utils/cn.js";import{popoverDomId as T,positionArea as z,anchorNameFor as B}from"../../core/utils/popover.js";import{renderChildren as D}from"../../core/utils/renderChildren.js";import L from"../../styles/floating.module.css.js";import t from"./Popover.module.css.js";import{useFallbackId as M}from"../../core/utils/useFallbackId.js";function S(e,r){if(typeof e=="function"){e(r);return}e!=null&&(e.current=r)}function q({children:e,trigger:r,id:d,disabled:n=!1,variant:i="panel",className:u,role:g,side:p="bottom",align:h="center",widthMode:l,popoverTargetAction:v="toggle",defaultOpen:c=!1,onToggle:y,panelRef:R}){const b=M(),a=d??T(b),m=B(a),s=O(null),x=z(p,h),N=o=>{o?.style.setProperty("anchor-name",m)},P=o=>{s.current=o,S(R,o)};k(()=>{if(!c||n)return;const o=s.current;o&&!o.matches(":popover-open")&&o.showPopover()},[c,n]);const j=n?{}:{popovertarget:a,popovertargetaction:v},w={"--altum-popover-anchor":m,"--altum-popover-area":x};return C(F,{children:[D({children:r,props:j,contentRef:N}),f(E,{variant:"floating",id:a,rootRef:P,role:g??"dialog",className:I(i==="plain"&&L.panel,t.anchor,l!=null&&t.sized,t.content,u),style:w,"data-side":p,"data-width-mode":l,onOpenChange:y,children:i==="panel"?f(A,{variant:"floating",className:t.contentPanel,children:e}):e})]})}export{q as Popover};
@@ -1 +1 @@
1
- "use client";import{jsx as r,jsxs as M}from"react/jsx-runtime";import{useRef as y,useState as Z,useLayoutEffect as g}from"react";import{Button as F}from"../Button/Button.js";import{IconChevronUpDown as H}from"../../icons/icons/IconChevronUpDown.js";import{handleRovingListKeyDown as ee,ROVING_ITEM_ATTR as te}from"../../hooks/useRovingList.js";import{cn as R}from"../../core/utils/cn.js";import U from"../../styles/utilities.module.css.js";import{uRef as re}from"../../core/utils/bundle.js";import{popoverDomId as ne,hidePopover as _,anchorNameFor as ae,showPopover as oe}from"../../core/utils/popover.js";import o from"./PopupSwitch.module.css.js";import{useFallbackId as ie}from"../../core/utils/useFallbackId.js";function $(n){if(!(n instanceof HTMLElement))return null;const a=Number(n.dataset.index);return Number.isInteger(a)?a:null}function le(n){return n.nativeEvent.newState==="open"}function ue({value:n,options:a,onChange:x,disabled:l=!1,className:N,placeholder:v,size:c="md",variant:D="secondary",width:j="auto",align:E="start",rootRef:q,"aria-label":T}){const d=ne(ie()),A=`${d}-trigger`,w=ae(d),I=y(null),s=y(null),p=a.findIndex(e=>e.value===n),m=p>=0?a[p]:void 0,f=p>=0?p:0,[G,S]=Z(f),k=y(f),h=y(!1),u=y(null);k.current=f;const L=j==="options",V=L&&a.some(e=>e.icon!=null),z=()=>{h.current=!1,u.current!=null&&(clearTimeout(u.current),u.current=null),S(k.current)};g(()=>{const e=I.current;if(e)return e.style.setProperty("anchor-name",w),e.hasAttribute("aria-expanded")||e.setAttribute("aria-expanded","false"),()=>{e.style.removeProperty("anchor-name")}},[w]),g(()=>{l&&_(s.current)},[l]),g(()=>{h.current||s.current?.matches(":popover-open")||S(f)},[f]),g(()=>()=>{u.current!=null&&clearTimeout(u.current)},[]);const P=e=>{const t=a[e];t&&(x(t.value),_(s.current))},B=e=>{l||e.key!=="ArrowDown"&&e.key!=="ArrowUp"||(e.preventDefault(),oe(s.current))},J=e=>{if(a.length!==0){if(e.key==="Enter"||e.key===" "){const t=e.target.closest('[role="option"]'),i=$(t);if(i==null||!e.currentTarget.contains(t))return;e.preventDefault(),P(i);return}ee(e,"vertical")}},O=e=>{const t=e.target.closest('[role="option"]');if(!(t instanceof HTMLElement)||!e.currentTarget.contains(t)||t.hasAttribute("disabled"))return;const i=$(t);i!=null&&P(i)},Q=e=>{const t=le(e);if(I.current?.setAttribute("aria-expanded",t?"true":"false"),t){h.current&&z();const b=s.current;(b?.querySelector('[aria-selected="true"]')??b?.querySelector('[role="option"]'))?.focus();return}h.current=!0;const i=s.current,K=()=>{h.current&&(i?.removeEventListener("transitionend",C),z())},C=b=>{b.target===i&&b.propertyName==="opacity"&&K()};i?.addEventListener("transitionend",C),u.current!=null&&clearTimeout(u.current),u.current=setTimeout(K,250)},W=V?r("span",{className:R(U.fCenter,o.iconSlot),"aria-hidden":!0,children:m?.icon}):m?.icon?r("span",{"aria-hidden":!0,children:m.icon}):void 0,X=L?M("span",{className:o.value,children:[a.map(e=>{const t=e.value===n;return r("span",{className:t?void 0:o.valueReserve,"aria-hidden":t?void 0:!0,children:e.label},String(e.value))}),v?r("span",{className:m?o.valueReserve:void 0,"aria-hidden":m?!0:void 0,children:v}):null]}):m?.label??v??"",Y={"--altum-popover-anchor":w,"--altum-popup-switch-selected":G};return M("div",{className:o.root,children:[r(F,{rootRef:re(q,I),id:A,type:"button",variant:D,size:c,disabled:l,className:R(o.trigger,N),prefix:W,postfix:r(H,{"aria-hidden":!0}),popoverTarget:l?void 0:d,"aria-haspopup":"listbox","aria-controls":d,"aria-label":T,onKeyDown:B,children:X}),r("div",{ref:s,id:d,popover:"auto",role:"listbox","aria-orientation":"vertical","aria-label":T,"aria-labelledby":T?void 0:A,className:R(U.scrollport,o.panel),style:Y,"data-size":c==="md"?void 0:c,"data-align":E==="start"?void 0:E,onKeyDown:J,onClick:O,onToggle:Q,children:a.map((e,t)=>r(se,{option:e,optionId:`${d}-option-${t}`,index:t,selected:e.value===n,tabIndex:t===(p>=0?p:0)?0:-1,size:c,variant:D},String(e.value)))})]})}function se({option:n,optionId:a,index:x,selected:l,tabIndex:N,size:v,variant:c}){return r(F,{type:"button",role:"option",id:a,"data-index":x,[te]:"","aria-selected":l,tabIndex:N,variant:c,size:v,fullWidth:!0,className:o.option,prefix:n.icon?r("span",{"aria-hidden":!0,children:n.icon}):void 0,postfix:r("span",{className:o.chevron,"aria-hidden":!0,children:l?r(H,{}):null}),children:r("span",{className:o.text,children:n.label})})}export{ue as PopupSwitch};
1
+ "use client";import{jsx as r,jsxs as M}from"react/jsx-runtime";import{useRef as y,useState as Z,useLayoutEffect as g}from"react";import{Button as F}from"../Button/Button.js";import{IconChevronUpDown as H}from"../../icons/icons/IconChevronUpDown.js";import{handleRovingListKeyDown as ee,ROVING_ITEM_ATTR as te}from"../../hooks/useRovingList.js";import{cn as R}from"../../core/utils/cn.js";import U from"../../styles/utilities.module.css.js";import{uRef as re}from"../../core/utils/bundle.js";import{popoverDomId as ne,hidePopover as _,anchorNameFor as ae,showPopover as oe}from"../../core/utils/popover.js";import o from"./PopupSwitch.module.css.js";import{useFallbackId as ie}from"../../core/utils/useFallbackId.js";function $(n){if(!(n instanceof HTMLElement))return null;const a=Number(n.dataset.index);return Number.isInteger(a)?a:null}function le(n){return n.nativeEvent.newState==="open"}function ue({value:n,options:a,onChange:x,disabled:l=!1,className:N,placeholder:v,size:c="md",variant:D="secondary",width:j="auto",align:E="start",rootRef:q,"aria-label":w}){const d=ne(ie()),A=`${d}-trigger`,T=ae(d),I=y(null),s=y(null),p=a.findIndex(e=>e.value===n),m=p>=0?a[p]:void 0,f=p>=0?p:0,[G,S]=Z(f),k=y(f),h=y(!1),u=y(null);k.current=f;const L=j==="options",V=L&&a.some(e=>e.icon!=null),z=()=>{h.current=!1,u.current!=null&&(clearTimeout(u.current),u.current=null),S(k.current)};g(()=>{const e=I.current;if(e)return e.style.setProperty("anchor-name",T),e.hasAttribute("aria-expanded")||e.setAttribute("aria-expanded","false"),()=>{e.style.removeProperty("anchor-name")}},[T]),g(()=>{l&&_(s.current)},[l]),g(()=>{h.current||s.current?.matches(":popover-open")||S(f)},[f]),g(()=>()=>{u.current!=null&&clearTimeout(u.current)},[]);const P=e=>{const t=a[e];t&&(x(t.value),_(s.current))},B=e=>{l||e.key!=="ArrowDown"&&e.key!=="ArrowUp"||(e.preventDefault(),oe(s.current))},J=e=>{if(a.length!==0){if(e.key==="Enter"||e.key===" "){const t=e.target.closest('[role="option"]'),i=$(t);if(i==null||!e.currentTarget.contains(t))return;e.preventDefault(),P(i);return}ee(e,"vertical")}},O=e=>{const t=e.target.closest('[role="option"]');if(!(t instanceof HTMLElement)||!e.currentTarget.contains(t)||t.hasAttribute("disabled"))return;const i=$(t);i!=null&&P(i)},Q=e=>{const t=le(e);if(I.current?.setAttribute("aria-expanded",t?"true":"false"),t){h.current&&z();const b=s.current;(b?.querySelector('[aria-selected="true"]')??b?.querySelector('[role="option"]'))?.focus();return}h.current=!0;const i=s.current,K=()=>{h.current&&(i?.removeEventListener("transitionend",C),z())},C=b=>{b.target===i&&b.propertyName==="opacity"&&K()};i?.addEventListener("transitionend",C),u.current!=null&&clearTimeout(u.current),u.current=setTimeout(K,250)},W=V?r("span",{className:R(U.fCenter,o.iconSlot),"aria-hidden":!0,children:m?.icon}):m?.icon?r("span",{"aria-hidden":!0,children:m.icon}):void 0,X=L?M("span",{className:o.value,children:[a.map(e=>{const t=e.value===n;return r("span",{className:t?void 0:o.valueReserve,"aria-hidden":t?void 0:!0,children:e.label},String(e.value))}),v?r("span",{className:m?o.valueReserve:void 0,"aria-hidden":m?!0:void 0,children:v}):null]}):m?.label??v??"",Y={"--altum-popover-anchor":T,"--altum-popup-switch-selected":G};return M("div",{className:o.root,children:[r(F,{rootRef:re(q,I),id:A,type:"button",variant:D,size:c,disabled:l,className:R(o.trigger,N),prefix:W,postfix:r(H,{"aria-hidden":!0}),popovertarget:l?void 0:d,"aria-haspopup":"listbox","aria-controls":d,"aria-label":w,onKeyDown:B,children:X}),r("div",{ref:s,id:d,popover:"auto",role:"listbox","aria-orientation":"vertical","aria-label":w,"aria-labelledby":w?void 0:A,className:R(U.scrollport,o.panel),style:Y,"data-size":c==="md"?void 0:c,"data-align":E==="start"?void 0:E,onKeyDown:J,onClick:O,onToggle:Q,children:a.map((e,t)=>r(se,{option:e,optionId:`${d}-option-${t}`,index:t,selected:e.value===n,tabIndex:t===(p>=0?p:0)?0:-1,size:c,variant:D},String(e.value)))})]})}function se({option:n,optionId:a,index:x,selected:l,tabIndex:N,size:v,variant:c}){return r(F,{type:"button",role:"option",id:a,"data-index":x,[te]:"","aria-selected":l,tabIndex:N,variant:c,size:v,fullWidth:!0,className:o.option,prefix:n.icon?r("span",{"aria-hidden":!0,children:n.icon}):void 0,postfix:r("span",{className:o.chevron,"aria-hidden":!0,children:l?r(H,{}):null}),children:r("span",{className:o.text,children:n.label})})}export{ue as PopupSwitch};
@@ -1 +1 @@
1
- "use client";import{jsxs as $,Fragment as Tt,jsx as n}from"react/jsx-runtime";import{useId as wt,useRef as j,useState as me,useCallback as x,useMemo as ge,useLayoutEffect as Ot}from"react";import{Dropdown as Lt}from"../Dropdown/Dropdown.js";import{Listbox as It}from"../Listbox/Listbox.js";import{SearchField as Nt}from"../SearchField/SearchField.js";import{TextField as Dt,FieldBaseIcon as Ft}from"../TextField/TextField.js";import{useControlledState as he}from"../../hooks/useControlledState.js";import{useLocale as Pt}from"../../locales/localeContext.js";import{cn as At}from"../../core/utils/cn.js";import{uEvMerge as q,uRef as Et}from"../../core/utils/bundle.js";import{getFormControlState as Rt}from"../../core/utils/form.js";import{hidePopover as ve,popoverFromInvoker as V,showPopover as Q}from"../../core/utils/popover.js";import{handleListHighlightKeyDown as Mt,isKey as be,handleEnterKeyDown as Bt}from"../../core/utils/keyboard.js";import{getListboxPath as Kt,findListboxOption as xe,filterListboxOptions as kt,defaultListboxFilterFn as zt,getListboxOptionText as E,getListboxOptionDomId as Ht}from"../../core/utils/listboxOptions.js";import{ruSlice as $t}from"../../locales/slices/customSelect.ru.js";import{ruSlice as jt}from"../../locales/slices/select.ru.js";import y from"../../styles/selectField.module.css.js";import ye from"./Select.module.css.js";const qt={select:jt,customSelect:$t},Ce='[role="option"]:not([disabled]):not([hidden])';function Vt(t,o){return o===void 0?[]:t==="multiple"||t==="path"?Array.isArray(o)?o:o?[o]:[]:Array.isArray(o)?o[0]?[o[0]]:[]:o?[o]:[]}function Qt(t){return t==="single"?"":[]}function Wt(t,o){const l=`${t}-option-`;if(!o.startsWith(l))return;const S=Number(o.slice(l.length));return Number.isInteger(S)?S:void 0}function _t(t,o,l){if(t.length!==0)return l==="first"?t[0]:l==="last"?t[t.length-1]:l==="next"?t[o<0?0:(o+1)%t.length]:t[o<0?t.length-1:(o-1+t.length)%t.length]}function Gt(t){const o=document.getElementById(t);return o?Array.from(o.querySelectorAll(Ce)):[]}function Jt(t){return n("svg",{className:ye.arrow,"data-readonly":t?"":void 0,viewBox:"0 0 24 24","aria-hidden":"true",children:n("path",{d:"M6 9l6 6 6-6"})})}function Xt(t){return t==="input"||t==="textarea"}const Zt=({options:t,groups:o,selectionMode:l="single",value:S,defaultValue:Se,onChange:W,defaultOpen:_=!1,onOpenChange:G,disabled:T=!1,readOnly:Te=!1,closeOnSelect:we,filterFn:J=zt,filterQuery:Oe,defaultFilterQuery:Le="",onFilterQueryChange:w,placeholder:R,loading:Ie=!1,separator:Ne=" / ",popupRole:De="listbox",filterable:Fe=!1,filterPlaceholder:Pe,align:Ae="auto",widthMode:Ee,mobileTitle:Re,mobileLeftControls:Me,mobileRightControls:Be,panelScroll:Ke="overlay",navigation:ke,highlightedIndex:M,onHighlightChange:X,showCheck:ze,noOptionsText:He,preventOptionMouseDown:$e,listAriaLabel:je,inputProps:B,popupClassName:qe,rootRef:Ve,className:Qe="",id:We,label:Z,size:_e="md",width:U="md",prefix:Ge,postfix:Ut,error:Je,description:Xe,onClear:Y,clearLabel:Ze,"aria-label":Ue})=>{const{t:ee}=Pt(qt),te=wt(),a=`${te}-listbox`,Ye=We??`${te}-trigger`,K=j(null),oe=j(null),et=He??ee("customSelect.noOptions"),{onClick:tt,onKeyDown:ot,onFocus:rt,onBlur:lt,rootRef:it,className:nt,wrapperClassName:at,children:re,...st}=B??{},c=Xt(B?.as),[dt,le]=he(S,Se??Qt(l)),p=Vt(l,dt),[k,O,ie]=he(Oe,Le),[ut,ne]=me(_),ae=we??l==="single",{isReadOnly:se,isInteractive:s}=Rt({disabled:T,readOnly:Te}),C=l==="multiple",L=c||C,ct=Ee??(c?"trigger":"trigger-fit"),de=ke??(c?"highlight":void 0),pt=ze??(c?!1:l==="multiple"),ue=$e??!0?e=>{const r=e.target;r instanceof Element&&r.closest('input, textarea, [contenteditable="true"]')||e.preventDefault()}:void 0,d=de==="highlight",f=M!==void 0,z=f&&M>=0?Ht(a,M):void 0,[h,H]=me(null),I=j(void 0),ft=x(e=>{ne(e),G?.(e),!e&&!ie&&(O(""),w?.(""))},[ie,w,G,O,ne]),mt=x(e=>{O(e),w?.(e)},[w,O]),N=x(e=>{const r=l==="single"?e[0]??"":e;le(r),W?.(r)},[W,l,le]),gt=x(()=>{s&&N([])},[N,s]),ce=x(e=>{if(!s)return;let r;if(l==="multiple")r=p.includes(e)?p.filter(i=>i!==e):[...p,e];else if(l==="path"){const i=Kt(t,e).map(b=>b.value);r=i.length>0?i:[e]}else r=[e];N(r),ae&&oe.current?.hide()},[N,s,t,l,ae,p]),v=ge(()=>l==="path"?p.map(e=>xe(t,e)).filter(e=>!!e):p.map(e=>{const r=xe(t,e);if(r)return r;if(e)return{value:e,label:e}}).filter(e=>!!e),[t,l,p]),u=ge(()=>kt({options:t,query:k,enabled:!0,filterFn:J}),[J,k,t]),ht=!f&&h?.options===u?h.id:void 0,pe=d?f?z:ht:void 0;I.current=pe;const vt=x((e,r)=>{if(r?.(e),e.defaultPrevented||!s)return;const i=()=>V(e.currentTarget),b=!!i()?.matches(":popover-open"),F=P=>{b||Q(i());const m=Gt(a),St=d?m.findIndex(A=>A.id===I.current):m.indexOf(document.activeElement),g=_t(m,St,P);if(g){if(d){I.current=g.id,f||H({options:u,id:g.id}),K.current?.scrollToId(g.id);const A=Wt(a,g.id);A!==void 0&&X?.(A);return}g.focus({preventScroll:!0}),g.scrollIntoView({block:"nearest"})}};if(!Mt(e,{onNext:()=>F("next"),onPrev:()=>F("prev"),onFirst:()=>F("first"),onLast:()=>F("last"),includeHomeEnd:b})){if(be(e,"Enter")&&b){e.preventDefault();const P=d?I.current:void 0,m=d?P?document.getElementById(P):null:document.activeElement;m instanceof HTMLElement&&m.getAttribute("role")==="option"&&document.getElementById(a)?.contains(m)&&m.click(),ve(i());return}be(e,"Escape")&&b&&(e.preventDefault(),ve(i()))}},[u,f,d,s,a,X,H]);Ot(()=>{if(!d)return;const e=document.getElementById(a)?.querySelector(Ce)?.id,r=f?z:h?.options===u?h.id:e;r&&K.current?.scrollToId(r),!f&&e&&h?.options!==u&&H({options:u,id:e})},[z,u,f,h,d,a]);const D=v[0],bt=v.length>0,xt=l==="path"?v.length>0?v.map(e=>E(e)).join(Ne):null:l==="multiple"?v.length>0?v.map(e=>E(e)).join(", "):null:D?typeof D.label=="string"?D.label:E(D):null,yt=Y?()=>{gt(),Y()}:void 0,fe=Pe??ee("customSelect.filterPlaceholder"),Ct=$(Tt,{children:[$("span",{className:y.triggerSizer,"aria-hidden":"true",children:[R?n("span",{children:R}):null,t.map(e=>n("span",{children:E(e)},e.value))]}),n("span",{className:y.triggerText,children:xt??n("span",{className:y.placeholder,children:R??Z})})]});return $(Lt,{rootRef:Ve,defaultOpen:_,popupRef:oe,onOpenChange:ft,popupRole:"none",triggerMode:L?"combobox":"toggle",className:qe,widthMode:ct,align:Ae,mobileTitle:Re,mobileLeftControls:Me,mobileRightControls:Be,panelScroll:Ke,boxProps:ue?{onMouseDown:ue}:void 0,trigger:(e,r)=>n(Dt,{id:Ye,label:Z,size:_e,width:U,error:Je,description:Xe,disabled:T,readOnly:se,prefix:Ge,postfix:n(Ft,{children:Jt(se)}),onClear:yt,clearLabel:Ze,hasValue:bt,role:C?"combobox":void 0,tabIndex:C&&!T?0:void 0,"aria-disabled":C&&T||void 0,"aria-busy":Ie||void 0,"aria-controls":a,"aria-haspopup":De,"aria-label":Ue,"aria-activedescendant":pe,"aria-expanded":L?ut:e["aria-expanded"],popoverTarget:e.popoverTarget,popoverTargetAction:e.popoverTargetAction,...st,as:B?.as??(C?"div":"button"),className:nt??(c?void 0:y.trigger),wrapperClassName:at??At(y.field,e.className,!c&&U!=="full"&&y.fitContent,Qe),rootRef:Et(r,it),onClick:q(tt,i=>{if(!s){i.preventDefault();return}e.onClick?.(i),L&&!i.defaultPrevented&&Q(V(i.currentTarget))}),onFocus:q(rt,i=>{L&&s&&i.currentTarget.matches(":focus-visible")&&Q(V(i.currentTarget))}),onBlur:lt,onKeyDown:q(ot,i=>{if(s){if(d){vt(i,e.onKeyDown);return}e.onKeyDown?.(i)}}),children:re!==void 0?re:c?null:Ct}),children:[Fe&&!c?n("div",{className:ye.filterWrapper,children:n(Nt,{"data-popup-autofocus":"",size:"sm",keepPlaceholder:!0,"aria-label":fe,placeholder:fe,value:k,autoComplete:"off",onChange:e=>{mt(e.target.value)},onKeyDown:e=>{Bt(e,()=>{const r=u[0];r&&ce(r.value)})},"aria-controls":a})}):null,n(It,{controlRef:K,id:a,"aria-label":je,options:u,groups:o,value:p,multiple:l==="multiple",showCheck:pt,noOptionsText:et,disabled:!s,navigation:de,onSelect:ce})]})};export{Zt as Select};
1
+ "use client";import{jsxs as $,Fragment as wt,jsx as n}from"react/jsx-runtime";import{useId as Ot,useRef as j,useState as me,useCallback as x,useMemo as ge,useLayoutEffect as Lt}from"react";import{Dropdown as It}from"../Dropdown/Dropdown.js";import{Listbox as Nt}from"../Listbox/Listbox.js";import{SearchField as Dt}from"../SearchField/SearchField.js";import{TextField as Et,FieldBaseIcon as Ft}from"../TextField/TextField.js";import{useControlledState as he}from"../../hooks/useControlledState.js";import{useLocale as Pt}from"../../locales/localeContext.js";import{cn as Rt}from"../../core/utils/cn.js";import{uEvMerge as q,uRef as Tt}from"../../core/utils/bundle.js";import{getFormControlState as Mt}from"../../core/utils/form.js";import{hidePopover as ve,popoverFromInvoker as V,showPopover as Q}from"../../core/utils/popover.js";import{handleListHighlightKeyDown as At,isKey as be,handleEnterKeyDown as Bt}from"../../core/utils/keyboard.js";import{getListboxPath as Kt,findListboxOption as xe,filterListboxOptions as kt,defaultListboxFilterFn as zt,getListboxOptionText as T,getListboxOptionDomId as Ht}from"../../core/utils/listboxOptions.js";import{ruSlice as $t}from"../../locales/slices/customSelect.ru.js";import{ruSlice as jt}from"../../locales/slices/select.ru.js";import y from"../../styles/selectField.module.css.js";import ye from"./Select.module.css.js";const qt={select:jt,customSelect:$t},Ce='[role="option"]:not([disabled]):not([hidden])';function Vt(t,o){return o===void 0?[]:t==="multiple"||t==="path"?Array.isArray(o)?o:o?[o]:[]:Array.isArray(o)?o[0]?[o[0]]:[]:o?[o]:[]}function Qt(t){return t==="single"?"":[]}function Wt(t,o){const l=`${t}-option-`;if(!o.startsWith(l))return;const S=Number(o.slice(l.length));return Number.isInteger(S)?S:void 0}function _t(t,o,l){if(t.length!==0)return l==="first"?t[0]:l==="last"?t[t.length-1]:l==="next"?t[o<0?0:(o+1)%t.length]:t[o<0?t.length-1:(o-1+t.length)%t.length]}function Gt(t){const o=document.getElementById(t);return o?Array.from(o.querySelectorAll(Ce)):[]}function Jt(t){return n("svg",{className:ye.arrow,"data-readonly":t?"":void 0,viewBox:"0 0 24 24","aria-hidden":"true",children:n("path",{d:"M6 9l6 6 6-6"})})}function Xt(t){return t==="input"||t==="textarea"}const Zt=({options:t,groups:o,selectionMode:l="single",value:S,defaultValue:Se,onChange:W,defaultOpen:_=!1,onOpenChange:G,disabled:w=!1,readOnly:we=!1,closeOnSelect:Oe,filterFn:J=zt,filterQuery:Le,defaultFilterQuery:Ie="",onFilterQueryChange:O,placeholder:M,loading:Ne=!1,separator:De=" / ",popupRole:Ee="listbox",filterable:Fe=!1,filterPlaceholder:Pe,align:Re="auto",widthMode:Te,mobileTitle:Me,mobileLeftControls:Ae,mobileRightControls:Be,panelScroll:Ke="overlay",navigation:ke,highlightedIndex:A,onHighlightChange:X,showCheck:ze,noOptionsText:He,preventOptionMouseDown:$e,listAriaLabel:je,inputProps:B,popupClassName:qe,rootRef:Ve,className:Qe="",id:We,label:Z,size:_e="md",width:U="md",prefix:Ge,postfix:Ut,error:Je,description:Xe,onClear:Y,clearLabel:Ze,"aria-label":Ue})=>{const{t:ee}=Pt(qt),te=Ot(),a=`${te}-listbox`,Ye=We??`${te}-trigger`,K=j(null),oe=j(null),et=He??ee("customSelect.noOptions"),{onClick:tt,onKeyDown:ot,onFocus:rt,onBlur:lt,rootRef:it,className:nt,wrapperClassName:at,children:re,...st}=B??{},c=Xt(B?.as),[dt,le]=he(S,Se??Qt(l)),p=Vt(l,dt),[k,L,ie]=he(Le,Ie),[ut,ne]=me(_),ae=Oe??l==="single",{isReadOnly:se,isInteractive:s}=Mt({disabled:w,readOnly:we}),C=l==="multiple",I=c||C,ct=Te??(c?"trigger":"trigger-fit"),de=ke??(c?"highlight":void 0),pt=ze??(c?!1:l==="multiple"),ue=$e??!0?e=>{const r=e.target;r instanceof Element&&r.closest('input, textarea, [contenteditable="true"]')||e.preventDefault()}:void 0,d=de==="highlight",f=A!==void 0,z=f&&A>=0?Ht(a,A):void 0,[h,H]=me(null),N=j(void 0),ft=x(e=>{ne(e),G?.(e),!e&&!ie&&(L(""),O?.(""))},[ie,O,G,L,ne]),mt=x(e=>{L(e),O?.(e)},[O,L]),D=x(e=>{const r=l==="single"?e[0]??"":e;le(r),W?.(r)},[W,l,le]),gt=x(()=>{s&&D([])},[D,s]),ce=x(e=>{if(!s)return;let r;if(l==="multiple")r=p.includes(e)?p.filter(i=>i!==e):[...p,e];else if(l==="path"){const i=Kt(t,e).map(b=>b.value);r=i.length>0?i:[e]}else r=[e];D(r),ae&&oe.current?.hide()},[D,s,t,l,ae,p]),v=ge(()=>l==="path"?p.map(e=>xe(t,e)).filter(e=>!!e):p.map(e=>{const r=xe(t,e);if(r)return r;if(e)return{value:e,label:e}}).filter(e=>!!e),[t,l,p]),u=ge(()=>kt({options:t,query:k,enabled:!0,filterFn:J}),[J,k,t]),ht=!f&&h?.options===u?h.id:void 0,pe=d?f?z:ht:void 0;N.current=pe;const vt=x((e,r)=>{if(r?.(e),e.defaultPrevented||!s)return;const i=()=>V(e.currentTarget),b=!!i()?.matches(":popover-open"),F=P=>{b||Q(i());const m=Gt(a),St=d?m.findIndex(R=>R.id===N.current):m.indexOf(document.activeElement),g=_t(m,St,P);if(g){if(d){N.current=g.id,f||H({options:u,id:g.id}),K.current?.scrollToId(g.id);const R=Wt(a,g.id);R!==void 0&&X?.(R);return}g.focus({preventScroll:!0}),g.scrollIntoView({block:"nearest"})}};if(!At(e,{onNext:()=>F("next"),onPrev:()=>F("prev"),onFirst:()=>F("first"),onLast:()=>F("last"),includeHomeEnd:b})){if(be(e,"Enter")&&b){e.preventDefault();const P=d?N.current:void 0,m=d?P?document.getElementById(P):null:document.activeElement;m instanceof HTMLElement&&m.getAttribute("role")==="option"&&document.getElementById(a)?.contains(m)&&m.click(),ve(i());return}be(e,"Escape")&&b&&(e.preventDefault(),ve(i()))}},[u,f,d,s,a,X,H]);Lt(()=>{if(!d)return;const e=document.getElementById(a)?.querySelector(Ce)?.id,r=f?z:h?.options===u?h.id:e;r&&K.current?.scrollToId(r),!f&&e&&h?.options!==u&&H({options:u,id:e})},[z,u,f,h,d,a]);const E=v[0],bt=v.length>0,xt=l==="path"?v.length>0?v.map(e=>T(e)).join(De):null:l==="multiple"?v.length>0?v.map(e=>T(e)).join(", "):null:E?typeof E.label=="string"?E.label:T(E):null,yt=Y?()=>{gt(),Y()}:void 0,fe=Pe??ee("customSelect.filterPlaceholder"),Ct=$(wt,{children:[$("span",{className:y.triggerSizer,"aria-hidden":"true",children:[M?n("span",{children:M}):null,t.map(e=>n("span",{children:T(e)},e.value))]}),n("span",{className:y.triggerText,children:xt??n("span",{className:y.placeholder,children:M??Z})})]});return $(It,{rootRef:Ve,defaultOpen:_,popupRef:oe,onOpenChange:ft,popupRole:"none",triggerMode:I?"combobox":"toggle",className:qe,widthMode:ct,align:Re,mobileTitle:Me,mobileLeftControls:Ae,mobileRightControls:Be,panelScroll:Ke,boxProps:ue?{onMouseDown:ue}:void 0,trigger:(e,r)=>n(Et,{id:Ye,label:Z,size:_e,width:U,error:Je,description:Xe,disabled:w,readOnly:se,prefix:Ge,postfix:n(Ft,{children:Jt(se)}),onClear:yt,clearLabel:Ze,hasValue:bt,role:C?"combobox":void 0,tabIndex:C&&!w?0:void 0,"aria-disabled":C&&w||void 0,"aria-busy":Ne||void 0,"aria-controls":a,"aria-haspopup":Ee,"aria-label":Ue,"aria-activedescendant":pe,"aria-expanded":I?ut:e["aria-expanded"],popovertarget:e.popovertarget,popovertargetaction:e.popovertargetaction,...st,as:B?.as??(C?"div":"button"),className:nt??(c?void 0:y.trigger),wrapperClassName:at??Rt(y.field,e.className,!c&&U!=="full"&&y.fitContent,Qe),rootRef:Tt(r,it),onClick:q(tt,i=>{if(!s){i.preventDefault();return}e.onClick?.(i),I&&!i.defaultPrevented&&Q(V(i.currentTarget))}),onFocus:q(rt,i=>{I&&s&&i.currentTarget.matches(":focus-visible")&&Q(V(i.currentTarget))}),onBlur:lt,onKeyDown:q(ot,i=>{if(s){if(d){vt(i,e.onKeyDown);return}e.onKeyDown?.(i)}}),children:re!==void 0?re:c?null:Ct}),children:[Fe&&!c?n("div",{className:ye.filterWrapper,children:n(Dt,{"data-popup-autofocus":"",size:"sm",keepPlaceholder:!0,"aria-label":fe,placeholder:fe,value:k,autoComplete:"off",onChange:e=>{mt(e.target.value)},onKeyDown:e=>{Bt(e,()=>{const r=u[0];r&&ce(r.value)})},"aria-controls":a})}):null,n(Nt,{controlRef:K,id:a,"aria-label":je,options:u,groups:o,value:p,multiple:l==="multiple",showCheck:pt,noOptionsText:et,disabled:!s,navigation:de,onSelect:ce})]})};export{Zt as Select};
@@ -1 +1 @@
1
- "use client";import{jsx as l,jsxs as N,Fragment as I}from"react/jsx-runtime";import{useId as R,useMemo as x,createContext as D,useContext as P}from"react";import d from"./Tabs.module.css.js";import j from"../../styles/scrollable.module.css.js";import B from"../../styles/utilities.module.css.js";import{SegmentedControl as L}from"../SegmentedControl/SegmentedControl.js";import{cn as u}from"../../core/utils/cn.js";import{useControlledStateWithCallback as M}from"../../hooks/useControlledState.js";import{tabTriggerDomId as b,tabPanelDomId as v}from"./Tabs.utils.js";const f=D(null);function p(){return P(f)}const S=({className:t,items:o,rootRef:r,...i})=>{const a=p(),n=a?.tabsId??"",s=x(()=>o.map(e=>({value:e.value,disabled:e.disabled,id:b(n,e.value),controls:v(n,e.value),label:N(I,{children:[e.label,e.badgeDot?l("span",{className:d.tabBadgeDot,"aria-hidden":!0}):null,!e.badgeDot&&e.badge!=null?l("span",{className:u(B.fCenter,d.tabBadge),children:e.badge}):null]})})),[o,n]);return a==null?null:l(L,{...i,rootRef:r,className:u(j.area,d.tabsHeader,t),options:s,value:a.value,onChange:a.onChange,orientation:a.orientation,variant:a.variant==="pill"?"pill":"plain",width:"auto",itemRole:"tab","aria-orientation":a.orientation})},T=({value:t,className:o,children:r,forceMount:i,hidden:a,rootRef:n,...s})=>{const e=p(),m=e?.tabsId??"",c=e!=null&&e.value!==t;return l("div",{ref:n,className:u(d.tabPanel,o),tabIndex:0,...s,hidden:a??(e==null?void 0:c),role:"tabpanel",id:v(m,t),"aria-labelledby":b(m,t),children:r})},h=({value:t,defaultValue:o,onChange:r,variant:i="line",orientation:a="horizontal",className:n,children:s,rootRef:e,...m})=>{const c=R(),[g,C]=M(t,o??"",r);return l(f.Provider,{value:{tabsId:c,value:g,onChange:C,orientation:a,variant:i},children:l("div",{ref:e,...m,className:u(d.tabsContainer,n),"data-orientation":a,"data-variant":i,children:s})})},V=Object.assign(h,{Root:h,List:S,Panel:T});export{V as Tabs};
1
+ "use client";import{jsxs as F,Fragment as x,jsx as u}from"react/jsx-runtime";import{useId as A,useMemo as I,useState as P,useLayoutEffect as R}from"react";import m from"./Tabs.module.css.js";import j from"../../styles/utilities.module.css.js";import{SegmentedControl as y}from"../SegmentedControl/SegmentedControl.js";import{cn as v}from"../../core/utils/cn.js";import{useControlledStateWithCallback as M}from"../../hooks/useControlledState.js";import{tabPanelDomId as p,tabTriggerDomId as g}from"./Tabs.utils.js";function S(a){const[d,s]=P({value:"",id:""});return R(()=>{let n,o=0;const t=()=>{const i=a.current;if(!i){o=requestAnimationFrame(t);return}const l=()=>{s({value:i.getAttribute("data-value")??"",id:i.id})};l(),n=new MutationObserver(l),n.observe(i,{attributes:!0,attributeFilter:["data-value"]})};return t(),()=>{cancelAnimationFrame(o),n?.disconnect()}},[a]),d}const k=({value:a,tabsRef:d,className:s,children:n,forceMount:o,hidden:t,rootRef:i,...l})=>{const r=S(d),b=r.value!==a;return u("div",{ref:i,className:v(m.tabPanel,s),tabIndex:0,...l,hidden:t??b,role:"tabpanel",id:r.id?p(r.id,a):void 0,"aria-labelledby":r.id?g(r.id,a):void 0,children:n})},w=({items:a,value:d,defaultValue:s,onChange:n,variant:o="line",orientation:t="horizontal",className:i,rootRef:l,id:r,...b})=>{const h=A(),c=r??h,N=a.find(e=>!e.disabled)?.value??"",[f,C]=M(d,s??N,n),D=I(()=>a.map(e=>({value:e.value,disabled:e.disabled,id:g(c,e.value),controls:p(c,e.value),label:F(x,{children:[e.label,e.badgeDot?u("span",{className:m.tabBadgeDot,"aria-hidden":!0}):null,!e.badgeDot&&e.badge!=null?u("span",{className:v(j.fCenter,m.tabBadge),children:e.badge}):null]})})),[a,c]);return u("div",{...b,ref:l,id:c,className:v(m.tabs,i),"data-value":f,"data-orientation":t!=="horizontal"?t:void 0,"data-variant":o!=="line"?o:void 0,children:u(y,{className:m.tabsHeader,options:D,value:f,onChange:C,orientation:t,variant:o==="pill"?"pill":"plain",width:"auto",itemRole:"tab","aria-orientation":t})})},z=Object.assign(w,{Panel:k});export{z as Tabs};
@@ -1 +1 @@
1
- "use client";import{injectCss as a}from"../../core/utils/injectCss.js";var t="._5vkAh{display:flex;flex-direction:column;font-family:\u0013g-font-family-ui);width:100%}._5vkAh\u0015vertical]{align-items:flex-start;flex-direction:row;gap:\u00024)}._5vkAh\u0016line] ._38Fo5{\u0014button-group-gap:\u00024);background:#0000;border:none;border-bottom:\u000bcolor-border);border-radius:0;box-shadow:none;margin-bottom:\u00024);overflow-x:auto;padding:0;width:100%}:is(._5vkAh\u0016line] ._38Fo5) button{flex:0 0 auto}:is(._5vkAh\u0016line] ._38Fo5) button[aria-selected=true],:is(._5vkAh\u0016line] ._38Fo5) button[aria-selected=true]:hover:not(:disabled){background-color:initial;box-shadow:inset 0 -2px 0 \u0001tabs-indicator)}._5vkAh\u0015vertical]\u0016line] ._38Fo5{border-bottom:none;border-right:\u000bcolor-panel-border);margin-bottom:0;min-width:140px;overflow:visible;width:max-content}:is(._5vkAh\u0015vertical]\u0016line] ._38Fo5) button[aria-selected=true],:is(._5vkAh\u0015vertical]\u0016line] ._38Fo5) button[aria-selected=true]:hover:not(:disabled){box-shadow:inset -2px 0 0 \u0001tabs-indicator)}._38Fo5{max-width:100%}.Zw2N-{\u0007color-option-hover);\bg-radius-pill);color:\u0001text-secondary);display:inline-flex;\fbadge-font-size);font-weight:\u0004bold);\u000fbadge-size-md);line-height:1;min-width:\u0013badge-size-md);padding:0 \u00021)}._38Fo5 [aria-selected=true] .Zw2N-{background-color:\u0012\u0001brand) 18%,#0000);color:\u0001brand)}.z6b3L{\u0007color-status-error);border-radius:50%;flex-shrink:0;height:\u00022);width:\u00022)}.eAxHF{flex:1;min-width:0}";const o={tabsContainer:"_5vkAh",tabsHeader:"_38Fo5",tabBadge:"Zw2N-",tabBadgeDot:"z6b3L",tabPanel:"eAxHF"};a(t);export{o as default};
1
+ "use client";import{injectCss as a}from"../../core/utils/injectCss.js";var t=".QzIkz{font-family:\u0013g-font-family-ui);min-width:0;width:100%}.QzIkz:not(\u0016pill]) ._38Fo5{\u0014button-group-gap:\u00024);\u0014button-group-height:auto;\u0014button-group-pad:0;\u0014btn-height:auto;\u0014btn-pad-x:0;\u0014btn-shadow:0 0 0 0 #0000;\u0014bg-thumb:#0000;\u0014bg-thumb-shadow:none;align-items:flex-end;background:#0000;border:none;border-bottom:\u000bcolor-border);border-radius:0;box-shadow:none;height:auto;margin-bottom:\u00024);overflow-x:auto;padding:0;width:100%}:is(.QzIkz:not(\u0016pill]) ._38Fo5) button,:is(.QzIkz:not(\u0016pill]) ._38Fo5) button:hover:not(:disabled){\u0014btn-height:auto;background:#0000;background-color:initial;border:solid #0000;border-radius:0;border-width:0 0 2px;box-shadow:none;flex:0 0 auto;height:auto;line-height:1.3;margin-bottom:-1px;min-height:0;padding:\u00023) \u00021)}:is(.QzIkz:not(\u0016pill]) ._38Fo5) button[aria-selected=true],:is(.QzIkz:not(\u0016pill]) ._38Fo5) button[aria-selected=true]:hover:not(:disabled){background-color:initial;border-bottom-color:\u0001tabs-indicator);box-shadow:none;color:\u0001type)}.QzIkz\u0015vertical]:not(\u0016pill]) ._38Fo5{align-items:stretch;border-bottom:none;border-right:\u000bcolor-panel-border);margin-bottom:0;min-width:140px;overflow:visible;width:max-content}:is(.QzIkz\u0015vertical]:not(\u0016pill]) ._38Fo5) button,:is(.QzIkz\u0015vertical]:not(\u0016pill]) ._38Fo5) button:hover:not(:disabled){border-bottom-width:0;border-inline-end-width:2px;margin-bottom:0;margin-inline-end:-1px;padding:\u00022) \u00023)}:is(.QzIkz\u0015vertical]:not(\u0016pill]) ._38Fo5) button[aria-selected=true],:is(.QzIkz\u0015vertical]:not(\u0016pill]) ._38Fo5) button[aria-selected=true]:hover:not(:disabled){border-bottom-color:#0000;border-inline-end-color:\u0001tabs-indicator);box-shadow:none}.QzIkz[data-chrome]:not(\u0016pill]) ._38Fo5{\u001e;margin-bottom:0;margin-inline:calc(\u0013layout-pad, 0px)*-1);max-width:none;padding-inline:\u0013layout-pad,0);width:calc(100% + \u0013layout-pad, 0px)*2)}._38Fo5{flex-shrink:0;max-width:100%;overflow-x:auto}.Zw2N-{\u0007color-option-hover);\bg-radius-pill);color:\u0001text-secondary);display:inline-flex;\fbadge-font-size);font-weight:\u0004bold);\u000fbadge-size-md);line-height:1;min-width:\u0013badge-size-md);padding:0 \u00021)}._38Fo5 [aria-selected=true] .Zw2N-{background-color:\u0012\u0001brand) 18%,#0000);color:\u0001brand)}.z6b3L{\u0007color-status-error);border-radius:50%;flex-shrink:0;height:\u00022);width:\u00022)}.eAxHF{flex:1;min-width:0}";const o={tabs:"QzIkz",tabsHeader:"_38Fo5",tabBadge:"Zw2N-",tabBadgeDot:"z6b3L",tabPanel:"eAxHF"};a(t);export{o as default};
@@ -1 +1 @@
1
- "use client";import{injectCss as o}from"../../core/utils/injectCss.js";var a=".-n-fq{\u0014g-radius:8px;\u0014g-radius-sm:4px;\u0014g-radius-md:\u0005);\u0014g-radius-lg:12px;\u0014g-radius-pill:9999px;\u0014g-font-family-ui:system-ui,-apple-system,sans-serif;\u0014g-font-family-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;\u0014g-font-weight-normal:400;\u0014g-font-weight-medium:500;\u0014g-font-weight-semibold:600;\u0014g-font-weight-bold:700;\u0014g-font-size-3xs:10px;\u0014g-line-height-3xs:1.1;\u0014g-font-size-2xs:12px;\u0014g-line-height-2xs:1.2;\u0014g-font-size-xs:11px;\u0014g-line-height-xs:1.35;\u0014g-font-size-sm:13px;\u0014g-line-height-sm:1.35;\u0014g-font-size-base:14px;\u0014g-line-height-base:1.45;\u0014g-font-size-lg:16px;\u0014g-line-height-lg:1.4;\u0014g-font-size-xl:18px;\u0014g-line-height-xl:1.35;\u0014g-font-size-2xl:20px;\u0014g-font-size-3xl:24px;\u0014g-font-size-4xl:32px;\u0014g-color-white:#fff;\u0014g-color-black:#000;\u0014g-color-slate-50:#f8fafc;\u0014g-color-slate-100:#f1f5f9;\u0014g-color-slate-200:#e2e8f0;\u0014g-color-slate-300:#cbd5e1;\u0014g-color-slate-400:#94a3b8;\u0014g-color-slate-500:#64748b;\u0014g-color-slate-600:#475569;\u0014g-color-slate-700:#334155;\u0014g-color-slate-800:#1e293b;\u0014g-color-slate-900:#0f172a;\u0014g-color-red-300:#fca5a5;\u0014g-color-red-400:#f87171;\u0014g-color-red-600:#dc2626;\u0014g-color-red-700:#b91c1c;\u0014g-color-red-800:#991b1b;\u0014g-color-red-900:#7f1d1d;\u0014g-color-blue-500:#3b82f6;\u0014g-color-emerald-500:#10b981;\u0014g-color-green-600:#16a34a;\u0014g-color-amber-500:#f59e0b;\u0014g-color-amber-600:#d97706;\u0014g-color-violet-500:#8b5cf6;\u0014g-color-teal-500:#14b8a6;\u0014g-color-brand:\u0013g-color-slate-600);\u0014g-color-brand-hover:\u0013g-color-slate-700);\u0014g-color-brand-active:\u0013g-color-slate-800);\u0014dialog-body-size:\u0003base);\u0014dialog-max-width-md:500px;\u0014dialog-max-width-lg:600px;\u0014dialog-max-height:85vh;\u0014motion-overlay:0.2s;\u0014option-padding-y:\u00022);\u0014option-padding-x:\u00023);\u0014toggle-box-size-sm:16px;\u0014toggle-box-size:20px;\u0014toggle-box-size-lg:24px;\u0014toggle-label-gap:\u00023);\u0014toggle-stack-gap:\u00023);\u0014toggle-check-width:4px;\u0014toggle-check-height:8px;\u0014toggle-check-stroke:2px;\u0014toggle-check-width-sm:3px;\u0014toggle-check-height-sm:6px;\u0014toggle-check-stroke-sm:1.5px;\u0014toggle-check-width-lg:5px;\u0014toggle-check-height-lg:9px;\u0014toggle-dash-width:8px;\u0014toggle-dash-height:2px;\u0014toggle-dash-width-sm:6px;\u0014toggle-dash-height-sm:1.5px;\u0014toggle-dash-width-lg:10px;\u0014toggle-task-check-height:7px;\u0014toggle-radio-dot:6px;\u0014toggle-radio-dot-sm:4px;\u0014toggle-radio-dot-lg:8px;\u0014toggle-align-nudge:0.15em;\u0014control-inset:2px;\u0014focus-ring-width:2px;\u0014focus-ring-offset:1px;\u0014focus-ring-color:\u0001input-border-focus);\u0014button-focus-inner:1px;\u0014button-focus-outer:3px;\u0014opacity-disabled:0.55;\u0014field-disabled-opacity:0.8;\u0014overlay-close-size:28px;\u0014overlay-close-icon-size:16px;\u0014overlay-close-fg:\u0001muted);\u0014overlay-close-fg-hover:\u0001text);\u0014overlay-close-bg:#0000;\u0014overlay-close-bg-hover:\u0001option-hover);\u0014field-message-gap:\u00021);\u0014field-pad-top-sm:calc(\u00023) + \u0013control-inset));\u0014field-pad-bottom-sm:calc(\u00021) + \u0013control-inset));\u0014field-pad-top-md:\u00025);\u0014field-pad-bottom-md:\u00022);\u0014field-pad-top-lg:\u00026);\u0014field-pad-bottom-lg:calc(\u00022) + \u0013control-inset));\u0014form-legend-size:\u0003base);\u0014form-legend-weight:\u0004semibold);\u0014form-legend-line-\u000fg-line-height-sm);\u0014form-helper-indent:\u00021);\u0014control-icon-size-sm:14px;\u0014control-icon-size-md:18px;\u0014control-icon-size-lg:22px;\u0014badge-size-sm:16px;\u0014badge-size-md:18px;\u0014badge-font-size:\u00033xs);\u0014badge-font-size-sm:\u0003xs);\u0014badge-overhang:calc(\u00021) + \u0013control-inset));\u0014badge-digit-nudge:0.5px;\u0014slider-track-height:3px;\u0014slider-thumb-size:12px;\u0014slider-track:\u0012\u0001input-text) 12%,#0000);\u0014pagination-active-bar:2px;\u0014color-tabs-indicator:\u0001brand);\u0014color-fill-primary-bg:\u0001brand);\u0014color-fill-primary-fg:\u0001brand-text);\u0014color-fill-floating-bg:\u0001dropdown-bg);\u0014color-fill-floating-fg:\u0001input-text);\u0014surface-secondary-bg:\u0001surface);\u0014surface-secondary-border:\u0001border);\u0014surface-secondary-shadow:\u0013shadow-surface);\u0014color-ink-default:\u0001input-text);\u0014color-ink-muted:\u0001muted);\u0014transition-smooth:color 0.16s cubic-bezier(0.16,1,0.3,1),background-color 0.16s cubic-bezier(0.16,1,0.3,1),border-color 0.16s cubic-bezier(0.16,1,0.3,1),box-shadow 0.16s cubic-bezier(0.16,1,0.3,1),opacity 0.16s cubic-bezier(0.16,1,0.3,1);\u0014g-space-1:4px;\u0014g-space-2:8px;\u0014g-space-3:12px;\u0014g-space-4:16px;\u0014g-space-5:20px;\u0014g-space-6:24px;\u0014g-space-7:28px;\u0014g-space-8:32px;\u0014g-space-9:36px;\u0014control-height-xs:28px;\u0014control-height-sm:32px;\u0014control-height-md:44px;\u0014control-height-lg:52px;\u0014switch-track-width-sm:28px;\u0014switch-track-height-sm:\u0013toggle-box-size-sm);\u0014switch-thumb-size-sm:calc(\u0013toggle-box-size-sm) - \u0013control-inset)*2);\u0014switch-track-width-md:36px;\u0014switch-track-height-md:\u0013toggle-box-size);\u0014switch-thumb-size-md:calc(\u0013toggle-box-size) - \u0013control-inset)*2);\u0014switch-track-width-lg:44px;\u0014switch-track-height-lg:\u0013toggle-box-size-lg);\u0014switch-thumb-size-lg:calc(\u0013toggle-box-size-lg) - \u0013control-inset)*2);\u0014g-z-below:-1;\u0014g-z-raised:1;\u0014g-z-raised-above:2;\u0014g-z-control:5;\u0014g-z-local:10;\u0014g-z-upload:50;\u0014g-z-dropdown:1200;\u0014g-z-notification:1300;\u0014g-z-skip:10000;\u0014field-width-default:320px;\u0014chart-legend-min-width:140px;\u0014popover-min-width:180px;\u0014popover-max-width:360px;\u0014popover-tooltip-max-width:280px;\u0014container-max-sm:640px;\u0014container-max-md:768px;\u0014container-max-lg:960px;\u0014container-max-xl:1200px;\u0014image-crop-size:280px;\u0014image-crop-panel-max:560px;\u0014image-crop-stage-max:480px;\u0014image-gallery-viewport-min:200px;\u0014image-gallery-thumb-width:72px;\u0014image-gallery-thumb-height:54px;\u0014day-strip-day-min:56px;\u0014notification-anchor-inset:56px;\u0014notification-stack-front:64px;\u0014rating-size-sm:16px;\u0014rating-size-md:22px;\u0014rating-size-lg:28px;\u0014command-palette-max-width:560px;\u0014command-palette-max-height:520px;\u0014button-group-item-min-sm:\u00026);\u0014button-group-item-min-md:\u00027);\u0014button-group-item-min-lg:\u00028);\u0014overlay-offset-popover:4px;\u0014color-brand:\u0013g-color-brand);\u0014color-brand-hover:\u0013g-color-brand-hover);\u0014color-brand-active:\u0013g-color-brand-active);\u0014color-brand-text:\u0013g-color-white);\u0014color-brand-border:#ffffff1a;\u0014shadow-brand:0 1px 2px #4755691f;\u0014color-brand-tint:\u0012\u0001brand) 16%,#0000);\u0014color-brand-tint-hover:\u0012\u0001brand) 22%,#0000);\u0014color-brand-tint-active:\u0012\u0001brand-active) 28%,#0000);\u0014color-brand-tint-text:\u0001brand);\u0014color-brand-tint-border:\u0012\u0001brand) 22%,#0000);\u0014color-button-border-primary:#1e293b73;\u0014color-button-border-secondary:\u0013g-color-slate-300);\u0014color-button-border-tinted:\u0012\u0001brand) 28%,#0000);\u0014color-button-border-danger:#991b1b59;\u0014color-button-border-danger-secondary:\u0013g-color-red-300);\u0014color-surface:\u0013g-color-white);\u0014color-surface-elevated:\u0013g-color-white);\u0014color-surface-hover:\u0013g-color-slate-50);\u0014color-surface-active:\u0013g-color-slate-100);\u0014color-text-secondary:\u0013g-color-slate-600);\u0014color-border:\u0013g-color-slate-200);\u0014shadow-surface:0 1px 2px #0f172a0f,0 4px 12px #0f172a0a;\u0014shadow-lg:0 16px 48px \u0012\u0001input-text) 16%,#0000);\u0014color-danger-bg-solid:\u0012\u0013g-color-red-700) 72%,\u0013g-color-slate-700));\u0014color-danger-bg-hover:\u0012\u0013g-color-red-800) 72%,\u0013g-color-slate-800));\u0014color-danger-bg-active:\u0012\u0013g-color-red-900) 78%,\u0013g-color-slate-900));\u0014color-danger-text:\u0013g-color-white);\u0014color-danger-shadow:0 1px 2px #b91c1c1f;\u0014color-danger-bg-secondary:\u0013g-color-white);\u0014color-danger-bg-secondary-hover:\u0012\u0001status-error) 12%,#0000);\u0014color-danger-text-secondary:\u0001status-error);\u0014color-danger-text-secondary-hover:\u0012\u0001status-error) 82%,\u0001input-text));\u0014color-danger-shadow-secondary:0 1px 2px #00000005;\u0014color-danger-tint-bg:\u0012\u0001danger-bg-solid) 12%,#0000);\u0014color-danger-tint-bg-hover:\u0012\u0001danger-bg-solid) 18%,#0000);\u0014color-danger-tint-bg-active:\u0012\u0001danger-bg-solid) 24%,#0000);\u0014color-danger-tint-text:\u0001danger-bg-hover);\u0014color-button-border-danger-tinted:\u0012\u0001danger-bg-solid) 28%,#0000);\u0014color-status-info:\u0012\u0013g-color-blue-500) 58%,\u0013g-color-slate-600));\u0014color-status-success:\u0012\u0013g-color-emerald-500) 55%,\u0013g-color-slate-600));\u0014color-status-success-strong:\u0012\u0013g-color-green-600) 68%,\u0013g-color-slate-700));\u0014color-status-warning:\u0012\u0013g-color-amber-500) 58%,\u0013g-color-slate-600));\u0014color-status-warning-strong:\u0012\u0013g-color-amber-600) 68%,\u0013g-color-slate-700));\u0014color-status-error:\u0012\u0013g-color-red-700) 62%,\u0013g-color-slate-600));\u0014color-chart-4:\u0012\u0013g-color-violet-500) 52%,\u0013g-color-slate-600));\u0014color-chart-5:\u0012\u0013g-color-teal-500) 52%,\u0013g-color-slate-600));\u0014overlay-scrim:#0f172a99;\u0014overlay-scrim-strong:#0f172ab8;\u0014overlay-on-scrim:\u0013g-color-white);\u0014overlay-control-bg:#ffffff1f;\u0014overlay-control-border:#ffffff2e;\u0014overlay-content-bg:#0f172a59;\u0014overlay-content-border:#ffffff1f;\u0014overlay-text-muted:#ffffffd9;\u0014overlay-media-shadow:0 16px 48px #00000073;\u0014color-tooltip-bg:\u0013g-color-slate-800);\u0014color-tooltip-fg:\u0013g-color-slate-50);\u0014color-input-bg:\u0013g-color-white);\u0014color-input-text:\u0013g-color-slate-900);\u0014color-input-border:\u0013g-color-slate-300);\u0014color-input-border-focus:\u0013g-color-slate-600);\u0014color-muted:\u0013g-color-slate-500);\u0014color-input-bg-readonly:\u0013g-color-slate-50);\u0014color-input-border-readonly:\u0013g-color-slate-400);\u0014color-input-label-readonly:\u0013g-color-slate-500);\u0014color-control-bg-readonly:\u0013g-color-slate-50);\u0014color-control-border-readonly:\u0013g-color-slate-400);\u0014color-control-bg:\u0013g-color-white);\u0014color-control-border:\u0001input-border);\u0014color-control-bg-checked:\u0001brand);\u0014color-control-border-checked:\u0001brand);\u0014color-control-mark-\u000eg-color-white);\u0014color-control-text-\u000eg-color-slate-700);\u0014switch-thumb:\u0013g-color-white);\u0014switch-track-off:\u0012\u0001input-text) 32%,\u0001control-bg));\u0014color-dropdown-bg:\u0013g-color-white);\u0014color-dropdown-border:\u0013g-color-slate-200);\u0014shadow-dropdown:0 4px 12px #00000014;\u0014color-option-hover:\u0013g-color-slate-100);\u0014color-upload-bg:\u0013g-color-slate-50);\u0014color-upload-border:\u0013g-color-slate-300);\u0014color-bg:\u0013g-color-slate-50);\u0014color-text:\u0013g-color-slate-900);\u0014color-input-placeholder:\u0001muted);\u0014sortable-item-bg:\u0001surface);\u0014sortable-item-bg-hover:\u0001surface-hover);\u0014sortable-item-bg-dragging:\u0001surface);\u0014sortable-item-border:\u0001border);\u0014sortable-item-border-dragging:\u0001input-border-focus);\u0014sortable-radius:\u0005);\u0014sortable-handle-color:\u0001muted);\u0014sortable-shadow-dragging:\u0013shadow-dropdown);\u0014sortable-transition-fast:box-shadow 0.2s ease-in-out,background-color 0.2s ease-in-out,border-color 0.2s ease-in-out;\u0014sortable-transition-move:transform 0.35s cubic-bezier(0.16,1,0.3,1);\u0014color-field-bg:\u0001input-bg);\u0014color-field-text:\u0001input-text);\u0014color-field-border:\u0001input-border);\u0014color-border-hover:\u0001input-border-focus);\u0014field-label:\u0001muted);\u0014field-placeholder:\u0001input-placeholder);\u0014field-bg-readonly:\u0001input-bg-readonly);\u0014field-border-readonly:\u0001input-border-readonly);\u0014field-label-readonly:\u0001input-label-readonly);\u0014color-button-secondary-bg:\u0001surface);\u0014color-button-secondary-bg-hover:\u0001surface-hover);\u0014color-button-secondary-bg-active:\u0001surface-active);\u0014color-button-secondary-border:\u0001button-border-secondary);\u0014color-button-secondary-text:\u0001text-secondary);\u0014color-button-secondary-shadow:\u0013shadow-brand);\u0014color-button-tinted-bg:\u0001brand-tint);\u0014color-button-tinted-bg-hover:\u0001brand-tint-hover);\u0014color-button-tinted-bg-active:\u0001brand-tint-active);\u0014color-button-tinted-border:\u0001button-border-tinted);\u0014color-button-tinted-text:\u0001brand-tint-text);\u0014color-button-ghost-hover-bg:\u0001option-hover);\u0014color-button-ghost-active-bg:\u0012\u0001input-text) 8%,\u0001option-hover));\u0014color-button-ghost-text:\u0001muted);\u0014color-button-ghost-text-hover:\u0001input-text);\u0014color-chip-secondary-bg:\u0012\u0001text-secondary) 12%,#0000);\u0014color-chip-secondary-border:\u0001border);\u0014color-chip-secondary-text:\u0001text-secondary);\u0014color-chip-secondary-bg-hover:\u0012\u0001text-secondary) 20%,#0000);\u0014color-chip-secondary-border-hover:\u0012\u0001border) 70%,\u0001text-secondary));\u0014color-chip-tinted-bg:\u0001brand-tint);\u0014color-chip-tinted-border:\u0001brand-tint-border);\u0014color-chip-tinted-text:\u0001brand-tint-text);\u0014color-chip-tinted-bg-hover:\u0001brand-tint-hover);\u0014color-chip-tinted-border-hover:\u0012\u0001brand-tint-text) 35%,#0000);\u0014color-selection-fill:\u0001brand);\u0014color-selection-fill-fg:\u0001brand-text);\u0014color-selection-fill-emphasis:\u0001brand-hover);\u0014color-selection-neutral-fill:\u0012\u0001text-secondary) 22%,#0000);\u0014color-selection-neutral-border:\u0012\u0001text-secondary) 45%,\u0001border));\u0014color-selection-neutral-slider:\u0001surface);\u0014color-segmented-primary-slider-bg:\u0001selection-fill-emphasis);\u0014color-segmented-ghost-slider-bg:\u0001selection-neutral-slider);\u0014color-segmented-slider-shadow:0 1px 2px \u0012\u0013g-color-slate-900) 12%,#0000),inset 0 0 0 1px \u0012\u0013g-color-slate-900) 8%,#0000);\u0014color-panel-bg:\u0001surface);\u0014color-panel-border:\u0001border);\u0014color-panel-bg-hover:\u0001surface-hover);\u0014color-type:\u0001input-text);\u0014color-type-secondary:\u0001text-secondary);\u0014color-type-tertiary:\u0001muted);\u0014color-type-muted:\u0013g-color-slate-500);\u0014color-type-disabled:\u0001muted);\u0014color-empty-icon:\u0001text-secondary);\u0014color-link-color:\u0001brand);\u0014color-link-color-hover:\u0001brand-hover);\u0014color-link-secondary:\u0001text-secondary);\u0014color-link-secondary-hover:\u0001input-text);\u0014color-link-muted:\u0001muted);\u0014color-link-muted-hover:\u0001text-secondary);\u0014color-link-danger:\u0001status-error);\u0014color-link-danger-hover:\u0012\u0001status-error) 82%,\u0001input-text));\u0007color-bg);color:\u0001text);font-family:\u0013g-font-family-ui);transition:\u0013transition-smooth)}.-n-fq[data-theme=dark]{\u0014g-color-brand:#4e6480;\u0014g-color-brand-hover:#5d7694;\u0014g-color-brand-active:#41536b;\u0014color-brand:\u0013g-color-brand);\u0014color-brand-hover:\u0013g-color-brand-hover);\u0014color-brand-active:\u0013g-color-brand-active);\u0014color-brand-text:\u0013g-color-slate-50);\u0014color-tabs-indicator:\u0001brand-hover);\u0014color-brand-border:#ffffff38;\u0014shadow-brand:0 1px 2px #00000059;\u0014color-segmented-primary-slider-bg:\u0012\u0001brand-text) 28%,\u0001brand));\u0014color-selection-fill:\u0012\u0001brand) 42%,\u0001dropdown-bg,#262628));\u0014color-selection-fill-fg:\u0001brand-text);\u0014color-selection-fill-emphasis:\u0001segmented-primary-slider-bg);\u0014color-selection-neutral-fill:\u0012\u0001text-secondary) 22%,#0000);\u0014color-selection-neutral-border:\u0012\u0001text-secondary) 45%,\u0001border));\u0014color-selection-neutral-slider:\u0012\u0001brand-text) 11%,\u0001surface-elevated));\u0014color-segmented-ghost-slider-bg:\u0001selection-neutral-slider);\u0014color-segmented-slider-shadow:0 1px 1px \u0012\u0013g-color-black) 28%,#0000),inset 0 0 0 1px \u0012\u0013g-color-white) 7%,#0000);\u0014color-brand-tint:\u0012\u0013g-color-brand) 26%,\u0001surface));\u0014color-brand-tint-hover:\u0012\u0013g-color-brand) 34%,\u0001surface));\u0014color-brand-tint-active:\u0012\u0013g-color-black) 16%,\u0001brand-tint-hover));\u0014color-brand-tint-text:#c8d3e4;\u0014color-brand-tint-border:\u0012\u0013g-color-brand) 32%,#0000);\u0014color-button-border-primary:#ffffff38;\u0014color-button-border-secondary:\u0012#fff 10%,\u0001surface));\u0014color-button-border-tinted:\u0012\u0013g-color-brand) 36%,#0000);\u0014color-button-border-danger:#ffffff0d;\u0014color-button-border-danger-secondary:\u0012\u0001status-error) 34%,\u0001surface));\u0014color-surface:#1f1f22;\u0014color-surface-elevated:#262628;\u0014color-surface-hover:#2b2b2e;\u0014color-surface-active:#1a1a1c;\u0014color-text-secondary:#c5c9d1;\u0014color-border:\u0012#fff 12%,\u0001surface));\u0014shadow-surface:0 1px 3px #00000059,0 8px 24px #00000038;\u0014color-danger-bg-solid:#8f4e53;\u0014color-danger-bg-hover:#a35a60;\u0014color-danger-bg-active:#7a4247;\u0014color-danger-text:#fff;\u0014color-danger-shadow:0 1px 3px #0000004d;\u0014color-danger-bg-secondary:\u0012\u0001status-error) 9%,\u0001surface));\u0014color-danger-bg-secondary-hover:\u0012\u0001status-error) 15%,\u0001surface));\u0014color-danger-text-secondary:\u0001status-error);\u0014color-danger-text-secondary-hover:\u0012\u0001status-error) 78%,\u0001text));\u0014color-danger-shadow-secondary:0 1px 2px #0003;\u0014color-danger-tint-bg:\u0012\u0001status-error) 16%,\u0001surface));\u0014color-danger-tint-bg-hover:\u0012\u0001status-error) 22%,\u0001surface));\u0014color-danger-tint-bg-active:\u0012\u0001status-error) 28%,\u0001surface));\u0014color-danger-tint-text:\u0001status-error);\u0014color-button-border-danger-tinted:\u0012\u0001status-error) 30%,#0000);\u0014color-status-info:#5b8cba;\u0014color-status-success:#53b689;\u0014color-status-success-strong:#53b689;\u0014color-status-warning:#c4a05e;\u0014color-status-warning-strong:#c4a05e;\u0014color-status-error:#cf7379;\u0014color-chart-4:#8b82b0;\u0014color-chart-5:#5a9e96;\u0014status-bg-amt:14%;\u0014status-bg-base:\u0001surface);\u0014status-border-amt:26%;\u0014status-bg-hover-amt:22%;\u0014status-border-hover-amt:38%;\u0014status-warning-bg-amt:14%;\u0014status-warning-border-amt:26%;\u0014status-warning-bg-hover-amt:24%;\u0014status-warning-border-hover-amt:40%;\u0014status-danger-bg-hover-amt:20%;\u0014status-danger-border-hover-amt:36%;\u0014overlay-scrim:#0a0a0cb8;\u0014overlay-scrim-strong:#0a0a0cd6;\u0014overlay-on-scrim:#f8fafc;\u0014overlay-control-bg:\u0001input-bg);\u0014overlay-control-border:\u0001input-border);\u0014overlay-content-bg:#0a0a0c66;\u0014overlay-content-border:#ffffff1a;\u0014overlay-text-muted:#f8fafcd9;\u0014overlay-media-shadow:0 16px 48px #0000008c;\u0014color-input-bg:\u0001surface-hover);\u0014color-input-text:#f1f5f9;\u0014color-input-border:\u0012#fff 17%,#0000);\u0014color-input-border-focus:#6b7f98;\u0014focus-ring-color:#f8fafcb8;\u0014focus-ring-offset:2px;\u0014button-focus-inner:2px;\u0014button-focus-outer:4px;\u0014color-link-color:#9aafc4;\u0014color-link-color-hover:#c8d3e4;\u0014color-muted:#a8a8b3;\u0014field-label:#a8a8b3;\u0014color-type-tertiary:#8c8c99;\u0014color-type-muted:#8c8c99;\u0014color-input-bg-readonly:\u0001surface);\u0014color-input-border-readonly:#475569;\u0014color-input-label-readonly:#a8a8b3;\u0014color-control-bg-readonly:\u0001surface);\u0014color-control-border-readonly:#475569;\u0014color-control-bg:\u0001surface-hover);\u0014color-control-border:\u0001input-border);\u0014color-control-bg-checked:\u0001brand);\u0014color-control-border-checked:\u0001brand-hover);\u0014color-control-mark-color:#f1f5f9;\u0014color-control-text-color:#cbd5e1;\u0014switch-thumb:#f8fafc;\u0014switch-track-off:\u0012\u0001input-text) 42%,\u0001control-bg));\u0014color-dropdown-bg:\u0001surface-elevated);\u0014color-dropdown-border:\u0012#fff 14%,#0000);\u0014shadow-dropdown:0 8px 28px #0006;\u0014color-option-hover:#2d2d30;\u0014color-upload-bg:\u0001surface);\u0014color-upload-border:\u0012#fff 22%,#0000);\u0014color-bg:#141416;\u0014color-tooltip-bg:#303033;\u0014color-tooltip-fg:\u0013g-color-slate-50);\u0014color-text:#f8fafc;\u0014color-input-placeholder:\u0001type-muted);\u0014overlay-close-fg:\u0001muted);\u0014overlay-close-bg:#0000;\u0014overlay-close-bg-hover:\u0001option-hover);\u0014color-button-secondary-bg:\u0012\u0013g-color-brand) 12%,\u0001surface));\u0014color-button-secondary-bg-hover:\u0012\u0013g-color-brand) 18%,\u0001surface-hover));\u0014color-button-secondary-bg-active:\u0001surface-active)}@media (prefers-reduced-motion:reduce){.-n-fq,.-n-fq *{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}";const l={themeProvider:"-n-fq"};o(a);export{l as default};
1
+ "use client";import{injectCss as o}from"../../core/utils/injectCss.js";var a=".-n-fq{\u0014g-radius:8px;\u0014g-radius-sm:4px;\u0014g-radius-md:\u0005);\u0014g-radius-lg:12px;\u0014g-radius-pill:9999px;\u0014g-font-family-ui:system-ui,-apple-system,sans-serif;\u0014g-font-family-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;\u0014g-font-weight-normal:400;\u0014g-font-weight-medium:500;\u0014g-font-weight-semibold:600;\u0014g-font-weight-bold:700;\u0014g-font-size-3xs:10px;\u0014g-line-height-3xs:1.1;\u0014g-font-size-2xs:12px;\u0014g-line-height-2xs:1.2;\u0014g-font-size-xs:11px;\u0014g-line-height-xs:1.35;\u0014g-font-size-sm:13px;\u0014g-line-height-sm:1.35;\u0014g-font-size-base:14px;\u0014g-line-height-base:1.45;\u0014g-font-size-lg:16px;\u0014g-line-height-lg:1.4;\u0014g-font-size-xl:18px;\u0014g-line-height-xl:1.35;\u0014g-font-size-2xl:20px;\u0014g-font-size-3xl:24px;\u0014g-font-size-4xl:32px;\u0014g-color-white:#fff;\u0014g-color-black:#000;\u0014g-color-slate-50:#f8fafc;\u0014g-color-slate-100:#f1f5f9;\u0014g-color-slate-200:#e2e8f0;\u0014g-color-slate-300:#cbd5e1;\u0014g-color-slate-400:#94a3b8;\u0014g-color-slate-500:#64748b;\u0014g-color-slate-600:#475569;\u0014g-color-slate-700:#334155;\u0014g-color-slate-800:#1e293b;\u0014g-color-slate-900:#0f172a;\u0014g-color-red-300:#fca5a5;\u0014g-color-red-400:#f87171;\u0014g-color-red-600:#dc2626;\u0014g-color-red-700:#b91c1c;\u0014g-color-red-800:#991b1b;\u0014g-color-red-900:#7f1d1d;\u0014g-color-blue-500:#3b82f6;\u0014g-color-emerald-500:#10b981;\u0014g-color-green-600:#16a34a;\u0014g-color-amber-500:#f59e0b;\u0014g-color-amber-600:#d97706;\u0014g-color-violet-500:#8b5cf6;\u0014g-color-teal-500:#14b8a6;\u0014g-color-brand:\u0013g-color-slate-600);\u0014g-color-brand-hover:\u0013g-color-slate-700);\u0014g-color-brand-active:\u0013g-color-slate-800);\u0014dialog-body-size:\u0003base);\u0014dialog-max-width-sm:460px;\u0014dialog-max-width-md:620px;\u0014dialog-max-width-lg:760px;\u0014dialog-max-height:85vh;\u0014motion-overlay:0.2s;\u0014option-padding-y:\u00022);\u0014option-padding-x:\u00023);\u0014toggle-box-size-sm:16px;\u0014toggle-box-size:20px;\u0014toggle-box-size-lg:24px;\u0014toggle-label-gap:\u00023);\u0014toggle-stack-gap:\u00023);\u0014toggle-check-width:4px;\u0014toggle-check-height:8px;\u0014toggle-check-stroke:2px;\u0014toggle-check-width-sm:3px;\u0014toggle-check-height-sm:6px;\u0014toggle-check-stroke-sm:1.5px;\u0014toggle-check-width-lg:5px;\u0014toggle-check-height-lg:9px;\u0014toggle-dash-width:8px;\u0014toggle-dash-height:2px;\u0014toggle-dash-width-sm:6px;\u0014toggle-dash-height-sm:1.5px;\u0014toggle-dash-width-lg:10px;\u0014toggle-task-check-height:7px;\u0014toggle-radio-dot:6px;\u0014toggle-radio-dot-sm:4px;\u0014toggle-radio-dot-lg:8px;\u0014toggle-align-nudge:0.15em;\u0014control-inset:2px;\u0014focus-ring-width:2px;\u0014focus-ring-offset:1px;\u0014focus-ring-color:\u0001input-border-focus);\u0014button-focus-inner:1px;\u0014button-focus-outer:3px;\u0014opacity-disabled:0.55;\u0014field-disabled-opacity:0.8;\u0014overlay-close-size:28px;\u0014overlay-close-icon-size:16px;\u0014overlay-close-fg:\u0001muted);\u0014overlay-close-fg-hover:\u0001text);\u0014overlay-close-bg:#0000;\u0014overlay-close-bg-hover:\u0001option-hover);\u0014field-message-gap:\u00021);\u0014field-pad-top-sm:calc(\u00023) + \u0013control-inset));\u0014field-pad-bottom-sm:calc(\u00021) + \u0013control-inset));\u0014field-pad-top-md:\u00025);\u0014field-pad-bottom-md:\u00022);\u0014field-pad-top-lg:\u00026);\u0014field-pad-bottom-lg:calc(\u00022) + \u0013control-inset));\u0014form-legend-size:\u0003base);\u0014form-legend-weight:\u0004semibold);\u0014form-legend-line-\u000fg-line-height-sm);\u0014form-helper-indent:\u00021);\u0014control-icon-size-sm:14px;\u0014control-icon-size-md:18px;\u0014control-icon-size-lg:22px;\u0014badge-size-sm:16px;\u0014badge-size-md:18px;\u0014badge-font-size:\u00033xs);\u0014badge-font-size-sm:\u0003xs);\u0014badge-overhang:calc(\u00021) + \u0013control-inset));\u0014badge-digit-nudge:0.5px;\u0014slider-track-height:3px;\u0014slider-thumb-size:12px;\u0014slider-track:\u0012\u0001input-text) 12%,#0000);\u0014pagination-active-bar:2px;\u0014color-tabs-indicator:\u0001brand);\u0014color-fill-primary-bg:\u0001brand);\u0014color-fill-primary-fg:\u0001brand-text);\u0014color-fill-floating-bg:\u0001dropdown-bg);\u0014color-fill-floating-fg:\u0001input-text);\u0014surface-secondary-bg:\u0001surface);\u0014surface-secondary-border:\u0001border);\u0014surface-secondary-shadow:\u0013shadow-surface);\u0014color-ink-default:\u0001input-text);\u0014color-ink-muted:\u0001muted);\u0014transition-smooth:color 0.16s cubic-bezier(0.16,1,0.3,1),background-color 0.16s cubic-bezier(0.16,1,0.3,1),border-color 0.16s cubic-bezier(0.16,1,0.3,1),box-shadow 0.16s cubic-bezier(0.16,1,0.3,1),opacity 0.16s cubic-bezier(0.16,1,0.3,1);\u0014g-space-1:4px;\u0014g-space-2:8px;\u0014g-space-3:12px;\u0014g-space-4:16px;\u0014g-space-5:20px;\u0014g-space-6:24px;\u0014g-space-7:28px;\u0014g-space-8:32px;\u0014g-space-9:36px;\u0014control-height-xs:28px;\u0014control-height-sm:32px;\u0014control-height-md:44px;\u0014control-height-lg:52px;\u0014switch-track-width-sm:28px;\u0014switch-track-height-sm:\u0013toggle-box-size-sm);\u0014switch-thumb-size-sm:calc(\u0013toggle-box-size-sm) - \u0013control-inset)*2);\u0014switch-track-width-md:36px;\u0014switch-track-height-md:\u0013toggle-box-size);\u0014switch-thumb-size-md:calc(\u0013toggle-box-size) - \u0013control-inset)*2);\u0014switch-track-width-lg:44px;\u0014switch-track-height-lg:\u0013toggle-box-size-lg);\u0014switch-thumb-size-lg:calc(\u0013toggle-box-size-lg) - \u0013control-inset)*2);\u0014g-z-below:-1;\u0014g-z-raised:1;\u0014g-z-raised-above:2;\u0014g-z-control:5;\u0014g-z-local:10;\u0014g-z-upload:50;\u0014g-z-dropdown:1200;\u0014g-z-notification:1300;\u0014g-z-skip:10000;\u0014field-width-default:320px;\u0014chart-legend-min-width:140px;\u0014popover-min-width:180px;\u0014popover-max-width:360px;\u0014popover-tooltip-max-width:280px;\u0014container-max-sm:640px;\u0014container-max-md:768px;\u0014container-max-lg:960px;\u0014container-max-xl:1200px;\u0014image-crop-size:280px;\u0014image-crop-panel-max:560px;\u0014image-crop-stage-max:480px;\u0014image-gallery-viewport-min:200px;\u0014image-gallery-thumb-width:72px;\u0014image-gallery-thumb-height:54px;\u0014day-strip-day-min:56px;\u0014notification-anchor-inset:56px;\u0014notification-stack-front:64px;\u0014rating-size-sm:16px;\u0014rating-size-md:22px;\u0014rating-size-lg:28px;\u0014command-palette-max-width:\u0013dialog-max-width-md);\u0014command-palette-max-height:520px;\u0014button-group-item-min-sm:\u00026);\u0014button-group-item-min-md:\u00027);\u0014button-group-item-min-lg:\u00028);\u0014overlay-offset-popover:4px;\u0014color-brand:\u0013g-color-brand);\u0014color-brand-hover:\u0013g-color-brand-hover);\u0014color-brand-active:\u0013g-color-brand-active);\u0014color-brand-text:\u0013g-color-white);\u0014color-brand-border:#ffffff1a;\u0014shadow-brand:0 1px 2px #4755691f;\u0014color-brand-tint:\u0012\u0001brand) 16%,#0000);\u0014color-brand-tint-hover:\u0012\u0001brand) 22%,#0000);\u0014color-brand-tint-active:\u0012\u0001brand-active) 28%,#0000);\u0014color-brand-tint-text:\u0001brand);\u0014color-brand-tint-border:\u0012\u0001brand) 22%,#0000);\u0014color-button-border-primary:#1e293b73;\u0014color-button-border-secondary:\u0013g-color-slate-300);\u0014color-button-border-tinted:\u0012\u0001brand) 28%,#0000);\u0014color-button-border-danger:#991b1b59;\u0014color-button-border-danger-secondary:\u0013g-color-red-300);\u0014color-surface:\u0013g-color-white);\u0014color-surface-elevated:\u0013g-color-white);\u0014color-surface-hover:\u0013g-color-slate-50);\u0014color-surface-active:\u0013g-color-slate-100);\u0014color-text-secondary:\u0013g-color-slate-600);\u0014color-border:\u0013g-color-slate-200);\u0014shadow-surface:0 1px 2px #0f172a0f,0 4px 12px #0f172a0a;\u0014shadow-lg:0 16px 48px \u0012\u0001input-text) 16%,#0000);\u0014color-danger-bg-solid:\u0012\u0013g-color-red-700) 72%,\u0013g-color-slate-700));\u0014color-danger-bg-hover:\u0012\u0013g-color-red-800) 72%,\u0013g-color-slate-800));\u0014color-danger-bg-active:\u0012\u0013g-color-red-900) 78%,\u0013g-color-slate-900));\u0014color-danger-text:\u0013g-color-white);\u0014color-danger-shadow:0 1px 2px #b91c1c1f;\u0014color-danger-bg-secondary:\u0013g-color-white);\u0014color-danger-bg-secondary-hover:\u0012\u0001status-error) 12%,#0000);\u0014color-danger-text-secondary:\u0001status-error);\u0014color-danger-text-secondary-hover:\u0012\u0001status-error) 82%,\u0001input-text));\u0014color-danger-shadow-secondary:0 1px 2px #00000005;\u0014color-danger-tint-bg:\u0012\u0001danger-bg-solid) 12%,#0000);\u0014color-danger-tint-bg-hover:\u0012\u0001danger-bg-solid) 18%,#0000);\u0014color-danger-tint-bg-active:\u0012\u0001danger-bg-solid) 24%,#0000);\u0014color-danger-tint-text:\u0001danger-bg-hover);\u0014color-button-border-danger-tinted:\u0012\u0001danger-bg-solid) 28%,#0000);\u0014color-status-info:\u0012\u0013g-color-blue-500) 58%,\u0013g-color-slate-600));\u0014color-status-success:\u0012\u0013g-color-emerald-500) 55%,\u0013g-color-slate-600));\u0014color-status-success-strong:\u0012\u0013g-color-green-600) 68%,\u0013g-color-slate-700));\u0014color-status-warning:\u0012\u0013g-color-amber-500) 58%,\u0013g-color-slate-600));\u0014color-status-warning-strong:\u0012\u0013g-color-amber-600) 68%,\u0013g-color-slate-700));\u0014color-status-error:\u0012\u0013g-color-red-700) 62%,\u0013g-color-slate-600));\u0014color-chart-4:\u0012\u0013g-color-violet-500) 52%,\u0013g-color-slate-600));\u0014color-chart-5:\u0012\u0013g-color-teal-500) 52%,\u0013g-color-slate-600));\u0014overlay-scrim:#0f172a99;\u0014overlay-scrim-strong:#0f172ab8;\u0014overlay-on-scrim:\u0013g-color-white);\u0014overlay-control-bg:#ffffff1f;\u0014overlay-control-border:#ffffff2e;\u0014overlay-content-bg:#0f172a59;\u0014overlay-content-border:#ffffff1f;\u0014overlay-text-muted:#ffffffd9;\u0014overlay-media-shadow:0 16px 48px #00000073;\u0014color-tooltip-bg:\u0013g-color-slate-800);\u0014color-tooltip-fg:\u0013g-color-slate-50);\u0014color-input-bg:\u0013g-color-white);\u0014color-input-text:\u0013g-color-slate-900);\u0014color-input-border:\u0013g-color-slate-300);\u0014color-input-border-focus:\u0013g-color-slate-600);\u0014color-muted:\u0013g-color-slate-500);\u0014color-input-bg-readonly:\u0013g-color-slate-50);\u0014color-input-border-readonly:\u0013g-color-slate-400);\u0014color-input-label-readonly:\u0013g-color-slate-500);\u0014color-control-bg-readonly:\u0013g-color-slate-50);\u0014color-control-border-readonly:\u0013g-color-slate-400);\u0014color-control-bg:\u0013g-color-white);\u0014color-control-border:\u0001input-border);\u0014color-control-bg-checked:\u0001brand);\u0014color-control-border-checked:\u0001brand);\u0014color-control-mark-\u000eg-color-white);\u0014color-control-text-\u000eg-color-slate-700);\u0014switch-thumb:\u0013g-color-white);\u0014switch-track-off:\u0012\u0001input-text) 32%,\u0001control-bg));\u0014color-dropdown-bg:\u0013g-color-white);\u0014color-dropdown-border:\u0013g-color-slate-200);\u0014shadow-dropdown:0 4px 12px #00000014;\u0014color-option-hover:\u0013g-color-slate-100);\u0014color-upload-bg:\u0013g-color-slate-50);\u0014color-upload-border:\u0013g-color-slate-300);\u0014color-bg:\u0013g-color-slate-50);\u0014color-text:\u0013g-color-slate-900);\u0014color-input-placeholder:\u0001muted);\u0014sortable-item-bg:\u0001surface);\u0014sortable-item-bg-hover:\u0001surface-hover);\u0014sortable-item-bg-dragging:\u0001surface);\u0014sortable-item-border:\u0001border);\u0014sortable-item-border-dragging:\u0001input-border-focus);\u0014sortable-radius:\u0005);\u0014sortable-handle-color:\u0001muted);\u0014sortable-shadow-dragging:\u0013shadow-dropdown);\u0014sortable-transition-fast:box-shadow 0.2s ease-in-out,background-color 0.2s ease-in-out,border-color 0.2s ease-in-out;\u0014sortable-transition-move:transform 0.35s cubic-bezier(0.16,1,0.3,1);\u0014color-field-bg:\u0001input-bg);\u0014color-field-text:\u0001input-text);\u0014color-field-border:\u0001input-border);\u0014color-border-hover:\u0001input-border-focus);\u0014field-label:\u0001muted);\u0014field-placeholder:\u0001input-placeholder);\u0014field-bg-readonly:\u0001input-bg-readonly);\u0014field-border-readonly:\u0001input-border-readonly);\u0014field-label-readonly:\u0001input-label-readonly);\u0014color-button-secondary-bg:\u0001surface);\u0014color-button-secondary-bg-hover:\u0001surface-hover);\u0014color-button-secondary-bg-active:\u0001surface-active);\u0014color-button-secondary-border:\u0001button-border-secondary);\u0014color-button-secondary-text:\u0001text-secondary);\u0014color-button-secondary-shadow:\u0013shadow-brand);\u0014color-button-tinted-bg:\u0001brand-tint);\u0014color-button-tinted-bg-hover:\u0001brand-tint-hover);\u0014color-button-tinted-bg-active:\u0001brand-tint-active);\u0014color-button-tinted-border:\u0001button-border-tinted);\u0014color-button-tinted-text:\u0001brand-tint-text);\u0014color-button-ghost-hover-bg:\u0001option-hover);\u0014color-button-ghost-active-bg:\u0012\u0001input-text) 8%,\u0001option-hover));\u0014color-button-ghost-text:\u0001muted);\u0014color-button-ghost-text-hover:\u0001input-text);\u0014color-chip-secondary-bg:\u0012\u0001text-secondary) 12%,#0000);\u0014color-chip-secondary-border:\u0001border);\u0014color-chip-secondary-text:\u0001text-secondary);\u0014color-chip-secondary-bg-hover:\u0012\u0001text-secondary) 20%,#0000);\u0014color-chip-secondary-border-hover:\u0012\u0001border) 70%,\u0001text-secondary));\u0014color-chip-tinted-bg:\u0001brand-tint);\u0014color-chip-tinted-border:\u0001brand-tint-border);\u0014color-chip-tinted-text:\u0001brand-tint-text);\u0014color-chip-tinted-bg-hover:\u0001brand-tint-hover);\u0014color-chip-tinted-border-hover:\u0012\u0001brand-tint-text) 35%,#0000);\u0014color-selection-fill:\u0001brand);\u0014color-selection-fill-fg:\u0001brand-text);\u0014color-selection-fill-emphasis:\u0001brand-hover);\u0014color-selection-neutral-fill:\u0012\u0001text-secondary) 22%,#0000);\u0014color-selection-neutral-border:\u0012\u0001text-secondary) 45%,\u0001border));\u0014color-selection-neutral-slider:\u0001surface);\u0014color-segmented-primary-slider-bg:\u0001selection-fill-emphasis);\u0014color-segmented-ghost-slider-bg:\u0001selection-neutral-slider);\u0014color-segmented-slider-shadow:0 1px 2px \u0012\u0013g-color-slate-900) 12%,#0000),inset 0 0 0 1px \u0012\u0013g-color-slate-900) 8%,#0000);\u0014color-panel-bg:\u0001surface);\u0014color-panel-border:\u0001border);\u0014color-panel-bg-hover:\u0001surface-hover);\u0014color-type:\u0001input-text);\u0014color-type-secondary:\u0001text-secondary);\u0014color-type-tertiary:\u0001muted);\u0014color-type-muted:\u0013g-color-slate-500);\u0014color-type-disabled:\u0001muted);\u0014color-empty-icon:\u0001text-secondary);\u0014color-link-color:\u0001brand);\u0014color-link-color-hover:\u0001brand-hover);\u0014color-link-secondary:\u0001text-secondary);\u0014color-link-secondary-hover:\u0001input-text);\u0014color-link-muted:\u0001muted);\u0014color-link-muted-hover:\u0001text-secondary);\u0014color-link-danger:\u0001status-error);\u0014color-link-danger-hover:\u0012\u0001status-error) 82%,\u0001input-text));\u0007color-bg);color:\u0001text);font-family:\u0013g-font-family-ui);transition:\u0013transition-smooth)}.-n-fq[data-theme=dark]{\u0014g-color-brand:#4e6480;\u0014g-color-brand-hover:#5d7694;\u0014g-color-brand-active:#41536b;\u0014color-brand:\u0013g-color-brand);\u0014color-brand-hover:\u0013g-color-brand-hover);\u0014color-brand-active:\u0013g-color-brand-active);\u0014color-brand-text:\u0013g-color-slate-50);\u0014color-tabs-indicator:\u0001brand-hover);\u0014color-brand-border:#ffffff38;\u0014shadow-brand:0 1px 2px #00000059;\u0014color-segmented-primary-slider-bg:\u0012\u0001brand-text) 28%,\u0001brand));\u0014color-selection-fill:\u0012\u0001brand) 42%,\u0001dropdown-bg,#262628));\u0014color-selection-fill-fg:\u0001brand-text);\u0014color-selection-fill-emphasis:\u0001segmented-primary-slider-bg);\u0014color-selection-neutral-fill:\u0012\u0001text-secondary) 22%,#0000);\u0014color-selection-neutral-border:\u0012\u0001text-secondary) 45%,\u0001border));\u0014color-selection-neutral-slider:\u0012\u0001brand-text) 11%,\u0001surface-elevated));\u0014color-segmented-ghost-slider-bg:\u0001selection-neutral-slider);\u0014color-segmented-slider-shadow:0 1px 1px \u0012\u0013g-color-black) 28%,#0000),inset 0 0 0 1px \u0012\u0013g-color-white) 7%,#0000);\u0014color-brand-tint:\u0012\u0013g-color-brand) 26%,\u0001surface));\u0014color-brand-tint-hover:\u0012\u0013g-color-brand) 34%,\u0001surface));\u0014color-brand-tint-active:\u0012\u0013g-color-black) 16%,\u0001brand-tint-hover));\u0014color-brand-tint-text:#c8d3e4;\u0014color-brand-tint-border:\u0012\u0013g-color-brand) 32%,#0000);\u0014color-button-border-primary:#ffffff38;\u0014color-button-border-secondary:\u0012#fff 10%,\u0001surface));\u0014color-button-border-tinted:\u0012\u0013g-color-brand) 36%,#0000);\u0014color-button-border-danger:#ffffff0d;\u0014color-button-border-danger-secondary:\u0012\u0001status-error) 34%,\u0001surface));\u0014color-surface:#1f1f22;\u0014color-surface-elevated:#262628;\u0014color-surface-hover:#2b2b2e;\u0014color-surface-active:#1a1a1c;\u0014color-text-secondary:#c5c9d1;\u0014color-border:\u0012#fff 12%,\u0001surface));\u0014shadow-surface:0 1px 3px #00000059,0 8px 24px #00000038;\u0014color-danger-bg-solid:#8f4e53;\u0014color-danger-bg-hover:#a35a60;\u0014color-danger-bg-active:#7a4247;\u0014color-danger-text:#fff;\u0014color-danger-shadow:0 1px 3px #0000004d;\u0014color-danger-bg-secondary:\u0012\u0001status-error) 9%,\u0001surface));\u0014color-danger-bg-secondary-hover:\u0012\u0001status-error) 15%,\u0001surface));\u0014color-danger-text-secondary:\u0001status-error);\u0014color-danger-text-secondary-hover:\u0012\u0001status-error) 78%,\u0001text));\u0014color-danger-shadow-secondary:0 1px 2px #0003;\u0014color-danger-tint-bg:\u0012\u0001status-error) 16%,\u0001surface));\u0014color-danger-tint-bg-hover:\u0012\u0001status-error) 22%,\u0001surface));\u0014color-danger-tint-bg-active:\u0012\u0001status-error) 28%,\u0001surface));\u0014color-danger-tint-text:\u0001status-error);\u0014color-button-border-danger-tinted:\u0012\u0001status-error) 30%,#0000);\u0014color-status-info:#5b8cba;\u0014color-status-success:#53b689;\u0014color-status-success-strong:#53b689;\u0014color-status-warning:#c4a05e;\u0014color-status-warning-strong:#c4a05e;\u0014color-status-error:#cf7379;\u0014color-chart-4:#8b82b0;\u0014color-chart-5:#5a9e96;\u0014status-bg-amt:14%;\u0014status-bg-base:\u0001surface);\u0014status-border-amt:26%;\u0014status-bg-hover-amt:22%;\u0014status-border-hover-amt:38%;\u0014status-warning-bg-amt:14%;\u0014status-warning-border-amt:26%;\u0014status-warning-bg-hover-amt:24%;\u0014status-warning-border-hover-amt:40%;\u0014status-danger-bg-hover-amt:20%;\u0014status-danger-border-hover-amt:36%;\u0014overlay-scrim:#0a0a0cb8;\u0014overlay-scrim-strong:#0a0a0cd6;\u0014overlay-on-scrim:#f8fafc;\u0014overlay-control-bg:\u0001input-bg);\u0014overlay-control-border:\u0001input-border);\u0014overlay-content-bg:#0a0a0c66;\u0014overlay-content-border:#ffffff1a;\u0014overlay-text-muted:#f8fafcd9;\u0014overlay-media-shadow:0 16px 48px #0000008c;\u0014color-input-bg:\u0001surface-hover);\u0014color-input-text:#f1f5f9;\u0014color-input-border:\u0012#fff 17%,#0000);\u0014color-input-border-focus:#6b7f98;\u0014focus-ring-color:#f8fafcb8;\u0014focus-ring-offset:2px;\u0014button-focus-inner:2px;\u0014button-focus-outer:4px;\u0014color-link-color:#9aafc4;\u0014color-link-color-hover:#c8d3e4;\u0014color-muted:#a8a8b3;\u0014field-label:#a8a8b3;\u0014color-type-tertiary:#8c8c99;\u0014color-type-muted:#8c8c99;\u0014color-input-bg-readonly:\u0001surface);\u0014color-input-border-readonly:#475569;\u0014color-input-label-readonly:#a8a8b3;\u0014color-control-bg-readonly:\u0001surface);\u0014color-control-border-readonly:#475569;\u0014color-control-bg:\u0001surface-hover);\u0014color-control-border:\u0001input-border);\u0014color-control-bg-checked:\u0001brand);\u0014color-control-border-checked:\u0001brand-hover);\u0014color-control-mark-color:#f1f5f9;\u0014color-control-text-color:#cbd5e1;\u0014switch-thumb:#f8fafc;\u0014switch-track-off:\u0012\u0001input-text) 42%,\u0001control-bg));\u0014color-dropdown-bg:\u0001surface-elevated);\u0014color-dropdown-border:\u0012#fff 14%,#0000);\u0014shadow-dropdown:0 8px 28px #0006;\u0014color-option-hover:#2d2d30;\u0014color-upload-bg:\u0001surface);\u0014color-upload-border:\u0012#fff 22%,#0000);\u0014color-bg:#141416;\u0014color-tooltip-bg:#303033;\u0014color-tooltip-fg:\u0013g-color-slate-50);\u0014color-text:#f8fafc;\u0014color-input-placeholder:\u0001type-muted);\u0014overlay-close-fg:\u0001muted);\u0014overlay-close-bg:#0000;\u0014overlay-close-bg-hover:\u0001option-hover);\u0014color-button-secondary-bg:\u0012\u0013g-color-brand) 12%,\u0001surface));\u0014color-button-secondary-bg-hover:\u0012\u0013g-color-brand) 18%,\u0001surface-hover));\u0014color-button-secondary-bg-active:\u0001surface-active)}@media (prefers-reduced-motion:reduce){.-n-fq,.-n-fq *{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}";const l={themeProvider:"-n-fq"};o(a);export{l as default};
@@ -1 +1 @@
1
- "use client";import{jsx as n}from"react/jsx-runtime";import{useRef as v,useState as p}from"react";import{MaskedField as K}from"../MaskedField/MaskedField.js";import{Popover as O}from"../Popover/Popover.js";import{FieldBaseIcon as j}from"../TextField/TextField.js";import{IconClock as q}from"../../icons/icons/IconClock.js";import{bindFieldChromeRef as B}from"../../core/utils/dom.js";import{commitMaskedValue as L}from"../../core/utils/commitMaskedValue.js";import{uRef as Q}from"../../core/utils/bundle.js";import{popoverDomId as U,showPopover as h}from"../../core/utils/popover.js";import{formatHHmm as b}from"../../core/utils/date.js";import k from"./TimeField.module.css.js";import{useFallbackId as V}from"../../core/utils/useFallbackId.js";import{WheelTimePicker as W}from"../WheelTimePicker/WheelTimePicker.js";const T=(e,o)=>Number.isInteger(e)&&Number.isInteger(o)&&e>=0&&e<=23&&o>=0&&o<=59,X=e=>{if(e.length!==4)return;const o=+e.slice(0,2),i=+e.slice(2);return T(o,i)?b(o,i):void 0},z=e=>{const[o,i]=e.split(":").map(Number);return T(o,i)?{hours:o,minutes:i}:null};function G(e,o){e?.querySelectorAll("[data-field-control]").forEach(i=>{i.setAttribute("aria-expanded",o?"true":"false")})}function J({value:e,onChange:o,label:i,disabled:u,readOnly:m,prefix:C,onFocus:N,onClick:F,onKeyDown:A,className:I,inputRef:P,...R}){const d=v(null),c=v(null),w=U(V()),l=e.replace(/\D/g,""),[x,f]=p(l),[y,D]=p(l),[H,M]=p(!1),s=!u&&!m,S=r=>o(b(r.hours,r.minutes));l!==y&&(D(l),f(l));const g=(r,a)=>n(K,{...R,inputRef:Q(P,a?B(a):void 0),className:I,label:i,mask:"99:99",value:x,onChange:t=>{m||(f(t),L(t,X,E=>o(E??"")))},disabled:u,readOnly:m,prefix:C??n(j,{children:n(q,{})}),popoverTarget:r?.popoverTarget,popoverTargetAction:r?.popoverTargetAction,onClick:t=>{F?.(t),t.defaultPrevented||r?.onClick?.(t),s&&!t.defaultPrevented&&h(c.current)},onKeyDown:A,onFocus:t=>{N?.(t),s&&t.currentTarget.matches(":focus-visible")&&h(c.current)}});return n("div",{className:k.host,ref:d,children:s?n(O,{id:w,popoverTargetAction:"show",role:"dialog",side:"bottom",align:"end",widthMode:"content",className:k.panel,panelRef:c,onToggle:r=>{M(r),G(d.current,r)},trigger:(r,a)=>g(r,a),children:n(W,{active:H,value:z(e),onChange:S})}):g()})}export{J as TimeField};
1
+ "use client";import{jsx as n}from"react/jsx-runtime";import{useRef as v,useState as p}from"react";import{MaskedField as K}from"../MaskedField/MaskedField.js";import{Popover as O}from"../Popover/Popover.js";import{FieldBaseIcon as j}from"../TextField/TextField.js";import{IconClock as q}from"../../icons/icons/IconClock.js";import{bindFieldChromeRef as B}from"../../core/utils/dom.js";import{commitMaskedValue as L}from"../../core/utils/commitMaskedValue.js";import{uRef as Q}from"../../core/utils/bundle.js";import{popoverDomId as U,showPopover as h}from"../../core/utils/popover.js";import{formatHHmm as b}from"../../core/utils/date.js";import k from"./TimeField.module.css.js";import{useFallbackId as V}from"../../core/utils/useFallbackId.js";import{WheelTimePicker as W}from"../WheelTimePicker/WheelTimePicker.js";const C=(e,o)=>Number.isInteger(e)&&Number.isInteger(o)&&e>=0&&e<=23&&o>=0&&o<=59,X=e=>{if(e.length!==4)return;const o=+e.slice(0,2),i=+e.slice(2);return C(o,i)?b(o,i):void 0},z=e=>{const[o,i]=e.split(":").map(Number);return C(o,i)?{hours:o,minutes:i}:null};function G(e,o){e?.querySelectorAll("[data-field-control]").forEach(i=>{i.setAttribute("aria-expanded",o?"true":"false")})}function J({value:e,onChange:o,label:i,disabled:u,readOnly:m,prefix:N,onFocus:F,onClick:w,onKeyDown:I,className:P,inputRef:R,...x}){const d=v(null),c=v(null),y=U(V()),l=e.replace(/\D/g,""),[D,f]=p(l),[T,A]=p(l),[H,M]=p(!1),s=!u&&!m,S=r=>o(b(r.hours,r.minutes));l!==T&&(A(l),f(l));const g=(r,a)=>n(K,{...x,inputRef:Q(R,a?B(a):void 0),className:P,label:i,mask:"99:99",value:D,onChange:t=>{m||(f(t),L(t,X,E=>o(E??"")))},disabled:u,readOnly:m,prefix:N??n(j,{children:n(q,{})}),popovertarget:r?.popovertarget,popovertargetaction:r?.popovertargetaction,onClick:t=>{w?.(t),t.defaultPrevented||r?.onClick?.(t),s&&!t.defaultPrevented&&h(c.current)},onKeyDown:I,onFocus:t=>{F?.(t),s&&t.currentTarget.matches(":focus-visible")&&h(c.current)}});return n("div",{className:k.host,ref:d,children:s?n(O,{id:y,popoverTargetAction:"show",role:"dialog",side:"bottom",align:"end",widthMode:"content",className:k.panel,panelRef:c,onToggle:r=>{M(r),G(d.current,r)},trigger:(r,a)=>g(r,a),children:n(W,{active:H,value:z(e),onChange:S})}):g()})}export{J as TimeField};
@@ -1 +1 @@
1
- "use client";import{useOutsideClick as r}from"../hooks/useOutsideClick.js";import{useDocumentKeyDown as s}from"../hooks/useDocumentKeyDown.js";import{useControlledState as m,useControlledStateWithCallback as E}from"../hooks/useControlledState.js";import{useNow as i}from"../hooks/useNow.js";import{MOBILE_MEDIA_QUERY as l,SIDEBAR_LARGE_MEDIA_QUERY as p,SIDEBAR_MEDIUM_MEDIA_QUERY as x,useIsMobile as I,useIsSidebarLarge as M,useIsSidebarMedium as a,useMediaQuery as D}from"../hooks/useMediaQuery.js";import{REDUCED_MOTION_QUERY as _,usePrefersReducedMotion as n}from"../hooks/usePrefersReducedMotion.js";import{useLongPress as A}from"../hooks/useLongPress.js";import{useForm as S}from"../hooks/useForm.js";import{useFormContext as Q,useFormProvider as b}from"../hooks/useFormProvider.js";import{checkedValue as O,compose as Y,fieldRules as k,pattern as B,required as F}from"../shared/form/formRules.js";export{l as MOBILE_MEDIA_QUERY,_ as REDUCED_MOTION_QUERY,p as SIDEBAR_LARGE_MEDIA_QUERY,x as SIDEBAR_MEDIUM_MEDIA_QUERY,O as checkedValue,Y as compose,k as fieldRules,B as pattern,F as required,m as useControlledState,E as useControlledStateWithCallback,s as useDocumentKeyDown,S as useForm,Q as useFormContext,b as useFormProvider,I as useIsMobile,M as useIsSidebarLarge,a as useIsSidebarMedium,A as useLongPress,D as useMediaQuery,i as useNow,r as useOutsideClick,n as usePrefersReducedMotion};
1
+ "use client";import{useOutsideClick as r}from"../hooks/useOutsideClick.js";import{useDocumentKeyDown as s}from"../hooks/useDocumentKeyDown.js";import{useControlledState as m,useControlledStateWithCallback as i}from"../hooks/useControlledState.js";import{useNow as d}from"../hooks/useNow.js";import{MOBILE_MEDIA_QUERY as p,SIDEBAR_LARGE_MEDIA_QUERY as l,SIDEBAR_MEDIUM_MEDIA_QUERY as x,useIsMobile as I,useIsSidebarLarge as M,useIsSidebarMedium as a,useMediaQuery as D}from"../hooks/useMediaQuery.js";import{REDUCED_MOTION_QUERY as _,usePrefersReducedMotion as c}from"../hooks/usePrefersReducedMotion.js";import{useLongPress as C}from"../hooks/useLongPress.js";import{useStickyChrome as A}from"../hooks/useStickyChrome.js";import{useForm as Q}from"../hooks/useForm.js";import{useFormContext as k,useFormProvider as L}from"../hooks/useFormProvider.js";import{checkedValue as Y,compose as h,fieldRules as y,pattern as B,required as F}from"../shared/form/formRules.js";export{p as MOBILE_MEDIA_QUERY,_ as REDUCED_MOTION_QUERY,l as SIDEBAR_LARGE_MEDIA_QUERY,x as SIDEBAR_MEDIUM_MEDIA_QUERY,Y as checkedValue,h as compose,y as fieldRules,B as pattern,F as required,m as useControlledState,i as useControlledStateWithCallback,s as useDocumentKeyDown,Q as useForm,k as useFormContext,L as useFormProvider,I as useIsMobile,M as useIsSidebarLarge,a as useIsSidebarMedium,C as useLongPress,D as useMediaQuery,d as useNow,r as useOutsideClick,c as usePrefersReducedMotion,A as useStickyChrome};
@@ -0,0 +1 @@
1
+ "use client";import{useState as p,useLayoutEffect as w}from"react";const g=e=>{const t=getComputedStyle(e).overflowY;return t==="auto"||t==="scroll"||t==="overlay"},h=(e,t)=>{if(t)return t;let r=e.parentElement;for(;r;){if(g(r))return r;r=r.parentElement}return window},a=e=>e===window,y=e=>{const t=a(e)?document.scrollingElement??document.documentElement:e;return{top:t.scrollTop,max:t.scrollHeight-t.clientHeight}},L=(e,t,r,o)=>e==="start"?t>o:r>0&&t<r-o,S=(e,t)=>{e.addEventListener("scroll",t,{passive:!0});const r=new ResizeObserver(t),o=a(e)?document.documentElement:e,s=a(e)?document.body:e;r.observe(o);const n=()=>{Array.from(s.children).forEach(u=>{u instanceof HTMLElement&&r.observe(u)})};n();const c=new MutationObserver(()=>{n(),t()});return c.observe(s,{childList:!0}),()=>{e.removeEventListener("scroll",t),r.disconnect(),c.disconnect()}};function x(e,t={}){const{enabled:r=!0,edge:o="start",scrollRef:s,attribute:n="data-scrolled",offset:c=1}=t,[u,v]=p(!1);return w(()=>{const l=e.current,m=i=>{l&&n&&l.toggleAttribute(n,i),v(i)};if(!l||!r){m(!1);return}const d=h(l,s?.current??null),f=()=>{const{top:i,max:E}=y(d);m(L(o,i,E,c))};f();const b=S(d,f);return()=>{b(),n&&l.removeAttribute(n)}},[n,o,r,c,e,s]),u}export{x as useStickyChrome};
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use client";import{ru as e}from"./locales/ru.js";import{en as p}from"./locales/en.js";import{Accordion as f}from"./components/Accordion/Accordion.js";import{ActionItem as i}from"./components/ActionList/ActionItem.js";import{ActionList as l}from"./components/ActionList/ActionList.js";import{ActionSheetTrigger as d}from"./components/ActionSheetTrigger/ActionSheetTrigger.js";import{Alert as u}from"./components/Alert/Alert.js";import{AspectRatio as S}from"./components/AspectRatio/AspectRatio.js";import{Attachment as g}from"./components/Attachment/Attachment.js";import{AutocompleteField as h}from"./components/AutocompleteField/AutocompleteField.js";import{Avatar as T,AvatarGroup as P}from"./components/Avatar/Avatar.js";import{Badge as y}from"./components/Badge/Badge.js";import{BarChart as B}from"./components/BarChart/BarChart.js";import{Box as G}from"./components/Box/Box.js";import{Bubble as I}from"./components/Bubble/Bubble.js";import{Button as w}from"./components/Button/Button.js";import{ButtonGroup as M}from"./components/ButtonGroup/ButtonGroup.js";import{ButtonIcon as H}from"./components/ButtonIcon/ButtonIcon.js";import{Calendar as O}from"./components/Calendar/Calendar.js";import{CalendarBoard as V}from"./components/CalendarBoard/CalendarBoard.js";import{Card as W}from"./components/Card/Card.js";import{Checkbox as j,CheckboxGroup as q}from"./components/Checkbox/Checkbox.js";import{Chip as J,ChipGroup as Q}from"./components/Chip/Chip.js";import{Collapse as Y}from"./components/Collapse/Collapse.js";import{ColorSwatchGroup as $}from"./components/ColorSwatchGroup/ColorSwatchGroup.js";import{CommandPalette as ro}from"./components/CommandPalette/CommandPalette.js";import{ConfirmDialog as to}from"./components/ConfirmDialog/ConfirmDialog.js";import{Container as mo,Page as fo}from"./components/Container/Container.js";import{ControlRow as io}from"./components/Layout/ControlRow.js";import{DateField as lo}from"./components/DateField/DateField.js";import{DateRangeField as so}from"./components/DateRangeField/DateRangeField.js";import{DayStripCalendar as co}from"./components/DayStripCalendar/DayStripCalendar.js";import{DescriptionList as Co}from"./components/DescriptionList/DescriptionList.js";import{DialogLayout as Lo}from"./components/DialogLayout/DialogLayout.js";import{DonutChart as Fo}from"./components/DonutChart/DonutChart.js";import{Dropdown as Po}from"./components/Dropdown/Dropdown.js";import{EmptyState as yo}from"./components/EmptyState/EmptyState.js";import{FieldBaseButton as Bo,FieldBaseIcon as vo,TextField as Go}from"./components/TextField/TextField.js";import{FieldGroup as Io}from"./components/FieldGroup/FieldGroup.js";import{FieldLabel as wo}from"./components/FieldLabel/FieldLabel.js";import{Fieldset as Mo}from"./components/Fieldset/Fieldset.js";import{FileList as Ho}from"./components/FileList/FileList.js";import{FileUploader as Oo}from"./components/FileUploader/FileUploader.js";import{FormMessage as Vo}from"./components/FormMessage/FormMessage.js";import{Gap as Wo}from"./components/Gap/Gap.js";import{Grid as jo,GridItem as qo}from"./components/Grid/Grid.js";import{ImageCrop as Jo}from"./components/ImageCrop/ImageCrop.js";import{ImageGallery as Xo}from"./components/ImageGallery/ImageGallery.js";import{ImageLightbox as _o}from"./components/ImageLightbox/ImageLightbox.js";import{Inline as or}from"./components/Layout/Inline.js";import{Item as er}from"./components/Item/Item.js";import{Kbd as pr,KbdGroup as mr}from"./components/Kbd/Kbd.js";import{Layout as xr,LayoutContent as ir,LayoutFooter as ar,LayoutHeader as lr,LayoutRoot as nr}from"./components/Layout/Layout.js";import{LayoutItem as sr}from"./components/Layout/LayoutItem.js";import{LineChart as cr}from"./components/LineChart/LineChart.js";import{Link as Cr}from"./components/Link/Link.js";import{Listbox as Lr}from"./components/Listbox/Listbox.js";import{LiveRegion as Fr}from"./components/LiveRegion/LiveRegion.js";import{LocaleProvider as Pr}from"./components/LocaleProvider/LocaleProvider.js";import{Marker as yr}from"./components/Marker/Marker.js";import{MaskedField as Br}from"./components/MaskedField/MaskedField.js";import{Media as Gr}from"./components/Media/Media.js";import{Menu as Ir}from"./components/Menu/Menu.js";import{Modal as wr}from"./components/Modal/Modal.js";import{MultiSelect as Mr}from"./components/MultiSelect/MultiSelect.js";import{Notification as Hr}from"./components/Notification/Notification.js";import{NotificationProvider as Or,useNotify as Ur}from"./components/Notification/toast.js";import{NumberField as Er}from"./components/NumberField/NumberField.js";import{Overflow as Zr}from"./components/Overflow/Overflow.js";import{Overlay as qr}from"./components/Overlay/Overlay.js";import{Pagination as Jr}from"./components/Pagination/Pagination.js";import{PasswordField as Xr,getPasswordStrength as Yr}from"./components/PasswordField/PasswordField.js";import{PinInput as $r}from"./components/PinInput/PinInput.js";import{Popover as re}from"./components/Popover/Popover.js";import{PopupSwitch as te}from"./components/PopupSwitch/PopupSwitch.js";import{Progress as me,ProgressCircle as fe}from"./components/Progress/Progress.js";import{PullToRefresh as ie}from"./components/PullToRefresh/PullToRefresh.js";import{Radio as le,RadioGroup as ne}from"./components/Radio/Radio.js";import{Rating as se}from"./components/Rating/Rating.js";import{RelativeTime as ce,formatRelativeTime as Se}from"./components/RelativeTime/RelativeTime.js";import{SafeArea as ge}from"./components/SafeArea/SafeArea.js";import{ScrollArea as he}from"./components/ScrollArea/ScrollArea.js";import{SearchField as Te}from"./components/SearchField/SearchField.js";import{SegmentedControl as be}from"./components/SegmentedControl/SegmentedControl.js";import{Select as Ae}from"./components/Select/Select.js";import{Separator as ve}from"./components/Separator/Separator.js";import{Sheet as ke}from"./components/Sheet/Sheet.js";import{Sidebar as Re}from"./components/Sidebar/Sidebar.js";import{Skeleton as De}from"./components/Skeleton/Skeleton.js";import{SkipLink as Ne}from"./components/SkipLink/SkipLink.js";import{Slider as Ke}from"./components/Slider/Slider.js";import{SortableList as Ue}from"./components/SortableList/SortableList.js";import{Spinner as Ee}from"./components/Spinner/Spinner.js";import{Split as Ze}from"./components/Layout/Split.js";import{Stack as qe}from"./components/Layout/Stack.js";import{StatBadge as Je}from"./components/StatBadge/StatBadge.js";import{Steps as Xe}from"./components/Steps/Steps.js";import{SuggestField as _e}from"./components/SuggestField/SuggestField.js";import{SwipeToAction as ot}from"./components/SwipeToAction/SwipeToAction.js";import{Switch as et}from"./components/Switch/Switch.js";import{Table as pt}from"./components/Table/Table.js";import{Tabs as ft}from"./components/Tabs/Tabs.js";import{Text as it}from"./components/Text/Text.js";import{TextareaField as lt}from"./components/TextareaField/TextareaField.js";import{ThemeProvider as dt,useTheme as st}from"./components/ThemeProvider/ThemeProvider.js";import{TimeField as ct}from"./components/TimeField/TimeField.js";import{Timeline as Ct}from"./components/Timeline/Timeline.js";import{Title as Lt}from"./components/Title/Title.js";import{Tooltip as Ft}from"./components/Tooltip/Tooltip.js";import{UploadZone as Pt}from"./components/UploadZone/UploadZone.js";import{VirtualList as yt}from"./components/VirtualList/VirtualList.js";import{VisuallyHidden as Bt}from"./components/VisuallyHidden/VisuallyHidden.js";import{WheelTimePicker as Gt}from"./components/WheelTimePicker/WheelTimePicker.js";import{dismiss as It,dismissAll as Rt,notify as wt}from"./components/Notification/toast.utils.js";import{useCalendarBoardContext as Mt,useCalendarBoardTaskHover as Nt}from"./components/CalendarBoard/CalendarBoard.context.js";import{useLocale as Kt,useT as Ot}from"./locales/localeContext.js";export{f as Accordion,i as ActionItem,l as ActionList,d as ActionSheetTrigger,u as Alert,S as AspectRatio,g as Attachment,h as AutocompleteField,T as Avatar,P as AvatarGroup,y as Badge,B as BarChart,G as Box,I as Bubble,w as Button,M as ButtonGroup,H as ButtonIcon,O as Calendar,V as CalendarBoard,W as Card,j as Checkbox,q as CheckboxGroup,J as Chip,Q as ChipGroup,Y as Collapse,$ as ColorSwatchGroup,ro as CommandPalette,to as ConfirmDialog,mo as Container,io as ControlRow,lo as DateField,so as DateRangeField,co as DayStripCalendar,Co as DescriptionList,Lo as DialogLayout,Fo as DonutChart,Po as Dropdown,yo as EmptyState,Bo as FieldBaseButton,vo as FieldBaseIcon,Io as FieldGroup,wo as FieldLabel,Mo as Fieldset,Ho as FileList,Oo as FileUploader,Vo as FormMessage,Wo as Gap,jo as Grid,qo as GridItem,Jo as ImageCrop,Xo as ImageGallery,_o as ImageLightbox,or as Inline,er as Item,pr as Kbd,mr as KbdGroup,xr as Layout,ir as LayoutContent,ar as LayoutFooter,lr as LayoutHeader,sr as LayoutItem,nr as LayoutRoot,cr as LineChart,Cr as Link,Lr as Listbox,Fr as LiveRegion,Pr as LocaleProvider,yr as Marker,Br as MaskedField,Gr as Media,Ir as Menu,wr as Modal,Mr as MultiSelect,Hr as Notification,Or as NotificationProvider,Er as NumberField,Zr as Overflow,qr as Overlay,fo as Page,Jr as Pagination,Xr as PasswordField,$r as PinInput,re as Popover,te as PopupSwitch,me as Progress,fe as ProgressCircle,ie as PullToRefresh,le as Radio,ne as RadioGroup,se as Rating,ce as RelativeTime,ge as SafeArea,he as ScrollArea,Te as SearchField,be as SegmentedControl,Ae as Select,ve as Separator,ke as Sheet,Re as Sidebar,De as Skeleton,Ne as SkipLink,Ke as Slider,Ue as SortableList,Ee as Spinner,Ze as Split,qe as Stack,Je as StatBadge,Xe as Steps,_e as SuggestField,ot as SwipeToAction,et as Switch,pt as Table,ft as Tabs,it as Text,Go as TextField,lt as TextareaField,dt as ThemeProvider,ct as TimeField,Ct as Timeline,Lt as Title,Ft as Tooltip,Pt as UploadZone,yt as VirtualList,Bt as VisuallyHidden,Gt as WheelTimePicker,It as dismiss,Rt as dismissAll,p as en,Se as formatRelativeTime,Yr as getPasswordStrength,wt as notify,e as ru,Mt as useCalendarBoardContext,Nt as useCalendarBoardTaskHover,Kt as useLocale,Ur as useNotify,Ot as useT,st as useTheme};
1
+ "use client";import{ru as e}from"./locales/ru.js";import{en as p}from"./locales/en.js";import{Accordion as f}from"./components/Accordion/Accordion.js";import{ActionItem as a}from"./components/ActionList/ActionItem.js";import{ActionList as l}from"./components/ActionList/ActionList.js";import{ActionSheetTrigger as n}from"./components/ActionSheetTrigger/ActionSheetTrigger.js";import{Alert as u}from"./components/Alert/Alert.js";import{AspectRatio as S}from"./components/AspectRatio/AspectRatio.js";import{Attachment as g}from"./components/Attachment/Attachment.js";import{AutocompleteField as T}from"./components/AutocompleteField/AutocompleteField.js";import{Avatar as F,AvatarGroup as b}from"./components/Avatar/Avatar.js";import{Badge as y}from"./components/Badge/Badge.js";import{BarChart as B}from"./components/BarChart/BarChart.js";import{Box as G}from"./components/Box/Box.js";import{Bubble as k}from"./components/Bubble/Bubble.js";import{Button as w}from"./components/Button/Button.js";import{ButtonGroup as H}from"./components/ButtonGroup/ButtonGroup.js";import{ButtonIcon as N}from"./components/ButtonIcon/ButtonIcon.js";import{Calendar as O}from"./components/Calendar/Calendar.js";import{CalendarBoard as V}from"./components/CalendarBoard/CalendarBoard.js";import{Card as W}from"./components/Card/Card.js";import{Checkbox as j,CheckboxGroup as q}from"./components/Checkbox/Checkbox.js";import{Chip as J,ChipGroup as Q}from"./components/Chip/Chip.js";import{Collapse as Y}from"./components/Collapse/Collapse.js";import{ColorSwatchGroup as $}from"./components/ColorSwatchGroup/ColorSwatchGroup.js";import{CommandPalette as ro}from"./components/CommandPalette/CommandPalette.js";import{ConfirmDialog as to}from"./components/ConfirmDialog/ConfirmDialog.js";import{Container as mo,Page as fo}from"./components/Container/Container.js";import{ControlRow as ao}from"./components/Layout/ControlRow.js";import{DateField as lo}from"./components/DateField/DateField.js";import{DateRangeField as so}from"./components/DateRangeField/DateRangeField.js";import{DayStripCalendar as co}from"./components/DayStripCalendar/DayStripCalendar.js";import{DescriptionList as Co}from"./components/DescriptionList/DescriptionList.js";import{DialogLayout as Lo}from"./components/DialogLayout/DialogLayout.js";import{DonutChart as ho}from"./components/DonutChart/DonutChart.js";import{Dropdown as bo}from"./components/Dropdown/Dropdown.js";import{EmptyState as yo}from"./components/EmptyState/EmptyState.js";import{FieldBaseButton as Bo,FieldBaseIcon as vo,TextField as Go}from"./components/TextField/TextField.js";import{FieldGroup as ko}from"./components/FieldGroup/FieldGroup.js";import{FieldLabel as wo}from"./components/FieldLabel/FieldLabel.js";import{Fieldset as Ho}from"./components/Fieldset/Fieldset.js";import{FileList as No}from"./components/FileList/FileList.js";import{FileUploader as Oo}from"./components/FileUploader/FileUploader.js";import{FormMessage as Vo}from"./components/FormMessage/FormMessage.js";import{Gap as Wo}from"./components/Gap/Gap.js";import{Grid as jo,GridItem as qo}from"./components/Grid/Grid.js";import{Header as Jo,HeaderRoot as Qo,HeaderSubtitle as Xo,HeaderTabs as Yo,HeaderTitle as _o}from"./components/Header/Header.js";import{ImageCrop as or}from"./components/ImageCrop/ImageCrop.js";import{ImageGallery as er}from"./components/ImageGallery/ImageGallery.js";import{ImageLightbox as pr}from"./components/ImageLightbox/ImageLightbox.js";import{Inline as fr}from"./components/Layout/Inline.js";import{Item as ar}from"./components/Item/Item.js";import{Kbd as lr,KbdGroup as dr}from"./components/Kbd/Kbd.js";import{Layout as sr,LayoutContent as ur,LayoutFooter as cr,LayoutHeader as Sr,LayoutRoot as Cr}from"./components/Layout/Layout.js";import{LayoutItem as Lr}from"./components/Layout/LayoutItem.js";import{LineChart as hr}from"./components/LineChart/LineChart.js";import{Link as br}from"./components/Link/Link.js";import{Listbox as yr}from"./components/Listbox/Listbox.js";import{LiveRegion as Br}from"./components/LiveRegion/LiveRegion.js";import{LocaleProvider as Gr}from"./components/LocaleProvider/LocaleProvider.js";import{Marker as kr}from"./components/Marker/Marker.js";import{MaskedField as wr}from"./components/MaskedField/MaskedField.js";import{Media as Hr}from"./components/Media/Media.js";import{Menu as Nr}from"./components/Menu/Menu.js";import{Modal as Or}from"./components/Modal/Modal.js";import{MultiSelect as Vr}from"./components/MultiSelect/MultiSelect.js";import{Notification as Wr}from"./components/Notification/Notification.js";import{NotificationProvider as jr,useNotify as qr}from"./components/Notification/toast.js";import{NumberField as Jr}from"./components/NumberField/NumberField.js";import{Overflow as Xr}from"./components/Overflow/Overflow.js";import{Overlay as _r}from"./components/Overlay/Overlay.js";import{Pagination as oe}from"./components/Pagination/Pagination.js";import{PasswordField as ee,getPasswordStrength as te}from"./components/PasswordField/PasswordField.js";import{PinInput as me}from"./components/PinInput/PinInput.js";import{Popover as xe}from"./components/Popover/Popover.js";import{PopupSwitch as ie}from"./components/PopupSwitch/PopupSwitch.js";import{Progress as de,ProgressCircle as ne}from"./components/Progress/Progress.js";import{PullToRefresh as ue}from"./components/PullToRefresh/PullToRefresh.js";import{Radio as Se,RadioGroup as Ce}from"./components/Radio/Radio.js";import{Rating as Le}from"./components/Rating/Rating.js";import{RelativeTime as he,formatRelativeTime as Fe}from"./components/RelativeTime/RelativeTime.js";import{SafeArea as Pe}from"./components/SafeArea/SafeArea.js";import{ScrollArea as Ae}from"./components/ScrollArea/ScrollArea.js";import{SearchField as ve}from"./components/SearchField/SearchField.js";import{SegmentedControl as Re}from"./components/SegmentedControl/SegmentedControl.js";import{Select as Ie}from"./components/Select/Select.js";import{Separator as De}from"./components/Separator/Separator.js";import{Sheet as Me}from"./components/Sheet/Sheet.js";import{Sidebar as Ke}from"./components/Sidebar/Sidebar.js";import{Skeleton as Ue}from"./components/Skeleton/Skeleton.js";import{SkipLink as Ee}from"./components/SkipLink/SkipLink.js";import{Slider as Ze}from"./components/Slider/Slider.js";import{SortableList as qe}from"./components/SortableList/SortableList.js";import{Spinner as Je}from"./components/Spinner/Spinner.js";import{Split as Xe}from"./components/Layout/Split.js";import{Stack as _e}from"./components/Layout/Stack.js";import{StatBadge as ot}from"./components/StatBadge/StatBadge.js";import{Steps as et}from"./components/Steps/Steps.js";import{SuggestField as pt}from"./components/SuggestField/SuggestField.js";import{SwipeToAction as ft}from"./components/SwipeToAction/SwipeToAction.js";import{Switch as at}from"./components/Switch/Switch.js";import{Table as lt}from"./components/Table/Table.js";import{Tabs as nt}from"./components/Tabs/Tabs.js";import{Text as ut}from"./components/Text/Text.js";import{TextareaField as St}from"./components/TextareaField/TextareaField.js";import{ThemeProvider as gt,useTheme as Lt}from"./components/ThemeProvider/ThemeProvider.js";import{TimeField as ht}from"./components/TimeField/TimeField.js";import{Timeline as bt}from"./components/Timeline/Timeline.js";import{Title as yt}from"./components/Title/Title.js";import{Tooltip as Bt}from"./components/Tooltip/Tooltip.js";import{UploadZone as Gt}from"./components/UploadZone/UploadZone.js";import{VirtualList as kt}from"./components/VirtualList/VirtualList.js";import{VisuallyHidden as wt}from"./components/VisuallyHidden/VisuallyHidden.js";import{WheelTimePicker as Ht}from"./components/WheelTimePicker/WheelTimePicker.js";import{dismiss as Nt,dismissAll as Kt,notify as Ot}from"./components/Notification/toast.utils.js";import{useCalendarBoardContext as Vt,useCalendarBoardTaskHover as Et}from"./components/CalendarBoard/CalendarBoard.context.js";import{useLocale as Zt,useT as jt}from"./locales/localeContext.js";export{f as Accordion,a as ActionItem,l as ActionList,n as ActionSheetTrigger,u as Alert,S as AspectRatio,g as Attachment,T as AutocompleteField,F as Avatar,b as AvatarGroup,y as Badge,B as BarChart,G as Box,k as Bubble,w as Button,H as ButtonGroup,N as ButtonIcon,O as Calendar,V as CalendarBoard,W as Card,j as Checkbox,q as CheckboxGroup,J as Chip,Q as ChipGroup,Y as Collapse,$ as ColorSwatchGroup,ro as CommandPalette,to as ConfirmDialog,mo as Container,ao as ControlRow,lo as DateField,so as DateRangeField,co as DayStripCalendar,Co as DescriptionList,Lo as DialogLayout,ho as DonutChart,bo as Dropdown,yo as EmptyState,Bo as FieldBaseButton,vo as FieldBaseIcon,ko as FieldGroup,wo as FieldLabel,Ho as Fieldset,No as FileList,Oo as FileUploader,Vo as FormMessage,Wo as Gap,jo as Grid,qo as GridItem,Jo as Header,Qo as HeaderRoot,Xo as HeaderSubtitle,Yo as HeaderTabs,_o as HeaderTitle,or as ImageCrop,er as ImageGallery,pr as ImageLightbox,fr as Inline,ar as Item,lr as Kbd,dr as KbdGroup,sr as Layout,ur as LayoutContent,cr as LayoutFooter,Sr as LayoutHeader,Lr as LayoutItem,Cr as LayoutRoot,hr as LineChart,br as Link,yr as Listbox,Br as LiveRegion,Gr as LocaleProvider,kr as Marker,wr as MaskedField,Hr as Media,Nr as Menu,Or as Modal,Vr as MultiSelect,Wr as Notification,jr as NotificationProvider,Jr as NumberField,Xr as Overflow,_r as Overlay,fo as Page,oe as Pagination,ee as PasswordField,me as PinInput,xe as Popover,ie as PopupSwitch,de as Progress,ne as ProgressCircle,ue as PullToRefresh,Se as Radio,Ce as RadioGroup,Le as Rating,he as RelativeTime,Pe as SafeArea,Ae as ScrollArea,ve as SearchField,Re as SegmentedControl,Ie as Select,De as Separator,Me as Sheet,Ke as Sidebar,Ue as Skeleton,Ee as SkipLink,Ze as Slider,qe as SortableList,Je as Spinner,Xe as Split,_e as Stack,ot as StatBadge,et as Steps,pt as SuggestField,ft as SwipeToAction,at as Switch,lt as Table,nt as Tabs,ut as Text,Go as TextField,St as TextareaField,gt as ThemeProvider,ht as TimeField,bt as Timeline,yt as Title,Bt as Tooltip,Gt as UploadZone,kt as VirtualList,wt as VisuallyHidden,Ht as WheelTimePicker,Nt as dismiss,Kt as dismissAll,p as en,Fe as formatRelativeTime,te as getPasswordStrength,Ot as notify,e as ru,Vt as useCalendarBoardContext,Et as useCalendarBoardTaskHover,Zt as useLocale,qr as useNotify,jt as useT,Lt as useTheme};
@@ -61,15 +61,15 @@
61
61
  | Компонент | Описание |
62
62
  |-----------|----------|
63
63
  | **DialogLayout** | Поверхность `Box` с крестиком в правом верхнем углу поверх контента. `onClose`, `showClose`. |
64
- | **Modal** | Составной диалог: корень — **`DialogLayout`**, шапка / тело / футер — **`Layout`**. `Header` / `Body` / `Footer`. Заголовок — **`Title`**. Ряд действий — **`ControlRow`** внутри `Footer`. `open` / `onOpenChange`, `showClose` на корне. |
64
+ | **Modal** | Составной диалог: корень — **`DialogLayout`**, шапка — **`Header`** внутри **`Layout.Header`**, тело и футер — **`Layout`**. `Header` / `Header.Title` / `Header.Subtitle` / `Header.Tabs` / `Body` / `Footer`. Ряд действий — **`ControlRow`** внутри `Footer`. `open` / `onOpenChange`, `showClose`, `size` `sm` / `md` / `lg` на корне. |
65
65
  | **ConfirmDialog** | Готовый диалог на **`Modal`**: отмена + подтверждение, `confirmLabel`, `secondaryAction`, `status="danger"`, `onOpenChange`. |
66
66
  | **Sheet** | Панель: поверхность **`Box`**, шапка / тело / футер — **`Layout`**. `Header` / `Body` / `Footer`. Заголовок — **`Title`**. Крестик — `showClose` на `Header`. `mode` / `direction` / `showHandle`. Слой — нативный `<dialog>`. |
67
67
  | **ImageLightbox** | Полноэкранный просмотр; `open` / `onOpenChange`. |
68
68
  | **Dropdown** | Список или меню у кнопки, на базе **`Popover`** (`popover="auto"`). Якорь — `trigger`. Выбор пункта закрывает панель, клик снаружи и Escape — браузер. Стрелки — у списка внутри. `align`, `widthMode`, `triggerMode` `toggle` \| `combobox`. На узком экране та же панель — нижняя шторка на CSS. Узел — `rootRef`. Форма и календарь — **`Popover`**. |
69
- | **Menu** | Меню действий: клик по `trigger` (**`Dropdown`** + **`ActionList`**) или `trigger="context"` (ПКМ / Shift+F10 у курсора). Пункты — **`ActionListItem`** (`id`). Программный показ — `popupRef`. |
69
+ | **Menu** | Меню действий: клик по `trigger` (**`Dropdown`** + **`ActionList`**) или `trigger="context"` (ПКМ / Shift+F10 у курсора). Пункты — **`ActionListItem`** (`id`) и `{ type: 'separator' }`, как в **`Listbox`**. Программный показ — `popupRef`. |
70
70
  | **Tooltip** | Текстовая подсказка. Ховер и фокус — CSS (`:hover`, `:focus-within`), позиция — CSS Anchor. `side`, `openDelay` / `closeDelay` как задержки CSS, без JS-таймера. |
71
71
  | **Popover** | Немодальная панель: текст, форма, фильтры, календарь. Открытие — `popovertarget`, закрытие по клику снаружи и Escape — `popover="auto"`. Клик внутри не закрывает, фокус не запирается. Якорь — `trigger`. Позиция — CSS Anchor (`side` / `align`, `positionArea()`). Подсказки — **Tooltip**. |
72
- | **CommandPalette** | Палитра Cmd+K: поверхность **`Box`**, подпись **`Text`**. `items` / `groups`, фильтр — **`ActionList`** с `filterable`. |
72
+ | **CommandPalette** | Палитра Cmd+K: поверхность **`Box`**, подпись **`Text`**. `items` / `groups`, фильтр — **`ActionList`** с `filterable`. Ширина как у **`Modal`** `md`. |
73
73
 
74
74
  ---
75
75
 
@@ -80,7 +80,7 @@
80
80
  | **Pagination** | Постраничная навигация. Без `children` — `Controls`; опционально `totalItems` / `pageSize` / `onPageSizeChange`. Составной: `Summary`, `Controls`, `PageSize`. |
81
81
  | **Sidebar** | Составной: `Root`, `Header`, `Title`, `Content`, `Group`, `GroupLabel`, `Item`, `Footer`, `MobileTrigger`. Шапка, меню и футер — `Layout`. Кнопка сворачивания — на корне, по центру правой границы. `value` / `onChange`; десктопный rail + мобильный Sheet. |
82
82
  | **Steps** | Мастер: горизонтальный/вертикальный, статус шага. `onStepClick` слушает список. Узел — `rootRef`. Ориентация, размер, соединители и статус — `data-*`. |
83
- | **Tabs** | Список — **`SegmentedControl`** (`itemRole="tab"`): `Tabs.List` принимает `items` (`value`, `label`, `badge`, `badgeDot`, `disabled`), панели — `Tabs.Panel`; `value` / `defaultValue` / `onChange`. `pill` — заливка выбранной вкладки, `line` — черта у выбранной. |
83
+ | **Tabs** | Список — **`SegmentedControl`** (`itemRole="tab"`): `items` на корне (`value`, `label`, `badge`, `badgeDot`, `disabled`). Панель — `Tabs.Panel` с тем же `rootRef` в `tabsRef`, без контекста. `value` / `defaultValue` / `onChange`. `pill` — заливка выбранной вкладки, `line` — черта у выбранной. |
84
84
 
85
85
  ---
86
86
 
@@ -120,7 +120,8 @@
120
120
 
121
121
  | Компонент | Описание |
122
122
  |-----------|----------|
123
- | **Layout** | Панель: скролл на корне; `Header` / `Footer` sticky; алиасы `Inline` / `Split` / `ControlRow` / `Item`. |
123
+ | **Header** | Шапка страницы: `Title`, `Subtitle` и вкладки `Tabs` в одной колонке. |
124
+ | **Layout** | Панель: скролл на корне; `Header` / `Footer` sticky. `padding` 12 / 20 / 28px. У sticky `variant` красит фон после сдвига скролла. |
124
125
  | **Stack** / **Inline** / **Split** / **ControlRow** / **LayoutItem** | Flex-примитивы (вертикаль / чипы / края / ряд контролов / `grow`). |
125
126
  | **Grid** / **GridItem** | CSS Grid; скалярные `columns` / `span`, `mode` autoFit/autoFill. |
126
127
  | **Container** / **Page** | Колонка с max-width (`sm`…`xl` / `full`) и оболочка страницы. |
package/docs/LAYOUT.md CHANGED
@@ -60,13 +60,19 @@ import {
60
60
 
61
61
  | Часть | Роль | Ключевые пропсы |
62
62
  |-------|------|-----------------|
63
- | `Layout` | Корень-scrollport (`overflow-y: auto`, flex-колонка) | `as`, `padding` (отступ корня), `gap` (между секциями). Оба: `sm` 12px, `md` 16px, `lg` 24px |
64
- | `Layout.Header` | Шапка | `sticky`, `as="header"` |
63
+ | `Layout` | Корень-scrollport (`overflow-y: auto`, flex-колонка) | `as`, `padding` (`sm` 12px, `md` 20px, `lg` 28px), `gap` (12 / 16 / 24px) |
64
+ | `Layout.Header` | Шапка | `sticky`, `variant` (`primary` \| `tinted` \| `secondary`), `as="header"` |
65
65
  | `Layout.Content` | Середина (без собственного overflow) | `as` |
66
- | `Layout.Footer` | Низ с действиями | `sticky`, `align` (`start` \| `center` \| `end` \| `space-between`), `as="footer"` |
66
+ | `Layout.Footer` | Низ с действиями | `sticky`, `variant`, `align` (`start` \| `center` \| `end` \| `space-between`), `as="footer"` |
67
67
 
68
68
  `sticky` — элемент остаётся у края при скролле **`Layout`**. Без `sticky` Header/Footer уезжают вместе с контентом.
69
69
 
70
+ `variant` вместе со `sticky` красит шапку, когда скролл ушёл от верха, и подвал, пока список не докручен до низа. Без `variant` фон не появляется.
71
+
72
+ `gap` делится пополам. Нижнее поле `Layout.Header` и верхнее поле `Layout.Footer` — половина `gap`, вторая половина остаётся зазором между секциями. Сверху и по бокам остаётся `padding`.
73
+
74
+ **`Header`** внутри `Layout.Header`: черта вкладок на всю ширину панели и совпадает с нижним краем шапки. До контента остаётся полный `gap`, фон липкой шапки под черту не заходит.
75
+
70
76
  ### Когда использовать
71
77
 
72
78
  - диалог / sheet / sidebar с заголовком и кнопками внизу;
package/docs/THEMING.md CHANGED
@@ -98,7 +98,7 @@ return (
98
98
  | Переменная | По умолчанию | Назначение |
99
99
  |------------|--------------|------------|
100
100
  | `--altum-dialog-body-size` | `--altum-g-font-size-base` | Текст тела диалога |
101
- | `--altum-dialog-max-width-md` / `lg` | 500 / 600 | Modal / Sheet |
101
+ | `--altum-dialog-max-width-sm` / `md` / `lg` | 460 / 620 / 760 | Modal `size`; `lg` ещё потолок Sheet |
102
102
  | `--altum-dialog-max-height` | 85vh | Максимальная высота Modal |
103
103
  | `--altum-option-padding-y` / `--altum-option-padding-x` | `--altum-g-space-2` / `--altum-g-space-3` | Внутренние отступы опции списка |
104
104
 
@@ -117,7 +117,7 @@ return (
117
117
  | `--altum-toggle-radio-dot*` | sm/md/lg | Размер внутренней точки Radio |
118
118
  | `--altum-toggle-align-nudge` | `0.15em` | Оптическое выравнивание бокса тоггла относительно лейбла |
119
119
  | `--altum-rating-size-sm` / `md` / `lg` | 16 / 22 / 28 | Размер звезды Rating |
120
- | `--altum-command-palette-max-width` / `height` | 560 / 520 | Ограничение панели CommandPalette |
120
+ | `--altum-command-palette-max-width` / `height` | как `--altum-dialog-max-width-md` / 520 | Ширина палитры как Modal `md` |
121
121
  | `--altum-button-group-item-min-sm` / `md` / `lg` | space-6 / 7 / 8 | Мин. ширина кнопки внутри ButtonGroup |
122
122
  | `--altum-focus-ring-width` | 2px | Толщина outline-фокуса (навигация / тогглы / выбор) |
123
123
  | `--altum-focus-ring-offset` | light 1px / dark 2px | Смещение outline-фокуса (согласовано с зазором кольца кнопки) |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "altum",
3
- "version": "0.0.10",
3
+ "version": "0.0.12",
4
4
  "description": "Библиотека React + TypeScript UI-компонентов: CSS Modules, токены ThemeProvider, адаптация overlay/sheet.",
5
5
  "license": "MIT",
6
6
  "author": "Alexander <azeeson@gmail.com>",
@@ -45,6 +45,16 @@ interface UseLongPressHandlers {
45
45
  }
46
46
  declare function useLongPress(onLongPress: () => void, options?: UseLongPressOptions): UseLongPressHandlers;
47
47
 
48
+ type StickyChromeEdge = 'start' | 'end';
49
+ interface UseStickyChromeOptions {
50
+ enabled?: boolean;
51
+ edge?: StickyChromeEdge;
52
+ scrollRef?: RefObject<HTMLElement | null>;
53
+ attribute?: string | false;
54
+ offset?: number;
55
+ }
56
+ declare function useStickyChrome(ref: RefObject<HTMLElement | null>, options?: UseStickyChromeOptions): boolean;
57
+
48
58
  type FormErrors<T extends Record<string, unknown>> = Partial<Record<keyof T, string>>;
49
59
  type FieldValidate<T extends Record<string, unknown>, K extends keyof T> = (value: T[K], values: T) => string | undefined;
50
60
  interface RegisterOptions<T extends Record<string, unknown>, K extends keyof T> {
@@ -109,5 +119,5 @@ interface ValidationRules {
109
119
  declare function fieldRules(rules: ValidationRules): FormRule;
110
120
  declare function checkedValue(payload: unknown): boolean;
111
121
 
112
- export { MOBILE_MEDIA_QUERY, REDUCED_MOTION_QUERY, SIDEBAR_LARGE_MEDIA_QUERY, SIDEBAR_MEDIUM_MEDIA_QUERY, checkedValue, compose, fieldRules, pattern, required, useControlledState, useControlledStateWithCallback, useDocumentKeyDown, useForm, useFormContext, useFormProvider, useIsMobile, useIsSidebarLarge, useIsSidebarMedium, useLongPress, useMediaQuery, useNow, useOutsideClick, usePrefersReducedMotion };
113
- export type { DocumentKeyDownTarget, FieldValidate, FormErrors, FormRule, RegisterOptions, UseDocumentKeyDownOptions, UseFormReturn, UseLongPressHandlers, UseLongPressOptions, UseOutsideClickOptions, ValidationRules };
122
+ export { MOBILE_MEDIA_QUERY, REDUCED_MOTION_QUERY, SIDEBAR_LARGE_MEDIA_QUERY, SIDEBAR_MEDIUM_MEDIA_QUERY, checkedValue, compose, fieldRules, pattern, required, useControlledState, useControlledStateWithCallback, useDocumentKeyDown, useForm, useFormContext, useFormProvider, useIsMobile, useIsSidebarLarge, useIsSidebarMedium, useLongPress, useMediaQuery, useNow, useOutsideClick, usePrefersReducedMotion, useStickyChrome };
123
+ export type { DocumentKeyDownTarget, FieldValidate, FormErrors, FormRule, RegisterOptions, StickyChromeEdge, UseDocumentKeyDownOptions, UseFormReturn, UseLongPressHandlers, UseLongPressOptions, UseOutsideClickOptions, UseStickyChromeOptions, ValidationRules };
package/types/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import React__default, { ComponentPropsWithoutRef, Ref, ReactNode, AnchorHTMLAttributes, ButtonHTMLAttributes, MouseEvent, CSSProperties, ReactElement, AriaRole, MutableRefObject, ElementType, FC, HTMLAttributes } from 'react';
2
+ import React__default, { ComponentPropsWithoutRef, Ref, ReactNode, AnchorHTMLAttributes, ButtonHTMLAttributes, MouseEvent, CSSProperties, ReactElement, AriaRole, MutableRefObject, RefObject, ElementType, FC, HTMLAttributes } from 'react';
3
3
 
4
4
  type AccordionVariant = 'bordered' | 'flush';
5
5
  interface AccordionItemData {
@@ -577,8 +577,8 @@ type WithEnrichedChildren<T, P> = T & {
577
577
  type PopoverContentVariant = 'panel' | 'plain';
578
578
  type PopoverTargetAction = 'toggle' | 'show' | 'hide';
579
579
  type PopoverTriggerSlotProps = {
580
- popoverTarget?: string;
581
- popoverTargetAction?: PopoverTargetAction;
580
+ popovertarget?: string;
581
+ popovertargetaction?: PopoverTargetAction;
582
582
  onClick?: (event: MouseEvent<HTMLElement>) => void;
583
583
  style?: CSSProperties;
584
584
  };
@@ -707,13 +707,19 @@ interface ActionListItem {
707
707
  buttonProps?: ListboxOption['buttonProps'];
708
708
  groupId?: string;
709
709
  }
710
+ interface ActionListSeparator {
711
+ type: 'separator';
712
+ id?: string;
713
+ groupId?: string;
714
+ }
715
+ type ActionListEntry = ActionListItem | ActionListSeparator;
710
716
  interface ActionListGroup {
711
717
  id: string;
712
718
  label: ReactNode;
713
719
  }
714
720
  interface ActionListProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'onSelect'> {
715
721
  rootRef?: Ref<HTMLDivElement>;
716
- items: ActionListItem[];
722
+ items: ActionListEntry[];
717
723
  groups?: ActionListGroup[];
718
724
  onAction?: (item: ActionListItem) => void;
719
725
  onHighlightChange?: (index: number) => void;
@@ -728,7 +734,7 @@ type MenuTrigger = ReactElement | 'context';
728
734
  interface MenuProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {
729
735
  trigger: MenuTrigger;
730
736
  children?: ReactNode;
731
- items: ActionListItem[];
737
+ items: ActionListEntry[];
732
738
  groups?: ActionListGroup[];
733
739
  onOpenChange?: (open: boolean) => void;
734
740
  popupRef?: Ref<DropdownPopup | null>;
@@ -1143,34 +1149,25 @@ interface TabsItem {
1143
1149
  badge?: ReactNode;
1144
1150
  badgeDot?: boolean;
1145
1151
  }
1146
- interface TabsProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children' | 'onChange' | 'defaultValue'> {
1152
+ interface TabsProps extends Omit<ComponentPropsWithoutRef<'div'>, 'onChange' | 'defaultValue'> {
1153
+ items: TabsItem[];
1147
1154
  value?: string;
1148
1155
  defaultValue?: string;
1149
1156
  onChange?: (id: string) => void;
1150
1157
  variant?: TabsVariant;
1151
1158
  orientation?: TabsOrientation;
1152
- children: React__default.ReactNode;
1153
- rootRef?: Ref<HTMLDivElement>;
1154
- }
1155
- interface TabsListProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {
1156
- items: TabsItem[];
1157
1159
  rootRef?: Ref<HTMLDivElement>;
1158
1160
  }
1159
- interface TabsTriggerProps extends Omit<React__default.ButtonHTMLAttributes<HTMLButtonElement>, 'value'> {
1160
- value: string;
1161
- badge?: React__default.ReactNode;
1162
- badgeDot?: boolean;
1163
- }
1164
- interface TabsPanelProps extends React__default.HTMLAttributes<HTMLDivElement> {
1161
+ interface TabsPanelProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {
1162
+ children?: ReactNode;
1165
1163
  value: string;
1164
+ tabsRef: RefObject<HTMLDivElement | null>;
1166
1165
  forceMount?: boolean;
1167
1166
  rootRef?: Ref<HTMLDivElement>;
1168
1167
  }
1169
1168
 
1170
- declare const Tabs: (({ value: valueProp, defaultValue, onChange, variant, orientation, className, children, rootRef, ...rest }: TabsProps) => React.JSX.Element) & {
1171
- Root: ({ value: valueProp, defaultValue, onChange, variant, orientation, className, children, rootRef, ...rest }: TabsProps) => React.JSX.Element;
1172
- List: ({ className, items, rootRef, ...rest }: TabsListProps) => React.JSX.Element | null;
1173
- Panel: ({ value, className, children, forceMount: _forceMount, hidden, rootRef, ...rest }: TabsPanelProps) => React.JSX.Element;
1169
+ declare const Tabs: (({ items, value: valueProp, defaultValue, onChange, variant, orientation, className, rootRef, id: idProp, ...rest }: TabsProps) => React.JSX.Element) & {
1170
+ Panel: ({ value, tabsRef, className, children, forceMount: _forceMount, hidden, rootRef, ...rest }: TabsPanelProps) => React.JSX.Element;
1174
1171
  };
1175
1172
 
1176
1173
  type TextSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
@@ -1517,12 +1514,26 @@ interface LocaleProviderProps {
1517
1514
 
1518
1515
  declare const LocaleProvider: React__default.FC<LocaleProviderProps>;
1519
1516
 
1517
+ interface HeaderProps extends ComponentPropsWithoutRef<'div'> {
1518
+ rootRef?: Ref<HTMLDivElement>;
1519
+ }
1520
+
1520
1521
  interface TitleProps extends ComponentPropsWithoutRef<'h2'> {
1521
1522
  level?: 1 | 2 | 3 | 4;
1522
1523
  weight?: 'normal' | 'medium' | 'bold';
1523
1524
  rootRef?: Ref<HTMLHeadingElement>;
1524
1525
  }
1525
1526
 
1527
+ declare const HeaderRoot: ({ className, rootRef, ...rest }: HeaderProps) => React.JSX.Element;
1528
+ declare const HeaderTitle: ({ className, level, ...rest }: TitleProps) => React.JSX.Element;
1529
+ declare const HeaderSubtitle: ({ className, size, color, ...rest }: TextProps) => React.JSX.Element;
1530
+ declare const HeaderTabs: ({ className, variant, ...rest }: TabsProps) => React.JSX.Element;
1531
+ declare const Header: (({ className, rootRef, ...rest }: HeaderProps) => React.JSX.Element) & {
1532
+ Title: ({ className, level, ...rest }: TitleProps) => React.JSX.Element;
1533
+ Subtitle: ({ className, size, color, ...rest }: TextProps) => React.JSX.Element;
1534
+ Tabs: ({ className, variant, ...rest }: TabsProps) => React.JSX.Element;
1535
+ };
1536
+
1526
1537
  declare const Title: ({ level, weight, className, rootRef, ...rest }: TitleProps) => React.JSX.Element;
1527
1538
 
1528
1539
  type TooltipSide = AnchorSide;
@@ -1872,6 +1883,7 @@ type LayoutGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
1872
1883
  type LayoutAlign = 'start' | 'center' | 'end' | 'baseline' | 'stretch';
1873
1884
  type LayoutJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
1874
1885
  type LayoutSpacing = 'sm' | 'md' | 'lg';
1886
+ type LayoutChromeVariant = 'primary' | 'tinted' | 'secondary';
1875
1887
  interface LayoutRootProps extends ComponentPropsWithoutRef<'div'> {
1876
1888
  children?: ReactNode;
1877
1889
  rootRef?: LayoutNodeRef;
@@ -1883,6 +1895,7 @@ interface LayoutHeaderProps extends ComponentPropsWithoutRef<'header'> {
1883
1895
  children?: ReactNode;
1884
1896
  rootRef?: LayoutNodeRef;
1885
1897
  sticky?: boolean;
1898
+ variant?: LayoutChromeVariant;
1886
1899
  as?: ElementType;
1887
1900
  }
1888
1901
  interface LayoutContentProps extends ComponentPropsWithoutRef<'div'> {
@@ -1895,6 +1908,7 @@ interface LayoutFooterProps extends Omit<ComponentPropsWithoutRef<'footer'>, 'al
1895
1908
  children?: ReactNode;
1896
1909
  rootRef?: LayoutNodeRef;
1897
1910
  sticky?: boolean;
1911
+ variant?: LayoutChromeVariant;
1898
1912
  align?: LayoutFooterAlign;
1899
1913
  as?: ElementType;
1900
1914
  }
@@ -1952,13 +1966,13 @@ type ControlRowComponent = {
1952
1966
  declare const ControlRow: ControlRowComponent;
1953
1967
 
1954
1968
  declare const LayoutRoot: (props: LayoutRootProps) => React.JSX.Element;
1955
- declare const LayoutHeader: ({ as, ...props }: LayoutHeaderProps) => React.JSX.Element;
1969
+ declare const LayoutHeader: ({ as, sticky, variant, rootRef, ...props }: LayoutHeaderProps) => React.JSX.Element;
1956
1970
  declare const LayoutContent: (props: LayoutContentProps) => React.JSX.Element;
1957
- declare const LayoutFooter: ({ as, align, ...props }: LayoutFooterProps) => React.JSX.Element;
1971
+ declare const LayoutFooter: ({ as, align, sticky, variant, rootRef, ...props }: LayoutFooterProps) => React.JSX.Element;
1958
1972
  declare const Layout: ((props: LayoutRootProps) => React.JSX.Element) & {
1959
- Header: ({ as, ...props }: LayoutHeaderProps) => React.JSX.Element;
1973
+ Header: ({ as, sticky, variant, rootRef, ...props }: LayoutHeaderProps) => React.JSX.Element;
1960
1974
  Content: (props: LayoutContentProps) => React.JSX.Element;
1961
- Footer: ({ as, align, ...props }: LayoutFooterProps) => React.JSX.Element;
1975
+ Footer: ({ as, align, sticky, variant, rootRef, ...props }: LayoutFooterProps) => React.JSX.Element;
1962
1976
  };
1963
1977
 
1964
1978
  type GridGapToken = SpacingToken;
@@ -2016,6 +2030,7 @@ interface ModalRootProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title' |
2016
2030
  open: boolean;
2017
2031
  onOpenChange: (open: boolean) => void;
2018
2032
  children: ReactNode;
2033
+ size?: ControlSize;
2019
2034
  className?: string;
2020
2035
  showClose?: boolean;
2021
2036
  'aria-labelledby'?: string;
@@ -2038,8 +2053,12 @@ interface ModalFooterProps extends Omit<ComponentPropsWithoutRef<'footer'>, 'ali
2038
2053
  }
2039
2054
  type ModalProps = ModalRootProps;
2040
2055
 
2041
- declare const Modal: (({ open, onOpenChange, children, className, "aria-labelledby": ariaLabelledBy, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, rootRef, ...rest }: ModalRootProps) => React.JSX.Element) & {
2042
- Header: ({ rootRef, ...props }: ModalHeaderProps) => React.JSX.Element;
2056
+ declare const Modal: (({ open, onOpenChange, children, size, className, "aria-labelledby": ariaLabelledBy, "aria-label": ariaLabel, "aria-describedby": ariaDescribedBy, rootRef, ...rest }: ModalRootProps) => React.JSX.Element) & {
2057
+ Header: (({ rootRef, children, ...props }: ModalHeaderProps) => React.JSX.Element) & {
2058
+ Title: ({ className, level, ...rest }: TitleProps) => React.JSX.Element;
2059
+ Subtitle: ({ className, size, color, ...rest }: TextProps) => React.JSX.Element;
2060
+ Tabs: ({ className, variant, ...rest }: TabsProps) => React.JSX.Element;
2061
+ };
2043
2062
  Body: ({ className, rootRef, ...props }: ModalBodyProps) => React.JSX.Element;
2044
2063
  Footer: ({ align, rootRef, ...props }: ModalFooterProps) => React.JSX.Element;
2045
2064
  };
@@ -2736,5 +2755,5 @@ declare const CalendarBoard: (({ children, view: controlledView, defaultView, on
2736
2755
  TaskChip: ({ task, layout, continuesBefore, continuesAfter, timeLabel, className, style, highlighted: highlightedProp, rootRef, ...rest }: CalendarBoardTaskChipProps) => string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
2737
2756
  };
2738
2757
 
2739
- export { Accordion, ActionItem, ActionList, ActionSheetTrigger, Alert, AspectRatio, Attachment, AutocompleteField, Avatar, AvatarGroup, Badge, BarChart, Box, Bubble, Button, ButtonGroup, ButtonIcon, Calendar, CalendarBoard, Card, Checkbox, CheckboxGroup, Chip, ChipGroup, Collapse, ColorSwatchGroup, CommandPalette, ConfirmDialog, Container, ControlRow, DateField, DateRangeField, DayStripCalendar, DescriptionList, DialogLayout, DonutChart, Dropdown, EmptyState, FieldBaseButton, FieldBaseIcon, FieldGroup, FieldLabel, Fieldset, FileList$1 as FileList, FileUploader, FormMessage, Gap, Grid, GridItem, ImageCrop, ImageGallery, ImageLightbox, Inline, Item, Kbd, KbdGroup, Layout, LayoutContent, LayoutFooter, LayoutHeader, LayoutItem, LayoutRoot, LineChart, Link, Listbox, LiveRegion, LocaleProvider, Marker, MaskedField, Media, Menu, Modal, MultiSelect, Notification, NotificationProvider, NumberField, Overflow, Overlay, Page, Pagination, PasswordField, PinInput, Popover, PopupSwitch, Progress, ProgressCircle, PullToRefresh, Radio, RadioGroup, Rating, RelativeTime, SafeArea, ScrollArea, SearchField, SegmentedControl, Select, Separator, Sheet, Sidebar, Skeleton, SkipLink, Slider, SortableList, Spinner, Split, Stack, StatBadge, Steps, SuggestField, SwipeToAction, Switch, Table, Tabs, Text, TextField, TextareaField, ThemeProvider, TimeField, Timeline, Title, Tooltip, UploadZone, VirtualList, VisuallyHidden, WheelTimePicker, dismiss, dismissAll, en, formatRelativeTime, getPasswordStrength, notify, ru, useCalendarBoardContext, useCalendarBoardTaskHover, useLocale, useNotify, useT, useTheme };
2740
- export type { AccordionItemData, AccordionItemProps, AccordionProps, AccordionVariant, ActionItemProps, ActionListGroup, ActionListItem, ActionListProps, ActionSheetTriggerProps, AlertLayout, AlertProps, AlertVariant, AspectRatioProps, AttachmentProps, AttachmentSize, AttachmentStatus, AutocompleteFieldOption, AutocompleteFieldProps, AvatarGroupProps, AvatarProps, AvatarSize, AvatarStatus, BadgePosition, BadgeProps, BadgeSize, BadgeVariant, BarChartDataset, BarChartProps, BoxAs, BoxBorderStyle, BoxProps, BoxRadius, BoxShadow, BoxVariant, BubbleAlign, BubbleProps, BubbleReaction, BubbleVariant, ButtonGroupItemFit, ButtonGroupOrientation, ButtonGroupRootProps, ButtonGroupVariant, ButtonIconProps, ButtonProps, ButtonVariant, CalendarBoardBodyProps, CalendarBoardDayCellRenderProps, CalendarBoardDayProps, CalendarBoardHeaderProps, CalendarBoardMonthProps, CalendarBoardNavProps, CalendarBoardProviderProps, CalendarBoardRootProps, CalendarBoardTask, CalendarBoardTaskChipProps, CalendarBoardTaskLayout, CalendarBoardTaskRenderProps, CalendarBoardTitleProps, CalendarBoardView, CalendarBoardWeekProps, CalendarBoardYearMonthRenderProps, CalendarBoardYearProps, CalendarBodyProps, CalendarContextValue, CalendarDayCell, CalendarDayCellRenderProps, CalendarHeaderProps, CalendarNavProps, CalendarProviderProps, CalendarRootProps, CalendarScheduleEvent, CalendarSelectionMode, CalendarTitleProps, CalendarViewMode, CardProps, CardVariant, CheckboxGroupProps, CheckboxMode, CheckboxProps, ChipGroupGap, ChipGroupProps, ChipMode, ChipProps, ChipVariant, CollapseProps, ColorSwatchGroupProps, Column, ActionListGroup as CommandPaletteGroup, ActionListItem as CommandPaletteItem, CommandPaletteProps, ConfirmDialogProps, ConfirmDialogSecondaryAction, ContainerProps, ContainerSize, ControlRowProps, ControlSize, DateFieldProps, DateRangeFieldProps, DateRangeValue, DayStripCalendarProps, DayStripDayRenderProps, DeepPartialMessages, DescriptionListItem, DescriptionListProps, DialogLayoutProps, DonutChartProps, DropdownAlign, DropdownPanelScroll, DropdownPanelState, DropdownPopup, DropdownPopupRole, DropdownProps, DropdownTriggerAttrs, DropdownTriggerMode, DropdownTriggerSlotProps, DropdownWidthMode, EmptyStateProps, EmptyStateSize, FieldBaseButtonProps, FieldBaseIconProps, FieldBaseProps, FieldGroupProps, FieldGroupWidth, FieldLabelAlign, FieldLabelJustify, FieldLabelLayout, FieldLabelProps, FieldWidth, FieldsetProps, FieldsetVariant, FileListItemProps, FileListItemStatus, FileListRootProps, FileUploaderFile, FileUploaderProps, FormMessageProps, FormMessageVariant, GapOrientation, GapProps, GridGapToken, GridItemProps, GridMode, GridProps, ImageCropProps, ImageCropResult, ImageCropShape, ImageGalleryItem, ImageGalleryProps, ImageLightboxProps, InlineProps, ItemMediaVariant, ItemProps, ItemSize, ItemVariant, KbdGroupProps, KbdProps, LabelSide, LayoutAlign, LayoutContentProps, LayoutFooterAlign, LayoutFooterProps, LayoutGap, LayoutHeaderProps, LayoutItemProps, LayoutJustify, LayoutRootProps, LayoutSpacing, LineChartProps, LinkProps, LinkSize, LinkStatus, LinkVariant, ListboxEntry, ListboxFilterFn, ListboxGroup, ListboxHandle, ListboxNavigation, ListboxOption, ListboxProps, ListboxSeparator, LiveRegionProps, LocaleCode, LocaleProviderProps, MarkerProps, MarkerVariant, MaskedFieldProps, MediaProps, MenuProps, MenuTrigger, Messages, ModalBodyProps, ModalFooterAlign, ModalFooterProps, ModalHeaderProps, ModalProps, ModalRootProps, MultiSelectOption, MultiSelectProps, NotificationAction, NotificationItem, NotificationPosition, NotificationProps, NotificationProviderProps, NotificationViewportProps, NotifyInput, NumberFieldProps, OverflowDisplay, OverflowFit, OverflowGap, OverflowItemProps, OverflowProps, OverlayBaseProps, OverlayFloatingProps, OverlayModalProps, OverlayProps, OverlaySheetProps, OverlaySheetSide, OverlayVariant, PageProps, PaginationControlsProps, PaginationPageSizeProps, PaginationProps, PaginationRootProps, PaginationSummaryProps, PasswordFieldProps, PasswordStrength, PinInputProps, PopoverContentVariant, PopoverProps, PopoverTargetAction, PopoverTriggerSlotProps, PopupSwitchAlign, PopupSwitchOption, PopupSwitchProps, PopupSwitchVariant, PopupSwitchWidth, ProgressCircleProps, ProgressProps, ProgressVariant, PullToRefreshProps, RadioGroupProps, RadioProps, RangeValue, RatingProps, RelativeTimeProps, ResolvedListboxGroup, SafeAreaEdges, SafeAreaProps, ScrollAreaProps, SearchFieldProps, SegmentOption, SegmentedControlProps, SegmentedControlVariant, SegmentedItemFit, SelectInputProps, SelectOption, SelectProps, SelectSelectionMode, SeparatorOrientation, SeparatorProps, SeparatorSpace, SheetBodyProps, SheetDirection, SheetFooterAlign, SheetFooterProps, SheetHeaderProps, SheetMode, SheetProps, SidebarContentProps, SidebarFooterProps, SidebarGroupLabelProps, SidebarGroupProps, SidebarHeaderProps, SidebarItemProps, SidebarMobileTriggerProps, SidebarProps, SidebarTitleProps, SkeletonProps, SkeletonVariant, SkipLinkProps, SliderProps, SliderRangeProps, SliderSingleProps, SortableItem, SortableListProps, SortableListVariant, SpinnerProps, SpinnerSize, SpinnerVariant, SplitProps, StackProps, StatBadgeProps, StepItem, StepStatus, StepsProps, SuggestFieldOption, SuggestFieldProps, SwipeAction, SwipeToActionProps, SwitchLabelSide, SwitchProps, TableDensity, TableEmptyConfig, TablePagination, TableProps, TableRowActionsProps, TableSortDirection, TabsItem, TabsListProps, TabsOrientation, TabsPanelProps, TabsProps, TabsTriggerProps, TabsVariant, TextFieldAs, TextFieldProps, TextFieldRef, TextProps, TextareaFieldProps, Theme, ThemeApplyTarget, ThemeProviderProps, TimeFieldProps, TimePopupProps, TimeValue, TimelineItem, TimelineItemStatus, TimelineProps, TitleProps, TooltipProps, TooltipSide, TooltipTriggerProps, TranslationParams, UploadZoneProps, VirtualListAlign, VirtualListHandle, VirtualListOnRangeChangeOptions, VirtualListProps, VirtualListRange, VirtualListRenderItemInfo, VirtualScrollMetrics, VirtualScrollMetricsStore, VisuallyHiddenProps, WheelTimePickerProps };
2758
+ export { Accordion, ActionItem, ActionList, ActionSheetTrigger, Alert, AspectRatio, Attachment, AutocompleteField, Avatar, AvatarGroup, Badge, BarChart, Box, Bubble, Button, ButtonGroup, ButtonIcon, Calendar, CalendarBoard, Card, Checkbox, CheckboxGroup, Chip, ChipGroup, Collapse, ColorSwatchGroup, CommandPalette, ConfirmDialog, Container, ControlRow, DateField, DateRangeField, DayStripCalendar, DescriptionList, DialogLayout, DonutChart, Dropdown, EmptyState, FieldBaseButton, FieldBaseIcon, FieldGroup, FieldLabel, Fieldset, FileList$1 as FileList, FileUploader, FormMessage, Gap, Grid, GridItem, Header, HeaderRoot, HeaderSubtitle, HeaderTabs, HeaderTitle, ImageCrop, ImageGallery, ImageLightbox, Inline, Item, Kbd, KbdGroup, Layout, LayoutContent, LayoutFooter, LayoutHeader, LayoutItem, LayoutRoot, LineChart, Link, Listbox, LiveRegion, LocaleProvider, Marker, MaskedField, Media, Menu, Modal, MultiSelect, Notification, NotificationProvider, NumberField, Overflow, Overlay, Page, Pagination, PasswordField, PinInput, Popover, PopupSwitch, Progress, ProgressCircle, PullToRefresh, Radio, RadioGroup, Rating, RelativeTime, SafeArea, ScrollArea, SearchField, SegmentedControl, Select, Separator, Sheet, Sidebar, Skeleton, SkipLink, Slider, SortableList, Spinner, Split, Stack, StatBadge, Steps, SuggestField, SwipeToAction, Switch, Table, Tabs, Text, TextField, TextareaField, ThemeProvider, TimeField, Timeline, Title, Tooltip, UploadZone, VirtualList, VisuallyHidden, WheelTimePicker, dismiss, dismissAll, en, formatRelativeTime, getPasswordStrength, notify, ru, useCalendarBoardContext, useCalendarBoardTaskHover, useLocale, useNotify, useT, useTheme };
2759
+ export type { AccordionItemData, AccordionItemProps, AccordionProps, AccordionVariant, ActionItemProps, ActionListEntry, ActionListGroup, ActionListItem, ActionListProps, ActionListSeparator, ActionSheetTriggerProps, AlertLayout, AlertProps, AlertVariant, AspectRatioProps, AttachmentProps, AttachmentSize, AttachmentStatus, AutocompleteFieldOption, AutocompleteFieldProps, AvatarGroupProps, AvatarProps, AvatarSize, AvatarStatus, BadgePosition, BadgeProps, BadgeSize, BadgeVariant, BarChartDataset, BarChartProps, BoxAs, BoxBorderStyle, BoxProps, BoxRadius, BoxShadow, BoxVariant, BubbleAlign, BubbleProps, BubbleReaction, BubbleVariant, ButtonGroupItemFit, ButtonGroupOrientation, ButtonGroupRootProps, ButtonGroupVariant, ButtonIconProps, ButtonProps, ButtonVariant, CalendarBoardBodyProps, CalendarBoardDayCellRenderProps, CalendarBoardDayProps, CalendarBoardHeaderProps, CalendarBoardMonthProps, CalendarBoardNavProps, CalendarBoardProviderProps, CalendarBoardRootProps, CalendarBoardTask, CalendarBoardTaskChipProps, CalendarBoardTaskLayout, CalendarBoardTaskRenderProps, CalendarBoardTitleProps, CalendarBoardView, CalendarBoardWeekProps, CalendarBoardYearMonthRenderProps, CalendarBoardYearProps, CalendarBodyProps, CalendarContextValue, CalendarDayCell, CalendarDayCellRenderProps, CalendarHeaderProps, CalendarNavProps, CalendarProviderProps, CalendarRootProps, CalendarScheduleEvent, CalendarSelectionMode, CalendarTitleProps, CalendarViewMode, CardProps, CardVariant, CheckboxGroupProps, CheckboxMode, CheckboxProps, ChipGroupGap, ChipGroupProps, ChipMode, ChipProps, ChipVariant, CollapseProps, ColorSwatchGroupProps, Column, ActionListGroup as CommandPaletteGroup, ActionListItem as CommandPaletteItem, CommandPaletteProps, ConfirmDialogProps, ConfirmDialogSecondaryAction, ContainerProps, ContainerSize, ControlRowProps, ControlSize, DateFieldProps, DateRangeFieldProps, DateRangeValue, DayStripCalendarProps, DayStripDayRenderProps, DeepPartialMessages, DescriptionListItem, DescriptionListProps, DialogLayoutProps, DonutChartProps, DropdownAlign, DropdownPanelScroll, DropdownPanelState, DropdownPopup, DropdownPopupRole, DropdownProps, DropdownTriggerAttrs, DropdownTriggerMode, DropdownTriggerSlotProps, DropdownWidthMode, EmptyStateProps, EmptyStateSize, FieldBaseButtonProps, FieldBaseIconProps, FieldBaseProps, FieldGroupProps, FieldGroupWidth, FieldLabelAlign, FieldLabelJustify, FieldLabelLayout, FieldLabelProps, FieldWidth, FieldsetProps, FieldsetVariant, FileListItemProps, FileListItemStatus, FileListRootProps, FileUploaderFile, FileUploaderProps, FormMessageProps, FormMessageVariant, GapOrientation, GapProps, GridGapToken, GridItemProps, GridMode, GridProps, HeaderProps, ImageCropProps, ImageCropResult, ImageCropShape, ImageGalleryItem, ImageGalleryProps, ImageLightboxProps, InlineProps, ItemMediaVariant, ItemProps, ItemSize, ItemVariant, KbdGroupProps, KbdProps, LabelSide, LayoutAlign, LayoutChromeVariant, LayoutContentProps, LayoutFooterAlign, LayoutFooterProps, LayoutGap, LayoutHeaderProps, LayoutItemProps, LayoutJustify, LayoutRootProps, LayoutSpacing, LineChartProps, LinkProps, LinkSize, LinkStatus, LinkVariant, ListboxEntry, ListboxFilterFn, ListboxGroup, ListboxHandle, ListboxNavigation, ListboxOption, ListboxProps, ListboxSeparator, LiveRegionProps, LocaleCode, LocaleProviderProps, MarkerProps, MarkerVariant, MaskedFieldProps, MediaProps, MenuProps, MenuTrigger, Messages, ModalBodyProps, ModalFooterAlign, ModalFooterProps, ModalHeaderProps, ModalProps, ModalRootProps, MultiSelectOption, MultiSelectProps, NotificationAction, NotificationItem, NotificationPosition, NotificationProps, NotificationProviderProps, NotificationViewportProps, NotifyInput, NumberFieldProps, OverflowDisplay, OverflowFit, OverflowGap, OverflowItemProps, OverflowProps, OverlayBaseProps, OverlayFloatingProps, OverlayModalProps, OverlayProps, OverlaySheetProps, OverlaySheetSide, OverlayVariant, PageProps, PaginationControlsProps, PaginationPageSizeProps, PaginationProps, PaginationRootProps, PaginationSummaryProps, PasswordFieldProps, PasswordStrength, PinInputProps, PopoverContentVariant, PopoverProps, PopoverTargetAction, PopoverTriggerSlotProps, PopupSwitchAlign, PopupSwitchOption, PopupSwitchProps, PopupSwitchVariant, PopupSwitchWidth, ProgressCircleProps, ProgressProps, ProgressVariant, PullToRefreshProps, RadioGroupProps, RadioProps, RangeValue, RatingProps, RelativeTimeProps, ResolvedListboxGroup, SafeAreaEdges, SafeAreaProps, ScrollAreaProps, SearchFieldProps, SegmentOption, SegmentedControlProps, SegmentedControlVariant, SegmentedItemFit, SelectInputProps, SelectOption, SelectProps, SelectSelectionMode, SeparatorOrientation, SeparatorProps, SeparatorSpace, SheetBodyProps, SheetDirection, SheetFooterAlign, SheetFooterProps, SheetHeaderProps, SheetMode, SheetProps, SidebarContentProps, SidebarFooterProps, SidebarGroupLabelProps, SidebarGroupProps, SidebarHeaderProps, SidebarItemProps, SidebarMobileTriggerProps, SidebarProps, SidebarTitleProps, SkeletonProps, SkeletonVariant, SkipLinkProps, SliderProps, SliderRangeProps, SliderSingleProps, SortableItem, SortableListProps, SortableListVariant, SpinnerProps, SpinnerSize, SpinnerVariant, SplitProps, StackProps, StatBadgeProps, StepItem, StepStatus, StepsProps, SuggestFieldOption, SuggestFieldProps, SwipeAction, SwipeToActionProps, SwitchLabelSide, SwitchProps, TableDensity, TableEmptyConfig, TablePagination, TableProps, TableRowActionsProps, TableSortDirection, TabsItem, TabsOrientation, TabsPanelProps, TabsProps, TabsVariant, TextFieldAs, TextFieldProps, TextFieldRef, TextProps, TextareaFieldProps, Theme, ThemeApplyTarget, ThemeProviderProps, TimeFieldProps, TimePopupProps, TimeValue, TimelineItem, TimelineItemStatus, TimelineProps, TitleProps, TooltipProps, TooltipSide, TooltipTriggerProps, TranslationParams, UploadZoneProps, VirtualListAlign, VirtualListHandle, VirtualListOnRangeChangeOptions, VirtualListProps, VirtualListRange, VirtualListRenderItemInfo, VirtualScrollMetrics, VirtualScrollMetricsStore, VisuallyHiddenProps, WheelTimePickerProps };