@mortenbrudvik/waveui 0.16.0 → 0.17.1

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 (40) hide show
  1. package/README.md +66 -17
  2. package/dist/components/input/Label.cjs +1 -1
  3. package/dist/components/input/Label.cjs.map +1 -1
  4. package/dist/components/input/Label.mjs +1 -0
  5. package/dist/components/input/Label.mjs.map +1 -1
  6. package/dist/components/portal/Portal.cjs +1 -1
  7. package/dist/components/portal/Portal.cjs.map +1 -1
  8. package/dist/components/portal/Portal.mjs +12 -11
  9. package/dist/components/portal/Portal.mjs.map +1 -1
  10. package/dist/components/provider/WaveProvider.cjs +1 -1
  11. package/dist/components/provider/WaveProvider.cjs.map +1 -1
  12. package/dist/components/provider/WaveProvider.mjs +61 -35
  13. package/dist/components/provider/WaveProvider.mjs.map +1 -1
  14. package/dist/components/typography/Text.cjs +1 -1
  15. package/dist/components/typography/Text.cjs.map +1 -1
  16. package/dist/components/typography/Text.mjs +11 -7
  17. package/dist/components/typography/Text.mjs.map +1 -1
  18. package/dist/index.cjs +1 -1
  19. package/dist/index.d.cts +271 -10
  20. package/dist/index.d.ts +271 -10
  21. package/dist/index.mjs +143 -140
  22. package/dist/lib/brand.cjs +2 -0
  23. package/dist/lib/brand.cjs.map +1 -0
  24. package/dist/lib/brand.mjs +358 -0
  25. package/dist/lib/brand.mjs.map +1 -0
  26. package/dist/lib/cn.cjs +1 -1
  27. package/dist/lib/cn.cjs.map +1 -1
  28. package/dist/lib/cn.mjs +5 -1
  29. package/dist/lib/cn.mjs.map +1 -1
  30. package/dist/lib/tokens.cjs +3 -0
  31. package/dist/lib/tokens.cjs.map +1 -0
  32. package/dist/lib/tokens.mjs +55 -0
  33. package/dist/lib/tokens.mjs.map +1 -0
  34. package/dist/lib/waveTokens.cjs +2 -0
  35. package/dist/lib/waveTokens.cjs.map +1 -0
  36. package/dist/lib/waveTokens.mjs +24 -0
  37. package/dist/lib/waveTokens.mjs.map +1 -0
  38. package/dist/styles.css +1 -1
  39. package/package.json +3 -1
  40. package/src/styles/tokens.css +210 -10
package/dist/index.mjs CHANGED
@@ -9,143 +9,146 @@ import { getInitials as Ln } from "./lib/initials.mjs";
9
9
  import { isTruncatableBreadcrumbContent as Rn, partitionBreadcrumbItems as zn, truncateBreadcrumbLongName as Bn, truncateBreadcrumbLongTooltip as Vn } from "./lib/breadcrumb.mjs";
10
10
  import { createTableColumn as Hn } from "./lib/table.mjs";
11
11
  import { createToaster as Un } from "./lib/toaster.mjs";
12
- import { useEventCallback as Wn } from "./hooks/useEventCallback.mjs";
13
- import { useControllable as Gn } from "./hooks/useControllable.mjs";
14
- import { useId as Kn } from "./hooks/useId.mjs";
15
- import { getFirstTabbable as qn, getLastTabbable as Jn, getTabbableElements as Yn } from "./lib/focus.mjs";
16
- import { useRovingTabIndex as Xn } from "./hooks/useRovingTabIndex.mjs";
17
- import { useMergedRefs as Zn } from "./hooks/useMergedRefs.mjs";
18
- import { useIsClient as Qn } from "./hooks/useIsClient.mjs";
19
- import { useFieldControl as $n } from "./hooks/useFieldControl.mjs";
20
- import { announce as er, useAnnounce as tr } from "./hooks/useAnnounce.mjs";
21
- import { usePresence as nr } from "./hooks/usePresence.mjs";
22
- import { useSelection as rr } from "./hooks/useSelection.mjs";
23
- import { useVirtualWindow as ir } from "./hooks/useVirtualWindow.mjs";
24
- import { useActiveDescendant as ar } from "./hooks/useActiveDescendant.mjs";
25
- import { collectOptionLabels as or, markListboxElement as sr, useListbox as cr, useListboxOption as lr } from "./hooks/useListbox.mjs";
26
- import { getThemeClassName as ur } from "./lib/theme.mjs";
27
- import { WaveProvider as dr, useWaveTheme as fr } from "./components/provider/WaveProvider.mjs";
28
- import { usePopupPosition as pr } from "./hooks/usePopupPosition.mjs";
29
- import { hasOpenModal as mr, modalAllowProps as hr } from "./lib/layers.mjs";
30
- import { DismissLayerProvider as gr, useDismiss as _r } from "./hooks/useDismiss.mjs";
31
- import { useFocusTrap as vr, useInitialFocus as yr } from "./hooks/useFocusTrap.mjs";
32
- import { useRestoreFocus as br } from "./hooks/useRestoreFocus.mjs";
33
- import { useModalLayer as xr } from "./hooks/useModalLayer.mjs";
34
- import { useModalOpen as Sr } from "./hooks/useModalOpen.mjs";
35
- import { useFocusVisible as Cr } from "./hooks/useFocusVisible.mjs";
36
- import { useFocusableGroup as wr } from "./hooks/useFocusableGroup.mjs";
37
- import { useGridNavigation as Tr } from "./components/table/useGridNavigation.mjs";
38
- import { focusRing as Er, focusRingInset as Dr, inputFocus as Or, inputFocusWithin as kr } from "./lib/styles.mjs";
39
- import { Portal as Ar } from "./components/portal/Portal.mjs";
40
- import { Button as jr } from "./components/button/Button.mjs";
41
- import { CompoundButton as Mr } from "./components/button/CompoundButton.mjs";
42
- import { ToggleButton as Nr } from "./components/button/ToggleButton.mjs";
43
- import { SplitButton as Pr } from "./components/button/SplitButton.mjs";
44
- import { MenuButton as Fr } from "./components/button/MenuButton.mjs";
45
- import { Link as Ir } from "./components/button/Link.mjs";
46
- import { ToolbarButton as Lr, ToolbarDivider as Rr, ToolbarGroup as zr, ToolbarRadioButton as Br, ToolbarRadioGroup as Vr, ToolbarToggleButton as Hr } from "./components/button/Toolbar.parts.mjs";
47
- import { Toolbar as Ur } from "./components/button/Toolbar.mjs";
48
- import { Input as Wr } from "./components/input/Input.mjs";
49
- import { Textarea as Gr } from "./components/input/Textarea.mjs";
50
- import { Field as Kr } from "./components/input/Field.mjs";
51
- import { Checkbox as qr } from "./components/input/Checkbox.mjs";
52
- import { RadioGroup as Jr, RadioGroupItem as Yr, RadioItem as Xr } from "./components/input/RadioGroup.mjs";
53
- import { Switch as Zr } from "./components/input/Switch.mjs";
54
- import { Select as Qr } from "./components/input/Select.mjs";
55
- import { SearchBox as $r } from "./components/input/SearchBox.mjs";
56
- import { Slider as ei } from "./components/input/Slider.mjs";
57
- import { SpinButton as ti } from "./components/input/SpinButton.mjs";
58
- import { Label as ni } from "./components/input/Label.mjs";
59
- import { ListboxProvider as ri, ListboxSurface as ii, Option as ai, OptionGroup as oi, useListboxPopup as si } from "./components/input/Option.mjs";
60
- import { Combobox as ci, ComboboxOption as li, ComboboxOptionGroup as ui } from "./components/input/Combobox.mjs";
61
- import { Dropdown as di, DropdownOption as fi, DropdownOptionGroup as pi } from "./components/input/Dropdown.mjs";
62
- import { Listbox as mi, ListboxOption as hi, ListboxOptionGroup as gi } from "./components/input/Listbox.mjs";
63
- import { ColorSwatch as _i, EmptySwatch as vi, ImageSwatch as yi } from "./components/input/SwatchPicker.swatches.mjs";
64
- import { SwatchPicker as bi, SwatchPickerRow as xi } from "./components/input/SwatchPicker.mjs";
65
- import { ColorPickerHexField as Si, ColorPickerPreview as Ci, ColorPickerSwatches as wi } from "./components/input/ColorPicker.parts.mjs";
66
- import { AlphaSlider as Ti } from "./components/input/AlphaSlider.mjs";
67
- import { ColorArea as Ei } from "./components/input/ColorArea.mjs";
68
- import { ColorSlider as Di } from "./components/input/ColorSlider.mjs";
69
- import { ColorPicker as Oi } from "./components/input/ColorPicker.mjs";
70
- import { Tag as ki } from "./components/data-display/Tag.mjs";
71
- import { TagGroup as Ai } from "./components/data-display/TagGroup.mjs";
72
- import { TagPickerOption as ji } from "./components/input/TagPicker.option.mjs";
73
- import { TagPickerButton as Mi, TagPickerControl as Ni, TagPickerGroup as Pi, TagPickerInput as Fi, TagPickerList as Ii, TagPickerOptionGroup as Li } from "./components/input/TagPicker.parts.mjs";
74
- import { TagPicker as Ri } from "./components/input/TagPicker.mjs";
75
- import { RatingItem as zi } from "./components/input/Rating.item.mjs";
76
- import { Rating as Bi, RatingDisplay as Vi, RatingDisplayItem as Hi } from "./components/input/Rating.mjs";
77
- import { TimePicker as Ui } from "./components/input/TimePicker.mjs";
78
- import { Calendar as Wi } from "./components/input/Calendar.mjs";
79
- import { DatePicker as Gi } from "./components/input/DatePicker.mjs";
80
- import { Avatar as Ki } from "./components/data-display/Avatar.mjs";
81
- import { partitionAvatarGroupItems as qi } from "./components/data-display/AvatarGroup.partition.mjs";
82
- import { AvatarGroupItem as Ji, AvatarGroupPopover as Yi } from "./components/data-display/AvatarGroup.parts.mjs";
83
- import { AvatarGroup as Xi } from "./components/data-display/AvatarGroup.mjs";
84
- import { Badge as Zi } from "./components/data-display/Badge.mjs";
85
- import { PresenceBadge as Qi } from "./components/data-display/PresenceBadge.mjs";
86
- import { CounterBadge as $i } from "./components/data-display/CounterBadge.mjs";
87
- import { InteractionTag as ea, InteractionTagPrimary as ta, InteractionTagSecondary as na } from "./components/data-display/InteractionTag.mjs";
88
- import { Persona as ra } from "./components/data-display/Persona.mjs";
89
- import { Divider as ia } from "./components/data-display/Divider.mjs";
90
- import { InfoButton as aa } from "./components/data-display/InfoButton.mjs";
91
- import { InfoLabel as oa } from "./components/data-display/InfoLabel.mjs";
92
- import { Image as sa } from "./components/data-display/Image.mjs";
93
- import { List as ca, ListItem as la } from "./components/data-display/List.mjs";
94
- import { Text as ua } from "./components/typography/Text.mjs";
95
- import { CardPreview as da } from "./components/layout/Card.preview.mjs";
96
- import { Card as fa, CardBody as pa, CardFooter as ma, CardHeader as ha } from "./components/layout/Card.mjs";
97
- import { Accordion as ga, AccordionItem as _a, AccordionPanel as va, AccordionTrigger as ya } from "./components/layout/Accordion.mjs";
98
- import { TabList as ba, TabListPanel as xa, TabListPanels as Sa, TabListTab as Ca } from "./components/layout/TabList.mjs";
99
- import { TreeItem as wa } from "./components/layout/Tree.core.mjs";
100
- import { TreeItemPersonaLayout as Ta } from "./components/layout/Tree.itemPersonaLayout.mjs";
101
- import { Tree as Ea } from "./components/layout/Tree.mjs";
102
- import { useFlatTree as Da } from "./components/layout/useFlatTree.mjs";
103
- import { FlatTreeItem as Oa } from "./components/layout/FlatTree.item.mjs";
104
- import { FlatTree as ka } from "./components/layout/FlatTree.mjs";
105
- import { CarouselButton as Aa } from "./components/layout/Carousel.button.mjs";
106
- import { Carousel as ja, CarouselItem as Ma } from "./components/layout/Carousel.mjs";
107
- import { Overflow as Na, OverflowDivider as Pa, OverflowItem as Fa, useHasHiddenItems as Ia, useIsOverflowGroupVisible as La, useIsOverflowItemVisible as Ra, useIsOverflowing as za, useOverflowMenu as Ba } from "./components/layout/Overflow.mjs";
108
- import { Stack as Va } from "./components/layout/Stack.mjs";
109
- import { Flex as Ha } from "./components/layout/Flex.mjs";
110
- import { Grid as Ua } from "./components/layout/Grid.mjs";
111
- import { MenuDivider as Wa, MenuItem as Ga } from "./components/navigation/Menu.items.mjs";
112
- import { MenuGroup as Ka, MenuGroupHeader as qa } from "./components/navigation/Menu.group.mjs";
113
- import { MenuItemLink as Ja } from "./components/navigation/Menu.link.mjs";
114
- import { MenuPopover as Ya } from "./components/navigation/Menu.popover.mjs";
115
- import { MenuTrigger as Xa } from "./components/navigation/Menu.trigger.mjs";
116
- import { MenuItemCheckbox as Za, MenuItemRadio as Qa, MenuItemSwitch as $a } from "./components/navigation/Menu.selectable.mjs";
117
- import { MenuSplitGroup as eo } from "./components/navigation/Menu.splitGroup.mjs";
118
- import { Menu as to } from "./components/navigation/Menu.mjs";
119
- import { Breadcrumb as no, BreadcrumbItem as ro } from "./components/navigation/Breadcrumb.mjs";
120
- import { NavAppItem as io, NavAppItemStatic as ao, NavDivider as oo, NavSectionHeader as so } from "./components/navigation/Nav.parts.mjs";
121
- import { Nav as co, NavCategory as lo, NavItem as uo, NavSubItem as fo } from "./components/navigation/Nav.mjs";
122
- import { NavDrawer as po, NavDrawerBody as mo, NavDrawerFooter as ho, NavDrawerHeader as go } from "./components/navigation/NavDrawer.mjs";
123
- import { Hamburger as _o } from "./components/navigation/Hamburger.mjs";
124
- import { Pagination as vo } from "./components/navigation/Pagination.mjs";
125
- import { Stepper as yo, StepperStep as bo } from "./components/navigation/Stepper.mjs";
126
- import { MessageBarActions as xo, MessageBarTitle as So } from "./components/feedback/MessageBar.parts.mjs";
127
- import { MessageBar as Co } from "./components/feedback/MessageBar.mjs";
128
- import { MessageBarGroup as wo } from "./components/feedback/MessageBarGroup.mjs";
129
- import { ProgressBar as To } from "./components/feedback/ProgressBar.mjs";
130
- import { Spinner as Eo } from "./components/feedback/Spinner.mjs";
131
- import { Skeleton as Do, SkeletonGroup as Oo } from "./components/feedback/Skeleton.mjs";
132
- import { ToastBody as ko, ToastClose as Ao, ToastFooter as jo, ToastTitle as Mo } from "./components/feedback/Toast.parts.mjs";
133
- import { Toaster as No, useToastController as Po } from "./components/feedback/Toaster.mjs";
134
- import { Toast as Fo } from "./components/feedback/Toast.mjs";
135
- import { Dialog as Io, DialogClose as Lo, DialogContent as Ro, DialogFooter as zo, DialogTitle as Bo, DialogTrigger as Vo } from "./components/overlays/Dialog.mjs";
136
- import { Popover as Ho, PopoverContent as Uo, PopoverTrigger as Wo } from "./components/overlays/Popover.mjs";
137
- import { Tooltip as Go } from "./components/overlays/Tooltip.mjs";
138
- import { DrawerBody as Ko, DrawerClose as qo, DrawerFooter as Jo, DrawerHeader as Yo, DrawerHeaderNavigation as Xo, DrawerHeaderTitle as Zo, DrawerTitle as Qo, DrawerTrigger as $o } from "./components/overlays/Drawer.parts.mjs";
139
- import { Drawer as es } from "./components/overlays/Drawer.mjs";
140
- import { TeachingPopoverBody as ts, TeachingPopoverCarousel as ns, TeachingPopoverCarouselFooter as rs, TeachingPopoverCarouselNav as is, TeachingPopoverCarouselPageCount as as, TeachingPopoverFooter as os, TeachingPopoverHeader as ss, TeachingPopoverSurface as cs, TeachingPopoverTitle as ls, TeachingPopoverTrigger as us } from "./components/overlays/TeachingPopover.parts.mjs";
141
- import { TeachingPopover as ds } from "./components/overlays/TeachingPopover.mjs";
142
- import { TableResizeHandle as fs } from "./components/table/Table.resize.mjs";
143
- import { Table as ps, TableBody as ms, TableCell as hs, TableCellActions as gs, TableCellLayout as _s, TableHead as vs, TableHeadCell as ys, TableHeader as bs, TableHeaderCell as xs, TableRow as Ss, TableSelectionCell as Cs } from "./components/table/Table.mjs";
144
- import { DataGridHeader as ws, DataGridHeaderCell as Ts } from "./components/table/DataGrid.header.mjs";
145
- import { DataGrid as Es, DataGridBody as Ds, DataGridCell as Os, DataGridRow as ks, DataGridSelectionCell as As } from "./components/table/DataGrid.mjs";
146
- import { useTableFeatures as js } from "./components/table/useTableFeatures.mjs";
147
- import { useTableSort as Ms } from "./components/table/useTableSort.mjs";
148
- import { useTableSelection as Ns } from "./components/table/useTableSelection.mjs";
149
- import { useTableColumnSizing as Ps } from "./components/table/useTableColumnSizing.mjs";
150
- import { Presence as Fs } from "./components/motion/Presence.mjs";
151
- export { ga as Accordion, _a as AccordionItem, va as AccordionPanel, ya as AccordionTrigger, Ti as AlphaSlider, Ki as Avatar, Xi as AvatarGroup, Ji as AvatarGroupItem, Yi as AvatarGroupPopover, Zi as Badge, no as Breadcrumb, ro as BreadcrumbItem, jr as Button, Wi as Calendar, fa as Card, pa as CardBody, ma as CardFooter, ha as CardHeader, da as CardPreview, ja as Carousel, Aa as CarouselButton, Ma as CarouselItem, qr as Checkbox, Ei as ColorArea, Oi as ColorPicker, Si as ColorPickerHexField, Ci as ColorPickerPreview, wi as ColorPickerSwatches, Di as ColorSlider, _i as ColorSwatch, ci as Combobox, li as ComboboxOption, ui as ComboboxOptionGroup, Mr as CompoundButton, $i as CounterBadge, Es as DataGrid, Ds as DataGridBody, Os as DataGridCell, ws as DataGridHeader, Ts as DataGridHeaderCell, ks as DataGridRow, As as DataGridSelectionCell, Gi as DatePicker, Io as Dialog, Lo as DialogClose, Ro as DialogContent, zo as DialogFooter, Bo as DialogTitle, Vo as DialogTrigger, gr as DismissLayerProvider, ia as Divider, es as Drawer, Ko as DrawerBody, qo as DrawerClose, Jo as DrawerFooter, Yo as DrawerHeader, Xo as DrawerHeaderNavigation, Zo as DrawerHeaderTitle, Qo as DrawerTitle, $o as DrawerTrigger, di as Dropdown, fi as DropdownOption, pi as DropdownOptionGroup, vi as EmptySwatch, Kr as Field, ka as FlatTree, Oa as FlatTreeItem, Ha as Flex, Ua as Grid, _o as Hamburger, sa as Image, yi as ImageSwatch, aa as InfoButton, oa as InfoLabel, Wr as Input, ea as InteractionTag, ta as InteractionTagPrimary, na as InteractionTagSecondary, ni as Label, Ir as Link, ca as List, la as ListItem, mi as Listbox, hi as ListboxOption, gi as ListboxOptionGroup, ri as ListboxProvider, ii as ListboxSurface, to as Menu, Fr as MenuButton, Wa as MenuDivider, Ka as MenuGroup, qa as MenuGroupHeader, Ga as MenuItem, Za as MenuItemCheckbox, Ja as MenuItemLink, Qa as MenuItemRadio, $a as MenuItemSwitch, Ya as MenuPopover, eo as MenuSplitGroup, Xa as MenuTrigger, Co as MessageBar, xo as MessageBarActions, wo as MessageBarGroup, So as MessageBarTitle, co as Nav, io as NavAppItem, ao as NavAppItemStatic, lo as NavCategory, oo as NavDivider, po as NavDrawer, mo as NavDrawerBody, ho as NavDrawerFooter, go as NavDrawerHeader, uo as NavItem, so as NavSectionHeader, fo as NavSubItem, ai as Option, oi as OptionGroup, Na as Overflow, Pa as OverflowDivider, Fa as OverflowItem, vo as Pagination, ra as Persona, Ho as Popover, Uo as PopoverContent, Wo as PopoverTrigger, Ar as Portal, Fs as Presence, Qi as PresenceBadge, To as ProgressBar, Jr as RadioGroup, Yr as RadioGroupItem, Xr as RadioItem, Bi as Rating, Vi as RatingDisplay, Hi as RatingDisplayItem, zi as RatingItem, $r as SearchBox, Qr as Select, Do as Skeleton, Oo as SkeletonGroup, ei as Slider, ti as SpinButton, Eo as Spinner, Pr as SplitButton, Va as Stack, yo as Stepper, bo as StepperStep, bi as SwatchPicker, xi as SwatchPickerRow, Zr as Switch, ba as TabList, xa as TabListPanel, Sa as TabListPanels, Ca as TabListTab, ps as Table, ms as TableBody, hs as TableCell, gs as TableCellActions, _s as TableCellLayout, vs as TableHead, ys as TableHeadCell, bs as TableHeader, xs as TableHeaderCell, fs as TableResizeHandle, Ss as TableRow, Cs as TableSelectionCell, ki as Tag, Ai as TagGroup, Ri as TagPicker, Mi as TagPickerButton, Ni as TagPickerControl, Pi as TagPickerGroup, Fi as TagPickerInput, Ii as TagPickerList, ji as TagPickerOption, Li as TagPickerOptionGroup, ds as TeachingPopover, ts as TeachingPopoverBody, ns as TeachingPopoverCarousel, rs as TeachingPopoverCarouselFooter, is as TeachingPopoverCarouselNav, as as TeachingPopoverCarouselPageCount, os as TeachingPopoverFooter, ss as TeachingPopoverHeader, cs as TeachingPopoverSurface, ls as TeachingPopoverTitle, us as TeachingPopoverTrigger, ua as Text, Gr as Textarea, Ui as TimePicker, Fo as Toast, ko as ToastBody, Ao as ToastClose, jo as ToastFooter, Mo as ToastTitle, No as Toaster, Nr as ToggleButton, Ur as Toolbar, Lr as ToolbarButton, Rr as ToolbarDivider, zr as ToolbarGroup, Br as ToolbarRadioButton, Vr as ToolbarRadioGroup, Hr as ToolbarToggleButton, Go as Tooltip, Ea as Tree, wa as TreeItem, Ta as TreeItemPersonaLayout, dr as WaveProvider, a as accordionClassNames, o as accordionItemClassNames, s as accordionPanelClassNames, c as accordionTriggerClassNames, An as addDays, jn as addMonths, l as alphaSliderClassNames, er as announce, u as avatarClassNames, d as avatarGroupClassNames, f as avatarGroupItemClassNames, p as avatarGroupPopoverClassNames, m as badgeClassNames, h as breadcrumbClassNames, g as breadcrumbItemClassNames, _ as buttonClassNames, v as calendarClassNames, y as cardBodyClassNames, b as cardClassNames, x as cardFooterClassNames, S as cardHeaderClassNames, C as cardPreviewClassNames, w as carouselButtonClassNames, T as carouselClassNames, E as carouselItemClassNames, D as checkboxClassNames, e as cn, or as collectOptionLabels, O as colorAreaClassNames, k as colorPickerClassNames, A as colorPickerHexFieldClassNames, j as colorPickerPreviewClassNames, M as colorPickerSwatchesClassNames, N as colorSliderClassNames, P as colorSwatchClassNames, F as comboboxClassNames, r as composeEventHandlers, I as compoundButtonClassNames, L as counterBadgeClassNames, Hn as createTableColumn, Un as createToaster, R as dataGridBodyClassNames, z as dataGridCellClassNames, B as dataGridClassNames, V as dataGridHeaderCellClassNames, H as dataGridHeaderClassNames, U as dataGridRowClassNames, W as dataGridSelectionCellClassNames, G as datePickerClassNames, K as dialogContentClassNames, q as dialogFooterClassNames, J as dialogTitleClassNames, Y as dividerClassNames, X as drawerBodyClassNames, Z as drawerClassNames, Q as drawerFooterClassNames, $ as drawerHeaderClassNames, ee as drawerHeaderNavigationClassNames, te as drawerHeaderTitleClassNames, ne as drawerTitleClassNames, re as dropdownClassNames, ie as emptySwatchClassNames, ae as fieldClassNames, oe as flatTreeClassNames, se as flatTreeItemClassNames, ce as flexClassNames, Er as focusRing, Dr as focusRingInset, qn as getFirstTabbable, Ln as getInitials, Jn as getLastTabbable, Yn as getTabbableElements, ur as getThemeClassName, Mn as getWeekNumber, le as gridClassNames, ue as hamburgerClassNames, mr as hasOpenModal, Fn as hexToHsv, In as hsvToHex, de as imageClassNames, fe as imageSwatchClassNames, pe as infoButtonClassNames, me as infoLabelClassNames, he as inputClassNames, Or as inputFocus, kr as inputFocusWithin, ge as interactionTagClassNames, _e as interactionTagPrimaryClassNames, ve as interactionTagSecondaryClassNames, Nn as isSameDay, Rn as isTruncatableBreadcrumbContent, ye as labelClassNames, be as linkClassNames, xe as listClassNames, Se as listItemClassNames, Ce as listboxClassNames, we as listboxSurfaceClassNames, sr as markListboxElement, Te as menuButtonClassNames, Ee as menuClassNames, De as menuDividerClassNames, Oe as menuGroupClassNames, ke as menuGroupHeaderClassNames, Ae as menuItemCheckboxClassNames, je as menuItemClassNames, Me as menuItemLinkClassNames, Ne as menuItemRadioClassNames, Pe as menuItemSwitchClassNames, Fe as menuPopoverClassNames, Ie as menuSplitGroupClassNames, i as mergeRefs, Le as messageBarActionsClassNames, Re as messageBarClassNames, ze as messageBarGroupClassNames, Be as messageBarTitleClassNames, hr as modalAllowProps, Ve as navAppItemClassNames, He as navAppItemStaticClassNames, Ue as navCategoryClassNames, We as navClassNames, Ge as navDividerClassNames, Ke as navDrawerBodyClassNames, qe as navDrawerClassNames, Je as navDrawerFooterClassNames, Ye as navDrawerHeaderClassNames, Xe as navItemClassNames, Ze as navSectionHeaderClassNames, Qe as navSubItemClassNames, $e as optionClassNames, et as optionGroupClassNames, tt as overflowClassNames, nt as overflowDividerClassNames, rt as overflowItemClassNames, it as paginationClassNames, qi as partitionAvatarGroupItems, zn as partitionBreadcrumbItems, at as personaClassNames, ot as popoverContentClassNames, st as portalClassNames, ct as presenceBadgeClassNames, lt as progressBarClassNames, ut as radioGroupClassNames, dt as radioGroupItemClassNames, ft as ratingClassNames, pt as ratingDisplayClassNames, mt as ratingItemClassNames, t as renderSlot, n as resolveSlot, ht as searchBoxClassNames, gt as selectClassNames, _t as skeletonClassNames, vt as skeletonGroupClassNames, yt as sliderClassNames, bt as spinButtonClassNames, xt as spinnerClassNames, St as splitButtonClassNames, Ct as stackClassNames, Pn as startOfWeek, wt as stepperClassNames, Tt as stepperStepClassNames, Et as swatchPickerClassNames, Dt as swatchPickerRowClassNames, Ot as switchClassNames, kt as tabListClassNames, At as tabListPanelClassNames, jt as tabListPanelsClassNames, Mt as tabListTabClassNames, Nt as tableBodyClassNames, Pt as tableCellActionsClassNames, Ft as tableCellClassNames, It as tableCellLayoutClassNames, Lt as tableClassNames, Rt as tableHeaderCellClassNames, zt as tableHeaderClassNames, Bt as tableResizeHandleClassNames, Vt as tableRowClassNames, Ht as tableSelectionCellClassNames, Ut as tagClassNames, Wt as tagGroupClassNames, Gt as tagPickerButtonClassNames, Kt as tagPickerClassNames, qt as tagPickerControlClassNames, Jt as tagPickerGroupClassNames, Yt as tagPickerInputClassNames, Xt as tagPickerListClassNames, Zt as tagPickerOptionClassNames, Qt as teachingPopoverBodyClassNames, $t as teachingPopoverCarouselClassNames, en as teachingPopoverCarouselFooterClassNames, tn as teachingPopoverCarouselNavClassNames, nn as teachingPopoverCarouselPageCountClassNames, rn as teachingPopoverClassNames, an as teachingPopoverFooterClassNames, on as teachingPopoverHeaderClassNames, sn as teachingPopoverSurfaceClassNames, cn as teachingPopoverTitleClassNames, ln as textClassNames, un as textareaClassNames, dn as timePickerClassNames, fn as toastBodyClassNames, pn as toastClassNames, mn as toastFooterClassNames, hn as toastTitleClassNames, gn as toasterClassNames, _n as toggleButtonClassNames, vn as toolbarButtonClassNames, yn as toolbarClassNames, bn as toolbarDividerClassNames, xn as toolbarGroupClassNames, Sn as toolbarRadioButtonClassNames, Cn as toolbarRadioGroupClassNames, wn as toolbarToggleButtonClassNames, Tn as tooltipClassNames, En as treeClassNames, Dn as treeItemClassNames, On as treeItemPersonaLayoutClassNames, Bn as truncateBreadcrumbLongName, Vn as truncateBreadcrumbLongTooltip, ar as useActiveDescendant, tr as useAnnounce, Gn as useControllable, _r as useDismiss, Wn as useEventCallback, $n as useFieldControl, Da as useFlatTree, vr as useFocusTrap, Cr as useFocusVisible, wr as useFocusableGroup, Tr as useGridNavigation, Ia as useHasHiddenItems, Kn as useId, yr as useInitialFocus, Qn as useIsClient, La as useIsOverflowGroupVisible, Ra as useIsOverflowItemVisible, za as useIsOverflowing, cr as useListbox, lr as useListboxOption, si as useListboxPopup, Zn as useMergedRefs, xr as useModalLayer, Sr as useModalOpen, Ba as useOverflowMenu, pr as usePopupPosition, nr as usePresence, br as useRestoreFocus, Xn as useRovingTabIndex, rr as useSelection, Ps as useTableColumnSizing, js as useTableFeatures, Ns as useTableSelection, Ms as useTableSort, Po as useToastController, ir as useVirtualWindow, fr as useWaveTheme, kn as waveProviderClassNames };
12
+ import { getTokenStyle as Wn } from "./lib/tokens.mjs";
13
+ import { chartPalette as Gn, waveTokens as Kn } from "./lib/waveTokens.mjs";
14
+ import { createBrandTokens as qn } from "./lib/brand.mjs";
15
+ import { useEventCallback as Jn } from "./hooks/useEventCallback.mjs";
16
+ import { useControllable as Yn } from "./hooks/useControllable.mjs";
17
+ import { useId as Xn } from "./hooks/useId.mjs";
18
+ import { getFirstTabbable as Zn, getLastTabbable as Qn, getTabbableElements as $n } from "./lib/focus.mjs";
19
+ import { useRovingTabIndex as er } from "./hooks/useRovingTabIndex.mjs";
20
+ import { useMergedRefs as tr } from "./hooks/useMergedRefs.mjs";
21
+ import { useIsClient as nr } from "./hooks/useIsClient.mjs";
22
+ import { useFieldControl as rr } from "./hooks/useFieldControl.mjs";
23
+ import { announce as ir, useAnnounce as ar } from "./hooks/useAnnounce.mjs";
24
+ import { usePresence as or } from "./hooks/usePresence.mjs";
25
+ import { useSelection as sr } from "./hooks/useSelection.mjs";
26
+ import { useVirtualWindow as cr } from "./hooks/useVirtualWindow.mjs";
27
+ import { useActiveDescendant as lr } from "./hooks/useActiveDescendant.mjs";
28
+ import { collectOptionLabels as ur, markListboxElement as dr, useListbox as fr, useListboxOption as pr } from "./hooks/useListbox.mjs";
29
+ import { getThemeClassName as mr } from "./lib/theme.mjs";
30
+ import { WaveProvider as hr, useWaveTheme as gr } from "./components/provider/WaveProvider.mjs";
31
+ import { usePopupPosition as _r } from "./hooks/usePopupPosition.mjs";
32
+ import { hasOpenModal as vr, modalAllowProps as yr } from "./lib/layers.mjs";
33
+ import { DismissLayerProvider as br, useDismiss as xr } from "./hooks/useDismiss.mjs";
34
+ import { useFocusTrap as Sr, useInitialFocus as Cr } from "./hooks/useFocusTrap.mjs";
35
+ import { useRestoreFocus as wr } from "./hooks/useRestoreFocus.mjs";
36
+ import { useModalLayer as Tr } from "./hooks/useModalLayer.mjs";
37
+ import { useModalOpen as Er } from "./hooks/useModalOpen.mjs";
38
+ import { useFocusVisible as Dr } from "./hooks/useFocusVisible.mjs";
39
+ import { useFocusableGroup as Or } from "./hooks/useFocusableGroup.mjs";
40
+ import { useGridNavigation as kr } from "./components/table/useGridNavigation.mjs";
41
+ import { focusRing as Ar, focusRingInset as jr, inputFocus as Mr, inputFocusWithin as Nr } from "./lib/styles.mjs";
42
+ import { Portal as Pr } from "./components/portal/Portal.mjs";
43
+ import { Button as Fr } from "./components/button/Button.mjs";
44
+ import { CompoundButton as Ir } from "./components/button/CompoundButton.mjs";
45
+ import { ToggleButton as Lr } from "./components/button/ToggleButton.mjs";
46
+ import { SplitButton as Rr } from "./components/button/SplitButton.mjs";
47
+ import { MenuButton as zr } from "./components/button/MenuButton.mjs";
48
+ import { Link as Br } from "./components/button/Link.mjs";
49
+ import { ToolbarButton as Vr, ToolbarDivider as Hr, ToolbarGroup as Ur, ToolbarRadioButton as Wr, ToolbarRadioGroup as Gr, ToolbarToggleButton as Kr } from "./components/button/Toolbar.parts.mjs";
50
+ import { Toolbar as qr } from "./components/button/Toolbar.mjs";
51
+ import { Input as Jr } from "./components/input/Input.mjs";
52
+ import { Textarea as Yr } from "./components/input/Textarea.mjs";
53
+ import { Field as Xr } from "./components/input/Field.mjs";
54
+ import { Checkbox as Zr } from "./components/input/Checkbox.mjs";
55
+ import { RadioGroup as Qr, RadioGroupItem as $r, RadioItem as ei } from "./components/input/RadioGroup.mjs";
56
+ import { Switch as ti } from "./components/input/Switch.mjs";
57
+ import { Select as ni } from "./components/input/Select.mjs";
58
+ import { SearchBox as ri } from "./components/input/SearchBox.mjs";
59
+ import { Slider as ii } from "./components/input/Slider.mjs";
60
+ import { SpinButton as ai } from "./components/input/SpinButton.mjs";
61
+ import { Label as oi } from "./components/input/Label.mjs";
62
+ import { ListboxProvider as si, ListboxSurface as ci, Option as li, OptionGroup as ui, useListboxPopup as di } from "./components/input/Option.mjs";
63
+ import { Combobox as fi, ComboboxOption as pi, ComboboxOptionGroup as mi } from "./components/input/Combobox.mjs";
64
+ import { Dropdown as hi, DropdownOption as gi, DropdownOptionGroup as _i } from "./components/input/Dropdown.mjs";
65
+ import { Listbox as vi, ListboxOption as yi, ListboxOptionGroup as bi } from "./components/input/Listbox.mjs";
66
+ import { ColorSwatch as xi, EmptySwatch as Si, ImageSwatch as Ci } from "./components/input/SwatchPicker.swatches.mjs";
67
+ import { SwatchPicker as wi, SwatchPickerRow as Ti } from "./components/input/SwatchPicker.mjs";
68
+ import { ColorPickerHexField as Ei, ColorPickerPreview as Di, ColorPickerSwatches as Oi } from "./components/input/ColorPicker.parts.mjs";
69
+ import { AlphaSlider as ki } from "./components/input/AlphaSlider.mjs";
70
+ import { ColorArea as Ai } from "./components/input/ColorArea.mjs";
71
+ import { ColorSlider as ji } from "./components/input/ColorSlider.mjs";
72
+ import { ColorPicker as Mi } from "./components/input/ColorPicker.mjs";
73
+ import { Tag as Ni } from "./components/data-display/Tag.mjs";
74
+ import { TagGroup as Pi } from "./components/data-display/TagGroup.mjs";
75
+ import { TagPickerOption as Fi } from "./components/input/TagPicker.option.mjs";
76
+ import { TagPickerButton as Ii, TagPickerControl as Li, TagPickerGroup as Ri, TagPickerInput as zi, TagPickerList as Bi, TagPickerOptionGroup as Vi } from "./components/input/TagPicker.parts.mjs";
77
+ import { TagPicker as Hi } from "./components/input/TagPicker.mjs";
78
+ import { RatingItem as Ui } from "./components/input/Rating.item.mjs";
79
+ import { Rating as Wi, RatingDisplay as Gi, RatingDisplayItem as Ki } from "./components/input/Rating.mjs";
80
+ import { TimePicker as qi } from "./components/input/TimePicker.mjs";
81
+ import { Calendar as Ji } from "./components/input/Calendar.mjs";
82
+ import { DatePicker as Yi } from "./components/input/DatePicker.mjs";
83
+ import { Avatar as Xi } from "./components/data-display/Avatar.mjs";
84
+ import { partitionAvatarGroupItems as Zi } from "./components/data-display/AvatarGroup.partition.mjs";
85
+ import { AvatarGroupItem as Qi, AvatarGroupPopover as $i } from "./components/data-display/AvatarGroup.parts.mjs";
86
+ import { AvatarGroup as ea } from "./components/data-display/AvatarGroup.mjs";
87
+ import { Badge as ta } from "./components/data-display/Badge.mjs";
88
+ import { PresenceBadge as na } from "./components/data-display/PresenceBadge.mjs";
89
+ import { CounterBadge as ra } from "./components/data-display/CounterBadge.mjs";
90
+ import { InteractionTag as ia, InteractionTagPrimary as aa, InteractionTagSecondary as oa } from "./components/data-display/InteractionTag.mjs";
91
+ import { Persona as sa } from "./components/data-display/Persona.mjs";
92
+ import { Divider as ca } from "./components/data-display/Divider.mjs";
93
+ import { InfoButton as la } from "./components/data-display/InfoButton.mjs";
94
+ import { InfoLabel as ua } from "./components/data-display/InfoLabel.mjs";
95
+ import { Image as da } from "./components/data-display/Image.mjs";
96
+ import { List as fa, ListItem as pa } from "./components/data-display/List.mjs";
97
+ import { Text as ma } from "./components/typography/Text.mjs";
98
+ import { CardPreview as ha } from "./components/layout/Card.preview.mjs";
99
+ import { Card as ga, CardBody as _a, CardFooter as va, CardHeader as ya } from "./components/layout/Card.mjs";
100
+ import { Accordion as ba, AccordionItem as xa, AccordionPanel as Sa, AccordionTrigger as Ca } from "./components/layout/Accordion.mjs";
101
+ import { TabList as wa, TabListPanel as Ta, TabListPanels as Ea, TabListTab as Da } from "./components/layout/TabList.mjs";
102
+ import { TreeItem as Oa } from "./components/layout/Tree.core.mjs";
103
+ import { TreeItemPersonaLayout as ka } from "./components/layout/Tree.itemPersonaLayout.mjs";
104
+ import { Tree as Aa } from "./components/layout/Tree.mjs";
105
+ import { useFlatTree as ja } from "./components/layout/useFlatTree.mjs";
106
+ import { FlatTreeItem as Ma } from "./components/layout/FlatTree.item.mjs";
107
+ import { FlatTree as Na } from "./components/layout/FlatTree.mjs";
108
+ import { CarouselButton as Pa } from "./components/layout/Carousel.button.mjs";
109
+ import { Carousel as Fa, CarouselItem as Ia } from "./components/layout/Carousel.mjs";
110
+ import { Overflow as La, OverflowDivider as Ra, OverflowItem as za, useHasHiddenItems as Ba, useIsOverflowGroupVisible as Va, useIsOverflowItemVisible as Ha, useIsOverflowing as Ua, useOverflowMenu as Wa } from "./components/layout/Overflow.mjs";
111
+ import { Stack as Ga } from "./components/layout/Stack.mjs";
112
+ import { Flex as Ka } from "./components/layout/Flex.mjs";
113
+ import { Grid as qa } from "./components/layout/Grid.mjs";
114
+ import { MenuDivider as Ja, MenuItem as Ya } from "./components/navigation/Menu.items.mjs";
115
+ import { MenuGroup as Xa, MenuGroupHeader as Za } from "./components/navigation/Menu.group.mjs";
116
+ import { MenuItemLink as Qa } from "./components/navigation/Menu.link.mjs";
117
+ import { MenuPopover as $a } from "./components/navigation/Menu.popover.mjs";
118
+ import { MenuTrigger as eo } from "./components/navigation/Menu.trigger.mjs";
119
+ import { MenuItemCheckbox as to, MenuItemRadio as no, MenuItemSwitch as ro } from "./components/navigation/Menu.selectable.mjs";
120
+ import { MenuSplitGroup as io } from "./components/navigation/Menu.splitGroup.mjs";
121
+ import { Menu as ao } from "./components/navigation/Menu.mjs";
122
+ import { Breadcrumb as oo, BreadcrumbItem as so } from "./components/navigation/Breadcrumb.mjs";
123
+ import { NavAppItem as co, NavAppItemStatic as lo, NavDivider as uo, NavSectionHeader as fo } from "./components/navigation/Nav.parts.mjs";
124
+ import { Nav as po, NavCategory as mo, NavItem as ho, NavSubItem as go } from "./components/navigation/Nav.mjs";
125
+ import { NavDrawer as _o, NavDrawerBody as vo, NavDrawerFooter as yo, NavDrawerHeader as bo } from "./components/navigation/NavDrawer.mjs";
126
+ import { Hamburger as xo } from "./components/navigation/Hamburger.mjs";
127
+ import { Pagination as So } from "./components/navigation/Pagination.mjs";
128
+ import { Stepper as Co, StepperStep as wo } from "./components/navigation/Stepper.mjs";
129
+ import { MessageBarActions as To, MessageBarTitle as Eo } from "./components/feedback/MessageBar.parts.mjs";
130
+ import { MessageBar as Do } from "./components/feedback/MessageBar.mjs";
131
+ import { MessageBarGroup as Oo } from "./components/feedback/MessageBarGroup.mjs";
132
+ import { ProgressBar as ko } from "./components/feedback/ProgressBar.mjs";
133
+ import { Spinner as Ao } from "./components/feedback/Spinner.mjs";
134
+ import { Skeleton as jo, SkeletonGroup as Mo } from "./components/feedback/Skeleton.mjs";
135
+ import { ToastBody as No, ToastClose as Po, ToastFooter as Fo, ToastTitle as Io } from "./components/feedback/Toast.parts.mjs";
136
+ import { Toaster as Lo, useToastController as Ro } from "./components/feedback/Toaster.mjs";
137
+ import { Toast as zo } from "./components/feedback/Toast.mjs";
138
+ import { Dialog as Bo, DialogClose as Vo, DialogContent as Ho, DialogFooter as Uo, DialogTitle as Wo, DialogTrigger as Go } from "./components/overlays/Dialog.mjs";
139
+ import { Popover as Ko, PopoverContent as qo, PopoverTrigger as Jo } from "./components/overlays/Popover.mjs";
140
+ import { Tooltip as Yo } from "./components/overlays/Tooltip.mjs";
141
+ import { DrawerBody as Xo, DrawerClose as Zo, DrawerFooter as Qo, DrawerHeader as $o, DrawerHeaderNavigation as es, DrawerHeaderTitle as ts, DrawerTitle as ns, DrawerTrigger as rs } from "./components/overlays/Drawer.parts.mjs";
142
+ import { Drawer as is } from "./components/overlays/Drawer.mjs";
143
+ import { TeachingPopoverBody as as, TeachingPopoverCarousel as os, TeachingPopoverCarouselFooter as ss, TeachingPopoverCarouselNav as cs, TeachingPopoverCarouselPageCount as ls, TeachingPopoverFooter as us, TeachingPopoverHeader as ds, TeachingPopoverSurface as fs, TeachingPopoverTitle as ps, TeachingPopoverTrigger as ms } from "./components/overlays/TeachingPopover.parts.mjs";
144
+ import { TeachingPopover as hs } from "./components/overlays/TeachingPopover.mjs";
145
+ import { TableResizeHandle as gs } from "./components/table/Table.resize.mjs";
146
+ import { Table as _s, TableBody as vs, TableCell as ys, TableCellActions as bs, TableCellLayout as xs, TableHead as Ss, TableHeadCell as Cs, TableHeader as ws, TableHeaderCell as Ts, TableRow as Es, TableSelectionCell as Ds } from "./components/table/Table.mjs";
147
+ import { DataGridHeader as Os, DataGridHeaderCell as ks } from "./components/table/DataGrid.header.mjs";
148
+ import { DataGrid as As, DataGridBody as js, DataGridCell as Ms, DataGridRow as Ns, DataGridSelectionCell as Ps } from "./components/table/DataGrid.mjs";
149
+ import { useTableFeatures as Fs } from "./components/table/useTableFeatures.mjs";
150
+ import { useTableSort as Is } from "./components/table/useTableSort.mjs";
151
+ import { useTableSelection as Ls } from "./components/table/useTableSelection.mjs";
152
+ import { useTableColumnSizing as Rs } from "./components/table/useTableColumnSizing.mjs";
153
+ import { Presence as zs } from "./components/motion/Presence.mjs";
154
+ export { ba as Accordion, xa as AccordionItem, Sa as AccordionPanel, Ca as AccordionTrigger, ki as AlphaSlider, Xi as Avatar, ea as AvatarGroup, Qi as AvatarGroupItem, $i as AvatarGroupPopover, ta as Badge, oo as Breadcrumb, so as BreadcrumbItem, Fr as Button, Ji as Calendar, ga as Card, _a as CardBody, va as CardFooter, ya as CardHeader, ha as CardPreview, Fa as Carousel, Pa as CarouselButton, Ia as CarouselItem, Zr as Checkbox, Ai as ColorArea, Mi as ColorPicker, Ei as ColorPickerHexField, Di as ColorPickerPreview, Oi as ColorPickerSwatches, ji as ColorSlider, xi as ColorSwatch, fi as Combobox, pi as ComboboxOption, mi as ComboboxOptionGroup, Ir as CompoundButton, ra as CounterBadge, As as DataGrid, js as DataGridBody, Ms as DataGridCell, Os as DataGridHeader, ks as DataGridHeaderCell, Ns as DataGridRow, Ps as DataGridSelectionCell, Yi as DatePicker, Bo as Dialog, Vo as DialogClose, Ho as DialogContent, Uo as DialogFooter, Wo as DialogTitle, Go as DialogTrigger, br as DismissLayerProvider, ca as Divider, is as Drawer, Xo as DrawerBody, Zo as DrawerClose, Qo as DrawerFooter, $o as DrawerHeader, es as DrawerHeaderNavigation, ts as DrawerHeaderTitle, ns as DrawerTitle, rs as DrawerTrigger, hi as Dropdown, gi as DropdownOption, _i as DropdownOptionGroup, Si as EmptySwatch, Xr as Field, Na as FlatTree, Ma as FlatTreeItem, Ka as Flex, qa as Grid, xo as Hamburger, da as Image, Ci as ImageSwatch, la as InfoButton, ua as InfoLabel, Jr as Input, ia as InteractionTag, aa as InteractionTagPrimary, oa as InteractionTagSecondary, oi as Label, Br as Link, fa as List, pa as ListItem, vi as Listbox, yi as ListboxOption, bi as ListboxOptionGroup, si as ListboxProvider, ci as ListboxSurface, ao as Menu, zr as MenuButton, Ja as MenuDivider, Xa as MenuGroup, Za as MenuGroupHeader, Ya as MenuItem, to as MenuItemCheckbox, Qa as MenuItemLink, no as MenuItemRadio, ro as MenuItemSwitch, $a as MenuPopover, io as MenuSplitGroup, eo as MenuTrigger, Do as MessageBar, To as MessageBarActions, Oo as MessageBarGroup, Eo as MessageBarTitle, po as Nav, co as NavAppItem, lo as NavAppItemStatic, mo as NavCategory, uo as NavDivider, _o as NavDrawer, vo as NavDrawerBody, yo as NavDrawerFooter, bo as NavDrawerHeader, ho as NavItem, fo as NavSectionHeader, go as NavSubItem, li as Option, ui as OptionGroup, La as Overflow, Ra as OverflowDivider, za as OverflowItem, So as Pagination, sa as Persona, Ko as Popover, qo as PopoverContent, Jo as PopoverTrigger, Pr as Portal, zs as Presence, na as PresenceBadge, ko as ProgressBar, Qr as RadioGroup, $r as RadioGroupItem, ei as RadioItem, Wi as Rating, Gi as RatingDisplay, Ki as RatingDisplayItem, Ui as RatingItem, ri as SearchBox, ni as Select, jo as Skeleton, Mo as SkeletonGroup, ii as Slider, ai as SpinButton, Ao as Spinner, Rr as SplitButton, Ga as Stack, Co as Stepper, wo as StepperStep, wi as SwatchPicker, Ti as SwatchPickerRow, ti as Switch, wa as TabList, Ta as TabListPanel, Ea as TabListPanels, Da as TabListTab, _s as Table, vs as TableBody, ys as TableCell, bs as TableCellActions, xs as TableCellLayout, Ss as TableHead, Cs as TableHeadCell, ws as TableHeader, Ts as TableHeaderCell, gs as TableResizeHandle, Es as TableRow, Ds as TableSelectionCell, Ni as Tag, Pi as TagGroup, Hi as TagPicker, Ii as TagPickerButton, Li as TagPickerControl, Ri as TagPickerGroup, zi as TagPickerInput, Bi as TagPickerList, Fi as TagPickerOption, Vi as TagPickerOptionGroup, hs as TeachingPopover, as as TeachingPopoverBody, os as TeachingPopoverCarousel, ss as TeachingPopoverCarouselFooter, cs as TeachingPopoverCarouselNav, ls as TeachingPopoverCarouselPageCount, us as TeachingPopoverFooter, ds as TeachingPopoverHeader, fs as TeachingPopoverSurface, ps as TeachingPopoverTitle, ms as TeachingPopoverTrigger, ma as Text, Yr as Textarea, qi as TimePicker, zo as Toast, No as ToastBody, Po as ToastClose, Fo as ToastFooter, Io as ToastTitle, Lo as Toaster, Lr as ToggleButton, qr as Toolbar, Vr as ToolbarButton, Hr as ToolbarDivider, Ur as ToolbarGroup, Wr as ToolbarRadioButton, Gr as ToolbarRadioGroup, Kr as ToolbarToggleButton, Yo as Tooltip, Aa as Tree, Oa as TreeItem, ka as TreeItemPersonaLayout, hr as WaveProvider, a as accordionClassNames, o as accordionItemClassNames, s as accordionPanelClassNames, c as accordionTriggerClassNames, An as addDays, jn as addMonths, l as alphaSliderClassNames, ir as announce, u as avatarClassNames, d as avatarGroupClassNames, f as avatarGroupItemClassNames, p as avatarGroupPopoverClassNames, m as badgeClassNames, h as breadcrumbClassNames, g as breadcrumbItemClassNames, _ as buttonClassNames, v as calendarClassNames, y as cardBodyClassNames, b as cardClassNames, x as cardFooterClassNames, S as cardHeaderClassNames, C as cardPreviewClassNames, w as carouselButtonClassNames, T as carouselClassNames, E as carouselItemClassNames, Gn as chartPalette, D as checkboxClassNames, e as cn, ur as collectOptionLabels, O as colorAreaClassNames, k as colorPickerClassNames, A as colorPickerHexFieldClassNames, j as colorPickerPreviewClassNames, M as colorPickerSwatchesClassNames, N as colorSliderClassNames, P as colorSwatchClassNames, F as comboboxClassNames, r as composeEventHandlers, I as compoundButtonClassNames, L as counterBadgeClassNames, qn as createBrandTokens, Hn as createTableColumn, Un as createToaster, R as dataGridBodyClassNames, z as dataGridCellClassNames, B as dataGridClassNames, V as dataGridHeaderCellClassNames, H as dataGridHeaderClassNames, U as dataGridRowClassNames, W as dataGridSelectionCellClassNames, G as datePickerClassNames, K as dialogContentClassNames, q as dialogFooterClassNames, J as dialogTitleClassNames, Y as dividerClassNames, X as drawerBodyClassNames, Z as drawerClassNames, Q as drawerFooterClassNames, $ as drawerHeaderClassNames, ee as drawerHeaderNavigationClassNames, te as drawerHeaderTitleClassNames, ne as drawerTitleClassNames, re as dropdownClassNames, ie as emptySwatchClassNames, ae as fieldClassNames, oe as flatTreeClassNames, se as flatTreeItemClassNames, ce as flexClassNames, Ar as focusRing, jr as focusRingInset, Zn as getFirstTabbable, Ln as getInitials, Qn as getLastTabbable, $n as getTabbableElements, mr as getThemeClassName, Wn as getTokenStyle, Mn as getWeekNumber, le as gridClassNames, ue as hamburgerClassNames, vr as hasOpenModal, Fn as hexToHsv, In as hsvToHex, de as imageClassNames, fe as imageSwatchClassNames, pe as infoButtonClassNames, me as infoLabelClassNames, he as inputClassNames, Mr as inputFocus, Nr as inputFocusWithin, ge as interactionTagClassNames, _e as interactionTagPrimaryClassNames, ve as interactionTagSecondaryClassNames, Nn as isSameDay, Rn as isTruncatableBreadcrumbContent, ye as labelClassNames, be as linkClassNames, xe as listClassNames, Se as listItemClassNames, Ce as listboxClassNames, we as listboxSurfaceClassNames, dr as markListboxElement, Te as menuButtonClassNames, Ee as menuClassNames, De as menuDividerClassNames, Oe as menuGroupClassNames, ke as menuGroupHeaderClassNames, Ae as menuItemCheckboxClassNames, je as menuItemClassNames, Me as menuItemLinkClassNames, Ne as menuItemRadioClassNames, Pe as menuItemSwitchClassNames, Fe as menuPopoverClassNames, Ie as menuSplitGroupClassNames, i as mergeRefs, Le as messageBarActionsClassNames, Re as messageBarClassNames, ze as messageBarGroupClassNames, Be as messageBarTitleClassNames, yr as modalAllowProps, Ve as navAppItemClassNames, He as navAppItemStaticClassNames, Ue as navCategoryClassNames, We as navClassNames, Ge as navDividerClassNames, Ke as navDrawerBodyClassNames, qe as navDrawerClassNames, Je as navDrawerFooterClassNames, Ye as navDrawerHeaderClassNames, Xe as navItemClassNames, Ze as navSectionHeaderClassNames, Qe as navSubItemClassNames, $e as optionClassNames, et as optionGroupClassNames, tt as overflowClassNames, nt as overflowDividerClassNames, rt as overflowItemClassNames, it as paginationClassNames, Zi as partitionAvatarGroupItems, zn as partitionBreadcrumbItems, at as personaClassNames, ot as popoverContentClassNames, st as portalClassNames, ct as presenceBadgeClassNames, lt as progressBarClassNames, ut as radioGroupClassNames, dt as radioGroupItemClassNames, ft as ratingClassNames, pt as ratingDisplayClassNames, mt as ratingItemClassNames, t as renderSlot, n as resolveSlot, ht as searchBoxClassNames, gt as selectClassNames, _t as skeletonClassNames, vt as skeletonGroupClassNames, yt as sliderClassNames, bt as spinButtonClassNames, xt as spinnerClassNames, St as splitButtonClassNames, Ct as stackClassNames, Pn as startOfWeek, wt as stepperClassNames, Tt as stepperStepClassNames, Et as swatchPickerClassNames, Dt as swatchPickerRowClassNames, Ot as switchClassNames, kt as tabListClassNames, At as tabListPanelClassNames, jt as tabListPanelsClassNames, Mt as tabListTabClassNames, Nt as tableBodyClassNames, Pt as tableCellActionsClassNames, Ft as tableCellClassNames, It as tableCellLayoutClassNames, Lt as tableClassNames, Rt as tableHeaderCellClassNames, zt as tableHeaderClassNames, Bt as tableResizeHandleClassNames, Vt as tableRowClassNames, Ht as tableSelectionCellClassNames, Ut as tagClassNames, Wt as tagGroupClassNames, Gt as tagPickerButtonClassNames, Kt as tagPickerClassNames, qt as tagPickerControlClassNames, Jt as tagPickerGroupClassNames, Yt as tagPickerInputClassNames, Xt as tagPickerListClassNames, Zt as tagPickerOptionClassNames, Qt as teachingPopoverBodyClassNames, $t as teachingPopoverCarouselClassNames, en as teachingPopoverCarouselFooterClassNames, tn as teachingPopoverCarouselNavClassNames, nn as teachingPopoverCarouselPageCountClassNames, rn as teachingPopoverClassNames, an as teachingPopoverFooterClassNames, on as teachingPopoverHeaderClassNames, sn as teachingPopoverSurfaceClassNames, cn as teachingPopoverTitleClassNames, ln as textClassNames, un as textareaClassNames, dn as timePickerClassNames, fn as toastBodyClassNames, pn as toastClassNames, mn as toastFooterClassNames, hn as toastTitleClassNames, gn as toasterClassNames, _n as toggleButtonClassNames, vn as toolbarButtonClassNames, yn as toolbarClassNames, bn as toolbarDividerClassNames, xn as toolbarGroupClassNames, Sn as toolbarRadioButtonClassNames, Cn as toolbarRadioGroupClassNames, wn as toolbarToggleButtonClassNames, Tn as tooltipClassNames, En as treeClassNames, Dn as treeItemClassNames, On as treeItemPersonaLayoutClassNames, Bn as truncateBreadcrumbLongName, Vn as truncateBreadcrumbLongTooltip, lr as useActiveDescendant, ar as useAnnounce, Yn as useControllable, xr as useDismiss, Jn as useEventCallback, rr as useFieldControl, ja as useFlatTree, Sr as useFocusTrap, Dr as useFocusVisible, Or as useFocusableGroup, kr as useGridNavigation, Ba as useHasHiddenItems, Xn as useId, Cr as useInitialFocus, nr as useIsClient, Va as useIsOverflowGroupVisible, Ha as useIsOverflowItemVisible, Ua as useIsOverflowing, fr as useListbox, pr as useListboxOption, di as useListboxPopup, tr as useMergedRefs, Tr as useModalLayer, Er as useModalOpen, Wa as useOverflowMenu, _r as usePopupPosition, or as usePresence, wr as useRestoreFocus, er as useRovingTabIndex, sr as useSelection, Rs as useTableColumnSizing, Fs as useTableFeatures, Ls as useTableSelection, Is as useTableSort, Ro as useToastController, cr as useVirtualWindow, gr as useWaveTheme, kn as waveProviderClassNames, Kn as waveTokens };
@@ -0,0 +1,2 @@
1
+ const e=require("./dev.cjs");var t=[10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160],n=7,r=Object.freeze({10:`#061724`,20:`#082338`,30:`#0a2e4a`,40:`#0c3b5e`,50:`#0e4775`,60:`#0f548c`,70:`#115ea3`,80:`#0f6cbd`,90:`#2886de`,100:`#479ef5`,110:`#62abf5`,120:`#77b7f7`,130:`#96c6fa`,140:`#b4d6fa`,150:`#cfe4fa`,160:`#ebf3fc`}),i=.005,a=[10,20,30,40,50,60,70,80,140];function o(e){if(typeof e!=`string`)return;let t=/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(e);if(!t)return;let n=t[1].length===3?t[1].replace(/./g,`$&$&`):t[1];return[0,2,4].map(e=>parseInt(n.slice(e,e+2),16))}function s(e){let t=e/255;return t<=.04045?t/12.92:((t+.055)/1.055)**2.4}function c(e){let t=Math.min(1,Math.max(0,e));return 255*(t<=.0031308?t*12.92:1.055*t**(1/2.4)-.055)}function l([e,t,n]){return .2126*e+.7152*t+.0722*n}function u([e,t,n]){let r=Math.cbrt(.4122214708*e+.5363325363*t+.0514459929*n),i=Math.cbrt(.2119034982*e+.6806995451*t+.1073969566*n),a=Math.cbrt(.0883024619*e+.2817188376*t+.6299787005*n);return[.2104542553*r+.793617785*i-.0040720468*a,1.9779984951*r-2.428592205*i+.4505937099*a,.0259040371*r+.7827717662*i-.808675766*a]}function d(e,t,n){let r=t*Math.cos(n),i=t*Math.sin(n),a=(e+.3963377774*r+.2158037573*i)**3,o=(e-.1055613458*r-.0638541728*i)**3,s=(e-.0894841775*r-1.291485548*i)**3;return[4.0767416621*a-3.3077115913*o+.2309699292*s,-1.2684380046*a+2.6097574011*o-.3413193965*s,-.0041960863*a-.7034186147*o+1.707614701*s]}function f(e){let[,t,n]=u(e);return[Math.hypot(t,n),Math.atan2(n,t)]}function p(e){return e.every(e=>e>=-1e-9&&e<=1+1e-9)}function m(e,t,n){if(p(d(e,t,n)))return t;let r=0,i=t;for(let t=0;t<32;t++){let t=(r+i)/2;p(d(e,t,n))?r=t:i=t}return r}function h(e,t,n){let r=e=>d(e,m(e,t,n),n).map(e=>Math.min(1,Math.max(0,e))),i=0,a=1;for(let t=0;t<40;t++){let t=(i+a)/2;l(r(t))<e?i=t:a=t}return r((i+a)/2)}function g(e,t,n,r){let i=e.map(e=>Math.round(c(e))),a=[0,-1,1],o=i,u=1/0;for(let e of a)for(let c of n?[e]:a)for(let d of n?[e]:a){let n=i.map((t,n)=>Math.min(255,Math.max(0,t+[e,c,d][n]))),a=l(n.map(s)),f=Math.abs(a-t)+ +(r?a>t:a<t);f<u&&(o=n,u=f)}return`#${o.map(e=>e.toString(16).padStart(2,`0`)).join(``)}`}var _=`#ffffff`,v=`#000000`,y=`#ebebeb`,b=`#107c10`,x=`#383838`,S={light:[[`primary`,80,`subtle-selected`,y,4.5],[`primary`,80,`selected`,160,4.5],[`primary-hover`,70,`primary-foreground`,_,4.5],[`primary-pressed`,40,`primary-foreground`,_,4.5],[`selected`,160,`success`,b,4.5],[`selected-foreground`,60,`selected`,160,4.5],[`selected-foreground`,60,`selected-hover`,150,4.5],[`selected-foreground`,60,`selected-pressed`,140,4.5],[`selected-hover`,150,`selected`,160,1.15],[`selected-pressed`,140,`selected-hover`,150,1.15],[`ring`,80,`subtle-selected`,y,3]],dark:[[`primary`,110,`subtle-selected`,x,4.5],[`primary-hover`,120,`primary-foreground`,v,4.5],[`primary-pressed`,90,`primary-foreground`,v,4.5],[`selected`,20,`success`,`#5db55d`,4.5],[`selected-foreground`,110,`selected`,20,4.5],[`selected-foreground`,110,`selected-hover`,40,4.5],[`selected-foreground`,110,`selected-pressed`,10,4.5],[`selected-hover`,40,`selected`,20,1.15],[`selected-pressed`,10,`selected-hover`,40,1.15],[`ring`,100,`subtle-selected`,x,3],[`ring`,100,`selected`,20,3]]};function C(e){let t=o(e);return t&&l(t.map(s))}function w(t){for(let[n,r]of Object.entries(S))for(let[i,a,o,s,c]of r){let r=C(t[a]),l=C(typeof s==`number`?t[s]:s);if(r===void 0||l===void 0)continue;let u=(Math.max(r,l)+.05)/(Math.min(r,l)+.05);u>=c||e.warnOnce(`createBrandTokens:contrast:${n}:${i}:${o}`,`createBrandTokens: in the ${n} theme, \`${i}\` on \`${o}\` (stop ${a} on ${typeof s==`number`?`stop ${s}`:s}) is ${Math.floor(u*100)/100}:1; needs ${c}:1.`)}}var T;function E(){if(T)return T;let e=t.map(e=>o(r[e]).map(s)),[i,a]=f(e[n]);T={luminance:[],chroma:[],hue:[]};for(let t of e){let[e,n]=f(t);T.luminance.push(l(t)),T.chroma.push(e/i),T.hue.push(n-a)}return T}function D(e){let n={};return t.forEach((t,r)=>{n[`brand${t}`]=e(t,r)}),n}function O([e,t,n]){let[r,o]=f([s(e),s(t),s(n)]),c=E(),l=r<i;return D((e,t)=>{let n=c.luminance[t];return g(l?[n,n,n]:h(n,r*c.chroma[t],o+c.hue[t]),n,l,a.includes(e))})}function k(t){let n=[],i={},a=D(e=>{let a=t[e];return typeof a==`string`&&o(a)?i[e]=a:(n.push(e),i[e]=r[e])});if(n.length>0){let t=n.length>1;e.warnOnce(`createBrandTokens:ramp`,`createBrandTokens: the ramp has no #rgb or #rrggbb colour at the stop${t?`s`:``} ${n.join(`, `)}, so the default ramp's colour${t?`s are`:` is`} used there.`)}try{process.env.NODE_ENV!==`production`&&w(i)}catch{}return a}function A(t){if(typeof t==`object`&&t)return k(t);let n=o(t);if(n)return O(n);let i=typeof t==`string`?`"${t.length>32?`${t.slice(0,32)}…`:t}"`:t==null?String(t):`a ${typeof t}`;return e.warnOnce(`createBrandTokens:seed`,`createBrandTokens: the seed ${i} is not a #rgb or #rrggbb colour, so the default brand ramp is used.`),D(e=>r[e])}exports.BRAND_CONTRAST_PAIRS=S,exports.DEFAULT_BRAND_RAMP=r,exports.ROUNDS_DARKER=a,exports.checkBrandRamp=w,exports.createBrandTokens=A;
2
+ //# sourceMappingURL=brand.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brand.cjs","names":["require_dev","BRAND_STOPS","SEED_INDEX","DEFAULT_BRAND_RAMP","GREY_CHROMA","ROUNDS_DARKER","parseHex","value","match","digits","offset","toLinear","channel","toEncoded","linear","luminance","r","g","b","toOklab","l","m","s","fromOklch","a","chroma","hue","lightness","chromaAndHue","rgb","inGamut","fitChroma","low","high","step","middle","colourAtLuminance","colourAt","target","toHex","rounded","offsets","best","bestRank","red","green","grey","blue","candidate","index","rank","darker","WHITE","BLACK","LIGHT_SUBTLE_SELECTED","LIGHT_SUCCESS","DARK_SUBTLE_SELECTED","BRAND_CONTRAST_PAIRS","luminanceOf","checkBrandRamp","theme","pairs","token","stop","against","colour","minimum","own","ramp","other","ratio","defaultShape","getDefaultShape","colours","seedChroma","seedHue","toTokens","tokens","colourOf","rampFromSeed","shape","rampFromStops","invalid","used","several","createBrandTokens","seed","shown"],"sources":["../../src/lib/brand.ts"],"sourcesContent":["/**\n * Brand ramps: `createBrandTokens` builds the 16 brand tokens from a seed colour, or takes a full\n * ramp, which it checks against the pairs the themes read from it in development. Server-safe and\n * pure: no DOM and no React; its only run-time import is the development warnings. The colour\n * maths (sRGB, linear light, OKLab and OKLCH) is small and local to it.\n */\nimport { warnOnce } from './dev';\n\n/**\n * A stop of the brand ramp, from 10 (the darkest) to 160 (the lightest) in steps of 10: the stops\n * of Fluent's `BrandVariants` and of the `--wave-brand-N` tokens.\n */\nexport type BrandStop =\n 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160;\n\n/**\n * A full brand ramp: a hex colour (`#rgb` or `#rrggbb`) for each of the 16 stops, darkest first.\n * The shape of Fluent's `BrandVariants`, which `createLightTheme(brand)` and\n * `createDarkTheme(brand)` take. The themes read the light primary from stop 80 (hover 70, pressed\n * 40, focus ring 80), the light selection from stops 160, 150 and 140 with its text at 60, the\n * dark primary from stop 110 (hover 120, pressed 90, focus ring 100) and the dark selection from\n * stops 20, 40 and 10 with its text at 110. A ramp whose stops have the luminance of the default\n * ramp's keeps the contrast of the light and dark themes; the high-contrast theme reads no stop.\n */\nexport type BrandRamp = Readonly<Record<BrandStop, string>>;\n\n/**\n * The 16 brand tokens, `brand10` to `brand160`: the overrides of `--wave-brand-10` to\n * `--wave-brand-160`, in the shape `WaveProvider tokens` and `getTokenStyle` take. Where Fluent's\n * `createLightTheme(brand)` builds a whole theme from a `BrandVariants` ramp, Wave applies the\n * ramp as these tokens over its named themes; the high-contrast theme reads none of them.\n */\nexport type BrandTokens = { [K in `brand${BrandStop}`]: string };\n\nconst BRAND_STOPS: readonly BrandStop[] = [\n 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160,\n];\n\n/** The index of stop 80 in `BRAND_STOPS`: the stop a seed's chroma and hue describe. */\nconst SEED_INDEX = 7;\n\n/**\n * The default brand ramp: the fallbacks of the `--wave-brand-N` declarations of `tokens.css`\n * (Fluent's brand ramp), which a test keeps equal.\n */\nexport const DEFAULT_BRAND_RAMP: BrandRamp = /* @__PURE__ */ Object.freeze({\n 10: '#061724',\n 20: '#082338',\n 30: '#0a2e4a',\n 40: '#0c3b5e',\n 50: '#0e4775',\n 60: '#0f548c',\n 70: '#115ea3',\n 80: '#0f6cbd',\n 90: '#2886de',\n 100: '#479ef5',\n 110: '#62abf5',\n 120: '#77b7f7',\n 130: '#96c6fa',\n 140: '#b4d6fa',\n 150: '#cfe4fa',\n 160: '#ebf3fc',\n});\n\n/** Under this OKLCH chroma a seed has no visible hue, and its ramp is grey. */\nconst GREY_CHROMA = 0.005;\n\n/**\n * The stops a generated ramp rounds darker, because the themes pair them with lighter colours:\n * 10 to 80 are fills under light text, text and focus rings on light surfaces, and the dark\n * theme's selection fills under light text; 140, the light theme's pressed selection fill, must\n * stay a visible step below the hover fill at 150. The other stops round lighter: the dark\n * theme's fills under dark text, its text and focus ring on dark surfaces, and the light theme's\n * selection fills under dark text (30, 50 and 130 are read by no theme; their side is arbitrary).\n * Three stops have pairs on both sides and take the side of the thinner one: 40 rounds darker for\n * the dark selected text on it (4.81:1) against its steps above the dark selection fills at 20 and\n * 10 (1.38 and 1.56); 150 rounds lighter for its step above 140 (1.157) against its step below\n * 160 (1.163); 140 rounds darker for that step against the light selected text at 60 on it\n * (5.23:1). So the pairs whose two stops round the same way (150 and 160, 40 and 20, 10 and 40,\n * 60 and 140) can lose up to one rounding step of contrast, and each has more margin over its\n * floor (1.15 between the states of a fill, 4.5 for text) than that. A test derives the sides\n * from the pairs of tokens.css and keeps this list equal to them.\n */\nexport const ROUNDS_DARKER: readonly BrandStop[] = [10, 20, 30, 40, 50, 60, 70, 80, 140];\n\n// ---------------------------------------------------------------------------------------------\n// Colour maths\n// ---------------------------------------------------------------------------------------------\n\ntype Triple = [number, number, number];\n\n/** `#rgb` or `#rrggbb` (any case) as 8-bit channels; `undefined` for anything else. */\nfunction parseHex(value: unknown): Triple | undefined {\n if (typeof value !== 'string') return undefined;\n const match = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i.exec(value);\n if (!match) return undefined;\n const digits = match[1].length === 3 ? match[1].replace(/./g, '$&$&') : match[1];\n return [0, 2, 4].map((offset) => parseInt(digits.slice(offset, offset + 2), 16)) as Triple;\n}\n\n/** An 8-bit sRGB channel in linear light (0 to 1). */\nfunction toLinear(channel: number): number {\n const value = channel / 255;\n return value <= 0.04045 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4;\n}\n\n/** A linear channel as an unrounded 8-bit sRGB value. */\nfunction toEncoded(linear: number): number {\n const value = Math.min(1, Math.max(0, linear));\n return 255 * (value <= 0.0031308 ? value * 12.92 : 1.055 * value ** (1 / 2.4) - 0.055);\n}\n\n/** The WCAG relative luminance of a linear colour. */\nfunction luminance([r, g, b]: Triple): number {\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n/** A linear sRGB colour in OKLab (lightness, a, b). */\nfunction toOklab([r, g, b]: Triple): Triple {\n const l = Math.cbrt(0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b);\n const m = Math.cbrt(0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b);\n const s = Math.cbrt(0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b);\n return [\n 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,\n 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,\n 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s,\n ];\n}\n\n/** An OKLCH colour (hue in radians) in linear sRGB, which may lie outside the gamut. */\nfunction fromOklch(lightness: number, chroma: number, hue: number): Triple {\n const a = chroma * Math.cos(hue);\n const b = chroma * Math.sin(hue);\n const l = (lightness + 0.3963377774 * a + 0.2158037573 * b) ** 3;\n const m = (lightness - 0.1055613458 * a - 0.0638541728 * b) ** 3;\n const s = (lightness - 0.0894841775 * a - 1.291485548 * b) ** 3;\n return [\n 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s,\n -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s,\n -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s,\n ];\n}\n\n/** A linear sRGB colour as OKLCH chroma and hue (radians). */\nfunction chromaAndHue(rgb: Triple): [chroma: number, hue: number] {\n const [, a, b] = toOklab(rgb);\n return [Math.hypot(a, b), Math.atan2(b, a)];\n}\n\nfunction inGamut(rgb: Triple): boolean {\n return rgb.every((channel) => channel >= -1e-9 && channel <= 1 + 1e-9);\n}\n\n/** `chroma` at this lightness and hue, reduced by bisection until the colour fits sRGB. */\nfunction fitChroma(lightness: number, chroma: number, hue: number): number {\n if (inGamut(fromOklch(lightness, chroma, hue))) return chroma;\n let low = 0;\n let high = chroma;\n for (let step = 0; step < 32; step++) {\n const middle = (low + high) / 2;\n if (inGamut(fromOklch(lightness, middle, hue))) low = middle;\n else high = middle;\n }\n return low;\n}\n\n/** The colour of this hue and (at most) this chroma whose luminance is `target`, by bisection. */\nfunction colourAtLuminance(target: number, chroma: number, hue: number): Triple {\n const colourAt = (lightness: number): Triple =>\n fromOklch(lightness, fitChroma(lightness, chroma, hue), hue).map((channel) =>\n Math.min(1, Math.max(0, channel)),\n ) as Triple;\n let low = 0;\n let high = 1;\n for (let step = 0; step < 40; step++) {\n const middle = (low + high) / 2;\n if (luminance(colourAt(middle)) < target) low = middle;\n else high = middle;\n }\n return colourAt((low + high) / 2);\n}\n\n/**\n * A linear colour as `#rrggbb`, rounded on the safe side: of the 8-bit colours at most one step\n * from it on each channel, the one nearest `target` in luminance that is no lighter (`darker`) or\n * no darker than it. So rounding never takes contrast from a stop against a colour that does not\n * round the same way (a colour of the theme, or a stop that rounds the other way); two stops that\n * round the same way lose at most one rounding step between them. A grey stays a grey.\n */\nfunction toHex(rgb: Triple, target: number, grey: boolean, darker: boolean): string {\n const rounded = rgb.map((channel) => Math.round(toEncoded(channel)));\n const offsets = [0, -1, 1];\n let best = rounded;\n let bestRank = Infinity;\n for (const red of offsets) {\n for (const green of grey ? [red] : offsets) {\n for (const blue of grey ? [red] : offsets) {\n const candidate = rounded.map((channel, index) =>\n Math.min(255, Math.max(0, channel + [red, green, blue][index])),\n );\n const value = luminance(candidate.map(toLinear) as Triple);\n // A colour past the target on the unsafe side ranks after every other (one step below\n // the rounded colour is always on the dark side, one above on the light side).\n const rank =\n Math.abs(value - target) + ((darker ? value > target : value < target) ? 1 : 0);\n if (rank < bestRank) {\n best = candidate;\n bestRank = rank;\n }\n }\n }\n }\n return `#${best.map((channel) => channel.toString(16).padStart(2, '0')).join('')}`;\n}\n\n// ---------------------------------------------------------------------------------------------\n// Checking a full ramp\n// ---------------------------------------------------------------------------------------------\n\n// Colours of the light and dark themes that a checked pair reads a stop against: the values of\n// their tokens in tokens.css, which a test keeps equal.\nconst WHITE = '#ffffff';\nconst BLACK = '#000000';\nconst LIGHT_SUBTLE_SELECTED = '#ebebeb';\nconst LIGHT_SUCCESS = '#107c10';\nconst DARK_SUBTLE_SELECTED = '#383838';\nconst DARK_SUCCESS = '#5db55d';\n\n/**\n * A pair the check measures: the token that reads a stop, the stop, the token it is read against,\n * that token's colour (a colour of the theme, or the stop it reads) and the least contrast the\n * pair needs (4.5 for text, 3 for a focus ring, 1.15 between the states of a fill).\n */\ntype BrandContrastPair = readonly [\n token: string,\n stop: BrandStop,\n against: string,\n colour: string | BrandStop,\n minimum: number,\n];\n\n/**\n * Where the light and dark themes read the ramp: every `var(--wave-brand-N)` of their groups in\n * tokens.css, as the pairs the check of a full ramp measures. Of the pairs of the contrast matrix\n * that read a stop, it keeps the one theme colour that bounds each token's stop (the closest in\n * luminance at its minimum: the darkest light surface under the light primary text, the lightest\n * dark surface under the dark primary text, the lightest text on the light selection fill, the\n * darkest text on the dark one, the on-brand text of the fill states), and every pair of two stops\n * those bounds do not already decide. Tests keep it in step with tokens.css and prove that a ramp\n * that passes these pairs passes every pair of the matrix that reads a stop. High contrast reads\n * no stop.\n */\nexport const BRAND_CONTRAST_PAIRS: Readonly<\n Record<'light' | 'dark', readonly BrandContrastPair[]>\n> = {\n light: [\n ['primary', 80, 'subtle-selected', LIGHT_SUBTLE_SELECTED, 4.5],\n ['primary', 80, 'selected', 160, 4.5],\n ['primary-hover', 70, 'primary-foreground', WHITE, 4.5],\n ['primary-pressed', 40, 'primary-foreground', WHITE, 4.5],\n ['selected', 160, 'success', LIGHT_SUCCESS, 4.5],\n ['selected-foreground', 60, 'selected', 160, 4.5],\n ['selected-foreground', 60, 'selected-hover', 150, 4.5],\n ['selected-foreground', 60, 'selected-pressed', 140, 4.5],\n ['selected-hover', 150, 'selected', 160, 1.15],\n ['selected-pressed', 140, 'selected-hover', 150, 1.15],\n ['ring', 80, 'subtle-selected', LIGHT_SUBTLE_SELECTED, 3],\n ],\n dark: [\n ['primary', 110, 'subtle-selected', DARK_SUBTLE_SELECTED, 4.5],\n ['primary-hover', 120, 'primary-foreground', BLACK, 4.5],\n ['primary-pressed', 90, 'primary-foreground', BLACK, 4.5],\n ['selected', 20, 'success', DARK_SUCCESS, 4.5],\n ['selected-foreground', 110, 'selected', 20, 4.5],\n ['selected-foreground', 110, 'selected-hover', 40, 4.5],\n ['selected-foreground', 110, 'selected-pressed', 10, 4.5],\n ['selected-hover', 40, 'selected', 20, 1.15],\n ['selected-pressed', 10, 'selected-hover', 40, 1.15],\n ['ring', 100, 'subtle-selected', DARK_SUBTLE_SELECTED, 3],\n ['ring', 100, 'selected', 20, 3],\n ],\n};\n\n/** The WCAG relative luminance of a `#rgb` or `#rrggbb` colour; `undefined` for anything else. */\nfunction luminanceOf(value: unknown): number | undefined {\n const rgb = parseHex(value);\n return rgb && luminance(rgb.map(toLinear) as Triple);\n}\n\n/**\n * The development check of a full ramp (R8): warns once per pair of `BRAND_CONTRAST_PAIRS` whose\n * contrast is below its minimum, naming the theme, the tokens, the stops and the ratio (rounded\n * down, so a failing ratio never reads as its minimum). Advisory: it never throws, never changes\n * the ramp, and skips a stop that is not a hex colour.\n */\nexport function checkBrandRamp(ramp: BrandRamp): void {\n for (const [theme, pairs] of Object.entries(BRAND_CONTRAST_PAIRS)) {\n for (const [token, stop, against, colour, minimum] of pairs) {\n const own = luminanceOf(ramp[stop]);\n const other = luminanceOf(typeof colour === 'number' ? ramp[colour] : colour);\n if (own === undefined || other === undefined) continue;\n const ratio = (Math.max(own, other) + 0.05) / (Math.min(own, other) + 0.05);\n if (ratio >= minimum) continue;\n warnOnce(\n `createBrandTokens:contrast:${theme}:${token}:${against}`,\n `createBrandTokens: in the ${theme} theme, \\`${token}\\` on \\`${against}\\` (stop ${stop} on ` +\n `${typeof colour === 'number' ? `stop ${colour}` : colour}) is ` +\n `${Math.floor(ratio * 100) / 100}:1; needs ${minimum}:1.`,\n );\n }\n }\n}\n\n// ---------------------------------------------------------------------------------------------\n// Ramps\n// ---------------------------------------------------------------------------------------------\n\n/**\n * The shape of the default ramp, per stop: its luminance, its chroma as a share of stop 80's, and\n * its hue's offset from stop 80's (radians). Computed on first use.\n */\nlet defaultShape: { luminance: number[]; chroma: number[]; hue: number[] } | undefined;\n\nfunction getDefaultShape(): NonNullable<typeof defaultShape> {\n if (defaultShape) return defaultShape;\n const colours = BRAND_STOPS.map(\n (stop) => (parseHex(DEFAULT_BRAND_RAMP[stop]) as Triple).map(toLinear) as Triple,\n );\n const [seedChroma, seedHue] = chromaAndHue(colours[SEED_INDEX]);\n defaultShape = { luminance: [], chroma: [], hue: [] };\n for (const colour of colours) {\n const [chroma, hue] = chromaAndHue(colour);\n defaultShape.luminance.push(luminance(colour));\n defaultShape.chroma.push(chroma / seedChroma);\n defaultShape.hue.push(hue - seedHue);\n }\n return defaultShape;\n}\n\nfunction toTokens(colourOf: (stop: BrandStop, index: number) => string): BrandTokens {\n const tokens: Partial<BrandTokens> = {};\n BRAND_STOPS.forEach((stop, index) => {\n tokens[`brand${stop}`] = colourOf(stop, index);\n });\n return tokens as BrandTokens;\n}\n\nfunction rampFromSeed([red, green, blue]: Triple): BrandTokens {\n const [chroma, hue] = chromaAndHue([toLinear(red), toLinear(green), toLinear(blue)]);\n const shape = getDefaultShape();\n const grey = chroma < GREY_CHROMA;\n return toTokens((stop, index) => {\n const target = shape.luminance[index];\n const colour: Triple = grey\n ? [target, target, target]\n : colourAtLuminance(target, chroma * shape.chroma[index], hue + shape.hue[index]);\n return toHex(colour, target, grey, ROUNDS_DARKER.includes(stop));\n });\n}\n\nfunction rampFromStops(ramp: BrandRamp): BrandTokens {\n const invalid: BrandStop[] = [];\n // The colours the tokens take, checked below: the ramp's, or the default's where it has none.\n const used = {} as Record<BrandStop, string>;\n const tokens = toTokens((stop) => {\n const value: unknown = ramp[stop];\n if (typeof value === 'string' && parseHex(value)) return (used[stop] = value);\n invalid.push(stop);\n return (used[stop] = DEFAULT_BRAND_RAMP[stop]);\n });\n if (invalid.length > 0) {\n const several = invalid.length > 1;\n warnOnce(\n 'createBrandTokens:ramp',\n `createBrandTokens: the ramp has no #rgb or #rrggbb colour at the stop${several ? 's' : ''} ` +\n `${invalid.join(', ')}, so the default ramp's colour${several ? 's are' : ' is'} used there.`,\n );\n }\n // The mode is read here as `lib/dev` reads it, written out so a bundler replaces it: a\n // production bundle then drops the check and its table. Without a bundler and without\n // `process` (an unbundled import in a browser), the read throws and the check is skipped.\n try {\n if (process.env.NODE_ENV !== 'production') checkBrandRamp(used);\n } catch {\n // No `process`: see above.\n }\n return tokens;\n}\n\n/**\n * The brand tokens of a brand colour or of a full ramp, to pass as `WaveProvider tokens` (alone or\n * spread with other overrides) or to `getTokenStyle`. Wave's counterpart of Fluent's\n * `createLightTheme(brand)` and `createDarkTheme(brand)`, which take a full `BrandVariants` ramp;\n * Wave also builds the ramp from one colour. The high-contrast theme ignores the brand: its colours\n * are fixed.\n *\n * From a seed (`#rgb` or `#rrggbb`, any case, with the `#`), each stop keeps the **luminance of the\n * default ramp's stop** and takes its hue and colourfulness from the seed: the seed's OKLCH chroma\n * and hue, shaped per stop like the default ramp (less colourful toward both ends, the hue\n * drifting a few degrees as the default's does), reduced where the colour would leave sRGB, and\n * rounded to a neighbouring 8-bit colour on the side that keeps its contrast. Contrast depends\n * only on luminance, so every text, fill, stroke and focus-ring pair of the light and dark themes\n * keeps, to within 8-bit rounding, the contrast it has with the default ramp, and stays above the\n * floor the themes are held to (4.5:1 for text, 3:1 for strokes, graphics and focus rings, 1.15:1\n * between the states of a fill), whatever the seed. The cost: the seed sets hue and\n * colourfulness, not lightness, so the primary fill (stop 80) is the seed's hue at the default's\n * lightness, and a light seed gives a darker button than itself. For a brand whose exact colours\n * matter, pass a full `BrandRamp`. The default seed `#0f6cbd` gives the default ramp, and a grey\n * seed (black, white or any grey) a grey ramp.\n *\n * A full `BrandRamp` is returned as tokens with its colours unchanged; a stop that is missing or\n * not a hex colour takes the default ramp's colour, with a development warning. In development the\n * ramp is also checked against the pairs the light and dark themes read from it (the primary\n * colour as text and as a fill under its text, the hover and pressed fills, the selection fills\n * and their text, the focus ring): each pair below its minimum (4.5:1 for text, 3:1 for the focus\n * ring, 1.15:1 between the states of a fill) logs one warning naming the theme, the tokens, the\n * stops and the ratio. The check is advisory: the ramp applies as given. Any other seed returns\n * the default ramp, with a development warning.\n *\n * Pure and server-safe; it returns a new object on each call, so compute it once (at module scope,\n * or memoised) rather than on every render.\n *\n * @example\n * const brand = createBrandTokens('#c43e00');\n * <WaveProvider tokens={brand}>…</WaveProvider>\n *\n * @example\n * <WaveProvider tokens={{ ...createBrandTokens('#c43e00'), fontFamily: 'Inter, sans-serif' }}>\n */\nexport function createBrandTokens(seed: string | BrandRamp): BrandTokens {\n if (typeof seed === 'object' && seed !== null) return rampFromStops(seed);\n const rgb = parseHex(seed);\n if (rgb) return rampFromSeed(rgb);\n // A long string is cut, so the console never holds a whole document passed by mistake.\n const shown =\n typeof seed === 'string'\n ? `\"${seed.length > 32 ? `${seed.slice(0, 32)}…` : seed}\"`\n : seed === null || seed === undefined\n ? String(seed)\n : `a ${typeof seed}`;\n warnOnce(\n 'createBrandTokens:seed',\n `createBrandTokens: the seed ${shown} is not a #rgb or #rrggbb colour, so the default brand ` +\n 'ramp is used.',\n );\n return toTokens((stop) => DEFAULT_BRAND_RAMP[stop]);\n}\n"],"mappings":"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"}