@fiestaboard/ui 5.3.0 → 5.4.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 (69) hide show
  1. package/README.md +18 -0
  2. package/dist/components/board/board-teaser.d.ts +9 -1
  3. package/dist/components/board/board-teaser.js +56 -52
  4. package/dist/components/board/board-teaser.js.map +1 -1
  5. package/dist/components/chrome/nav-list.d.ts +53 -0
  6. package/dist/components/chrome/nav-list.js +84 -0
  7. package/dist/components/chrome/nav-list.js.map +1 -0
  8. package/dist/components/containment/icon-tile.d.ts +67 -0
  9. package/dist/components/containment/icon-tile.js +44 -0
  10. package/dist/components/containment/icon-tile.js.map +1 -0
  11. package/dist/components/containment/json-tree.js +1 -1
  12. package/dist/components/containment/json-tree.js.map +1 -1
  13. package/dist/components/containment/scroll-area.d.ts +17 -0
  14. package/dist/components/containment/scroll-area.js +2 -2
  15. package/dist/components/containment/scroll-area.js.map +1 -1
  16. package/dist/components/containment/tabs.js +2 -2
  17. package/dist/components/containment/tabs.js.map +1 -1
  18. package/dist/components/editor/formula/formula-editor-panel.js +2 -2
  19. package/dist/components/editor/formula/formula-editor-panel.js.map +1 -1
  20. package/dist/components/editor/template-editor-toolbar.d.ts +27 -3
  21. package/dist/components/editor/template-editor-toolbar.js +99 -96
  22. package/dist/components/editor/template-editor-toolbar.js.map +1 -1
  23. package/dist/components/forms/button.d.ts +1 -1
  24. package/dist/components/forms/button.js +2 -0
  25. package/dist/components/forms/button.js.map +1 -1
  26. package/dist/components/forms/selection-group.d.ts +82 -0
  27. package/dist/components/forms/selection-group.js +51 -0
  28. package/dist/components/forms/selection-group.js.map +1 -0
  29. package/dist/components/forms/swatch.d.ts +81 -0
  30. package/dist/components/forms/swatch.js +91 -0
  31. package/dist/components/forms/swatch.js.map +1 -0
  32. package/dist/components/forms/timezone-picker.d.ts +163 -0
  33. package/dist/components/forms/timezone-picker.js +158 -0
  34. package/dist/components/forms/timezone-picker.js.map +1 -0
  35. package/dist/components/forms/toggle-card.d.ts +45 -35
  36. package/dist/components/forms/toggle-card.js +187 -122
  37. package/dist/components/forms/toggle-card.js.map +1 -1
  38. package/dist/components/forms/toggle.d.ts +1 -1
  39. package/dist/components/layout/flex.d.ts +1 -1
  40. package/dist/components/layout/grid.d.ts +1 -1
  41. package/dist/components/layout/stack.d.ts +1 -1
  42. package/dist/components/overlays/lightbox.js +1 -1
  43. package/dist/components/overlays/lightbox.js.map +1 -1
  44. package/dist/components/overlays/overlay-close.js +1 -1
  45. package/dist/components/overlays/overlay-close.js.map +1 -1
  46. package/dist/components/plugin/board-showcase.d.ts +8 -1
  47. package/dist/components/plugin/board-showcase.js +18 -17
  48. package/dist/components/plugin/board-showcase.js.map +1 -1
  49. package/dist/components/plugin/plugin-card.d.ts +8 -1
  50. package/dist/components/plugin/plugin-card.js +8 -7
  51. package/dist/components/plugin/plugin-card.js.map +1 -1
  52. package/dist/components/plugin/scaled-board-teaser.d.ts +4 -1
  53. package/dist/components/plugin/scaled-board-teaser.js +12 -11
  54. package/dist/components/plugin/scaled-board-teaser.js.map +1 -1
  55. package/dist/components/typography/heading.d.ts +1 -1
  56. package/dist/components/typography/text-link.d.ts +27 -3
  57. package/dist/components/typography/text-link.js +1 -1
  58. package/dist/components/typography/text-link.js.map +1 -1
  59. package/dist/components/typography/text.d.ts +1 -1
  60. package/dist/components/wizard/wizard-shell.d.ts +6 -1
  61. package/dist/components/wizard/wizard-shell.js +38 -35
  62. package/dist/components/wizard/wizard-shell.js.map +1 -1
  63. package/dist/index.d.ts +4 -0
  64. package/dist/index.js +104 -100
  65. package/dist/lib/board-characters.d.ts +13 -0
  66. package/dist/lib/board-characters.js +1 -1
  67. package/dist/lib/board-characters.js.map +1 -1
  68. package/dist/theme.css +85 -4
  69. package/package.json +9 -2
package/dist/index.js CHANGED
@@ -2,103 +2,107 @@ import { cn as e } from "./lib/utils.js";
2
2
  import { Accordion as t, AccordionContent as n, AccordionItem as r, AccordionTrigger as i } from "./components/containment/accordion.js";
3
3
  import { Card as a, CardAction as o, CardContent as s, CardDescription as c, CardFooter as l, CardHeader as u, CardTitle as d } from "./components/containment/card.js";
4
4
  import { Collapsible as f, CollapsibleContent as p, CollapsibleTrigger as m } from "./components/containment/collapsible.js";
5
- import { JsonTree as h } from "./components/containment/json-tree.js";
6
- import { MediaFrame as g, MediaFrameBar as _, MediaFrameMedia as v } from "./components/containment/media-frame.js";
7
- import { Alert as y, AlertDescription as b, AlertTitle as x, alertVariants as S } from "./components/feedback/alert.js";
8
- import { Badge as C, badgeVariants as w } from "./components/feedback/badge.js";
9
- import { Chip as T, chipVariants as E } from "./components/feedback/chip.js";
10
- import { EmptyState as D } from "./components/feedback/empty-state.js";
11
- import { Spinner as O, spinnerVariants as k } from "./components/feedback/spinner.js";
12
- import { Button as A, buttonVariants as j } from "./components/forms/button.js";
13
- import { Checkbox as M } from "./components/forms/checkbox.js";
14
- import { Input as N } from "./components/forms/input.js";
15
- import { Label as P } from "./components/forms/label.js";
16
- import { SecretInput as F } from "./components/forms/secret-input.js";
17
- import { Box as I } from "./components/layout/box.js";
18
- import { Flex as L, flexVariants as R } from "./components/layout/flex.js";
19
- import { Grid as z, gridVariants as B } from "./components/layout/grid.js";
20
- import { AlertDialog as V, AlertDialogAction as H, AlertDialogCancel as U, AlertDialogContent as W, AlertDialogDescription as G, AlertDialogFooter as K, AlertDialogHeader as q, AlertDialogOverlay as J, AlertDialogPortal as Y, AlertDialogTitle as X, AlertDialogTrigger as Z } from "./components/overlays/alert-dialog.js";
21
- import { Dialog as Q, DialogClose as $, DialogContent as ee, DialogDescription as te, DialogFooter as ne, DialogHeader as re, DialogOverlay as ie, DialogPortal as ae, DialogTitle as oe, DialogTrigger as se } from "./components/overlays/dialog.js";
22
- import { DropdownMenu as ce, DropdownMenuCheckboxItem as le, DropdownMenuContent as ue, DropdownMenuGroup as de, DropdownMenuItem as fe, DropdownMenuLabel as pe, DropdownMenuPortal as me, DropdownMenuRadioGroup as he, DropdownMenuRadioItem as ge, DropdownMenuSeparator as _e, DropdownMenuShortcut as ve, DropdownMenuSub as ye, DropdownMenuSubContent as be, DropdownMenuSubTrigger as xe, DropdownMenuTrigger as Se } from "./components/overlays/dropdown-menu.js";
23
- import { Lightbox as Ce, LightboxClose as we, LightboxContent as Te, LightboxFooter as Ee, LightboxOverlay as De, LightboxPortal as Oe, LightboxTrigger as ke } from "./components/overlays/lightbox.js";
24
- import { Popover as Ae, PopoverClose as je, PopoverContent as Me, PopoverDescription as Ne, PopoverTitle as Pe, PopoverTrigger as Fe, usePopoverClose as Ie } from "./components/overlays/popover.js";
25
- import { Code as Le } from "./components/typography/code.js";
26
- import { Heading as Re, headingVariants as ze } from "./components/typography/heading.js";
27
- import { List as Be, ListItem as Ve, listVariants as He } from "./components/typography/list.js";
28
- import { ScrollArea as Ue, ScrollBar as We } from "./components/containment/scroll-area.js";
29
- import { Table as Ge, TableBody as Ke, TableCell as qe, TableHead as Je, TableHeader as Ye, TableRow as Xe } from "./components/containment/table.js";
30
- import { Tabs as Ze, TabsContent as Qe, TabsList as $e, TabsTrigger as et } from "./components/containment/tabs.js";
31
- import tt from "./components/effects/react-bits/fade-content.js";
32
- import { Skeleton as nt } from "./components/feedback/skeleton.js";
33
- import { StatusDot as rt, statusDotVariants as it } from "./components/feedback/status-dot.js";
34
- import { Select as at, SelectContent as ot, SelectGroup as st, SelectItem as ct, SelectLabel as lt, SelectScrollDownButton as ut, SelectScrollUpButton as dt, SelectSeparator as ft, SelectTrigger as pt, SelectValue as mt } from "./components/forms/select.js";
35
- import { Slider as ht } from "./components/forms/slider.js";
36
- import { Switch as gt } from "./components/forms/switch.js";
37
- import { Textarea as _t } from "./components/forms/textarea.js";
38
- import { Text as vt, textVariants as yt } from "./components/typography/text.js";
39
- import { TimePicker as bt } from "./components/forms/time-picker.js";
40
- import { Toggle as xt, ToggleGroup as St, toggleGroupVariants as Ct, toggleVariants as wt } from "./components/forms/toggle.js";
41
- import { SegmentedControl as Tt, SegmentedControlItem as Et, ToggleCard as Dt, ToggleCardGroup as Ot, segmentedControlItemVariants as kt, segmentedControlVariants as At, toggleCardGroupVariants as jt, toggleCardVariants as Mt } from "./components/forms/toggle-card.js";
42
- import { Stack as Nt, stackVariants as Pt } from "./components/layout/stack.js";
43
- import { Sheet as Ft, SheetClose as It, SheetContent as Lt, SheetDescription as Rt, SheetFooter as zt, SheetHeader as Bt, SheetOverlay as Vt, SheetPortal as Ht, SheetTitle as Ut, SheetTrigger as Wt } from "./components/overlays/sheet.js";
44
- import { Tooltip as Gt, TooltipContent as Kt, TooltipProvider as qt, TooltipTrigger as Jt } from "./components/overlays/tooltip.js";
45
- import { TextLink as Yt } from "./components/typography/text-link.js";
46
- import { BoardIcon as Xt } from "./components/chrome/board-icon.js";
47
- import { BoardSelector as Zt } from "./components/chrome/board-selector.js";
48
- import { Breadcrumb as Qt, BreadcrumbEllipsis as $t, BreadcrumbItem as en, BreadcrumbLink as tn, BreadcrumbList as nn, BreadcrumbPage as rn, BreadcrumbSeparator as an } from "./components/chrome/breadcrumb.js";
49
- import { FIESTA_ICON_DATA_URI as on, FIESTA_ICON_PALETTE as sn, FIESTA_ICON_SVG as cn, FiestaIcon as ln } from "./components/chrome/fiesta-icon.js";
50
- import { FiestaLogo as un } from "./components/chrome/fiesta-logo.js";
51
- import { LanguageSelector as dn } from "./components/chrome/language-selector.js";
52
- import { MainContent as fn } from "./components/chrome/main-content.js";
53
- import { PAGE_HUES as pn, PageHeader as mn, PageIconGradientDefs as hn, pageHue as gn } from "./components/chrome/page-header.js";
54
- import { PageLayout as _n } from "./components/chrome/page-layout.js";
55
- import { PageToolbar as vn } from "./components/chrome/page-toolbar.js";
56
- import { Sidebar as yn } from "./components/chrome/sidebar.js";
57
- import { SkipToContent as bn } from "./components/chrome/skip-to-content.js";
58
- import { ThemeToggle as xn } from "./components/chrome/theme-toggle.js";
59
- import { WizardProgress as Sn } from "./components/wizard/wizard-progress.js";
60
- import { ALL_COLOR_CODES as Cn, AVAILABLE_COLORS as wn, BOARD_COLORS as Tn, COLOR_CODE_MAP as En, COLOR_DISPLAY as Dn, FIESTABOARD_COLORS as On, getBoardColor as kn, isValidBoardColor as An, resolveColorCode as jn } from "./lib/board-colors.js";
61
- import { BOARD_CHARS as Mn, EXTRA_CHARS as Nn, getCharFromToken as Pn, getCharIndex as Fn, isColorTile as In, messageToGrid as Ln, messageToText as Rn, parseLine as zn, resolveCode62Glyph as Bn, tokensEqual as Vn } from "./lib/board-characters.js";
62
- import { BoardTeaser as Hn } from "./components/board/board-teaser.js";
63
- import { BoardBackdrop as Un } from "./components/board/board-backdrop.js";
64
- import { WizardShell as Wn } from "./components/wizard/wizard-shell.js";
65
- import { DEVICE_DIMENSIONS as Gn, MAX_NOTES_PER_AXIS as Kn, NOTE_COLS as qn, NOTE_ROWS as Jn, isNoteArray as Yn, noteArrayDimensions as Xn, resolveDimensions as Zn } from "./lib/board-dimensions.js";
66
- import { BoardDisplay as Qn, FLAP_SPEED_PRESETS as $n, deriveFlapTiming as er, resolveFlapSpeed as tr } from "./components/board/board-display.js";
67
- import { ScaledBoardDisplay as nr } from "./components/board/scaled-board-display.js";
68
- import { StaticBoardDisplay as rr } from "./components/board/static-board-display.js";
69
- import { DEFAULT_SHAPE_LABELS as ir, previewLabel as ar, previewLabels as or, previewMessage as sr } from "./lib/board-previews.js";
70
- import { BarList as cr } from "./components/data/bar-list.js";
71
- import { StatStrip as lr, StatStripItem as ur } from "./components/data/stat-strip.js";
72
- import { BoardShowcase as dr, DEFAULT_SHOWCASE_LABELS as fr } from "./components/plugin/board-showcase.js";
73
- import { PLUGIN_CATEGORIES as pr, PluginCategoryBadge as mr } from "./components/plugin/plugin-category-badge.js";
74
- import { ScaledBoardTeaser as hr } from "./components/plugin/scaled-board-teaser.js";
75
- import { PluginCard as gr } from "./components/plugin/plugin-card.js";
76
- import { BOARD_CODE_TO_COLOR as _r, BOARD_COLOR_CODES as vr, CURSOR_ANCHOR as yr, DEFAULT_BOARD_LINES as br, DEFAULT_BOARD_WIDTH as xr, FILL_SPACE_REPEAT_VAR as Sr, FILL_SPACE_VAR as Cr } from "./components/editor/constants.js";
77
- import { NodeViewInjectionProvider as wr, useNodeViewInjection as Tr } from "./components/editor/node-views/node-view-context.js";
78
- import { ColorTileNodeView as Er, DEFAULT_COLOR_TILE_NODE_VIEW_LABELS as Dr } from "./components/editor/node-views/color-tile-node-view.js";
79
- import { ColorTileNode as Or } from "./components/editor/extensions/color-tile-node.js";
80
- import { DEFAULT_FILL_SPACE_NODE_VIEW_LABELS as kr, FillSpaceNodeView as Ar } from "./components/editor/node-views/fill-space-node-view.js";
81
- import { FillSpaceNode as jr } from "./components/editor/extensions/fill-space-node.js";
82
- import { DEFAULT_FORMULA_NODE_VIEW_LABELS as Mr, FormulaNodeView as Nr } from "./components/editor/node-views/formula-node-view.js";
83
- import { FormulaNode as Pr } from "./components/editor/extensions/formula-node.js";
84
- import { LineNavigation as Fr } from "./components/editor/extensions/line-navigation.js";
85
- import { SingleParagraphDoc as Ir } from "./components/editor/extensions/single-paragraph-doc.js";
86
- import { TrailingNewline as Lr } from "./components/editor/extensions/trailing-newline.js";
87
- import { DEFAULT_VARIABLE_NODE_VIEW_LABELS as Rr, VariableNodeView as zr } from "./components/editor/node-views/variable-node-view.js";
88
- import { VariableNode as Br } from "./components/editor/extensions/variable-node.js";
89
- import { DEFAULT_WRAPPED_TEXT_VIEW_LABELS as Vr, WrappedTextView as Hr } from "./components/editor/node-views/wrapped-text-view.js";
90
- import { WrappedTextNode as Ur } from "./components/editor/extensions/wrapped-text-node.js";
91
- import { ColorPickerContent as Wr, DEFAULT_COLOR_PICKER_LABELS as Gr } from "./components/editor/color-picker-content.js";
92
- import { DRAW_CHARS as Kr, brushToCell as qr, cellsToLine as Jr, isPositionalLine as Yr, lineToCells as Xr, paintLine as Zr, renderPositionalLine as Qr } from "./components/editor/utils/draw-mode.js";
93
- import { DEFAULT_DRAW_CHAR_PICKER_LABELS as $r, DrawCharPickerContent as ei } from "./components/editor/draw-char-picker-content.js";
94
- import { DEFAULT_FORMATTING_PICKER_LABELS as ti, FormattingPickerContent as ni } from "./components/editor/formatting-picker-content.js";
95
- import { DEFAULT_TOOLBAR_DROPDOWN_LABELS as ri, ToolbarDropdown as ii } from "./components/editor/toolbar-dropdown.js";
96
- import { parseLineContent as ai, parseTemplateSimple as oi, serializeTemplateSimple as si } from "./components/editor/utils/serialization.js";
97
- import { insertTemplateContent as ci } from "./components/editor/utils/insertion.js";
98
- import { DEFAULT_TEMPLATE_EDITOR_TOOLBAR_LABELS as li, TemplateEditorToolbar as ui } from "./components/editor/template-editor-toolbar.js";
99
- import { buildStrokeTransaction as di, lineRanges as fi } from "./components/editor/utils/stroke-transaction.js";
100
- import { DEFAULT_TEMPLATE_EDITOR_LABELS as pi, TemplateEditor as mi } from "./components/editor/template-editor.js";
101
- import { DEFAULT_FILTER_PICKER_LABELS as hi, FilterPickerContent as gi } from "./components/editor/filter-picker-content.js";
102
- import { DEFAULT_VARIABLE_PICKER_LABELS as _i, VariablePickerContent as vi, createLucideIconResolver as yi, getPluginsWithNestedArrays as bi } from "./components/editor/variable-picker-content.js";
103
- import { calculateLineLength as xi, getOverflowAmount as Si, willOverflow as Ci } from "./components/editor/utils/length-calculator.js";
104
- export { Cn as ALL_COLOR_CODES, wn as AVAILABLE_COLORS, t as Accordion, n as AccordionContent, r as AccordionItem, i as AccordionTrigger, y as Alert, b as AlertDescription, V as AlertDialog, H as AlertDialogAction, U as AlertDialogCancel, W as AlertDialogContent, G as AlertDialogDescription, K as AlertDialogFooter, q as AlertDialogHeader, J as AlertDialogOverlay, Y as AlertDialogPortal, X as AlertDialogTitle, Z as AlertDialogTrigger, x as AlertTitle, Mn as BOARD_CHARS, _r as BOARD_CODE_TO_COLOR, Tn as BOARD_COLORS, vr as BOARD_COLOR_CODES, C as Badge, cr as BarList, Un as BoardBackdrop, Qn as BoardDisplay, Xt as BoardIcon, Zt as BoardSelector, dr as BoardShowcase, Hn as BoardTeaser, I as Box, Qt as Breadcrumb, $t as BreadcrumbEllipsis, en as BreadcrumbItem, tn as BreadcrumbLink, nn as BreadcrumbList, rn as BreadcrumbPage, an as BreadcrumbSeparator, A as Button, En as COLOR_CODE_MAP, Dn as COLOR_DISPLAY, yr as CURSOR_ANCHOR, a as Card, o as CardAction, s as CardContent, c as CardDescription, l as CardFooter, u as CardHeader, d as CardTitle, M as Checkbox, T as Chip, Le as Code, f as Collapsible, p as CollapsibleContent, m as CollapsibleTrigger, Wr as ColorPickerContent, Or as ColorTileNode, Er as ColorTileNodeView, br as DEFAULT_BOARD_LINES, xr as DEFAULT_BOARD_WIDTH, Gr as DEFAULT_COLOR_PICKER_LABELS, Dr as DEFAULT_COLOR_TILE_NODE_VIEW_LABELS, $r as DEFAULT_DRAW_CHAR_PICKER_LABELS, kr as DEFAULT_FILL_SPACE_NODE_VIEW_LABELS, hi as DEFAULT_FILTER_PICKER_LABELS, ti as DEFAULT_FORMATTING_PICKER_LABELS, Mr as DEFAULT_FORMULA_NODE_VIEW_LABELS, ir as DEFAULT_SHAPE_LABELS, fr as DEFAULT_SHOWCASE_LABELS, pi as DEFAULT_TEMPLATE_EDITOR_LABELS, li as DEFAULT_TEMPLATE_EDITOR_TOOLBAR_LABELS, ri as DEFAULT_TOOLBAR_DROPDOWN_LABELS, Rr as DEFAULT_VARIABLE_NODE_VIEW_LABELS, _i as DEFAULT_VARIABLE_PICKER_LABELS, Vr as DEFAULT_WRAPPED_TEXT_VIEW_LABELS, Gn as DEVICE_DIMENSIONS, Kr as DRAW_CHARS, Q as Dialog, $ as DialogClose, ee as DialogContent, te as DialogDescription, ne as DialogFooter, re as DialogHeader, ie as DialogOverlay, ae as DialogPortal, oe as DialogTitle, se as DialogTrigger, ei as DrawCharPickerContent, ce as DropdownMenu, le as DropdownMenuCheckboxItem, ue as DropdownMenuContent, de as DropdownMenuGroup, fe as DropdownMenuItem, pe as DropdownMenuLabel, me as DropdownMenuPortal, he as DropdownMenuRadioGroup, ge as DropdownMenuRadioItem, _e as DropdownMenuSeparator, ve as DropdownMenuShortcut, ye as DropdownMenuSub, be as DropdownMenuSubContent, xe as DropdownMenuSubTrigger, Se as DropdownMenuTrigger, Nn as EXTRA_CHARS, D as EmptyState, On as FIESTABOARD_COLORS, on as FIESTA_ICON_DATA_URI, sn as FIESTA_ICON_PALETTE, cn as FIESTA_ICON_SVG, Sr as FILL_SPACE_REPEAT_VAR, Cr as FILL_SPACE_VAR, $n as FLAP_SPEED_PRESETS, tt as FadeContent, ln as FiestaIcon, un as FiestaLogo, jr as FillSpaceNode, Ar as FillSpaceNodeView, gi as FilterPickerContent, L as Flex, ni as FormattingPickerContent, Pr as FormulaNode, Nr as FormulaNodeView, z as Grid, Re as Heading, N as Input, h as JsonTree, P as Label, dn as LanguageSelector, Ce as Lightbox, we as LightboxClose, Te as LightboxContent, Ee as LightboxFooter, De as LightboxOverlay, Oe as LightboxPortal, ke as LightboxTrigger, Fr as LineNavigation, Be as List, Ve as ListItem, Kn as MAX_NOTES_PER_AXIS, fn as MainContent, g as MediaFrame, _ as MediaFrameBar, v as MediaFrameMedia, qn as NOTE_COLS, Jn as NOTE_ROWS, wr as NodeViewInjectionProvider, pn as PAGE_HUES, pr as PLUGIN_CATEGORIES, mn as PageHeader, hn as PageIconGradientDefs, _n as PageLayout, vn as PageToolbar, gr as PluginCard, mr as PluginCategoryBadge, Ae as Popover, je as PopoverClose, Me as PopoverContent, Ne as PopoverDescription, Pe as PopoverTitle, Fe as PopoverTrigger, nr as ScaledBoardDisplay, hr as ScaledBoardTeaser, Ue as ScrollArea, We as ScrollBar, F as SecretInput, Tt as SegmentedControl, Et as SegmentedControlItem, at as Select, ot as SelectContent, st as SelectGroup, ct as SelectItem, lt as SelectLabel, ut as SelectScrollDownButton, dt as SelectScrollUpButton, ft as SelectSeparator, pt as SelectTrigger, mt as SelectValue, Ft as Sheet, It as SheetClose, Lt as SheetContent, Rt as SheetDescription, zt as SheetFooter, Bt as SheetHeader, Vt as SheetOverlay, Ht as SheetPortal, Ut as SheetTitle, Wt as SheetTrigger, yn as Sidebar, Ir as SingleParagraphDoc, nt as Skeleton, bn as SkipToContent, ht as Slider, O as Spinner, Nt as Stack, lr as StatStrip, ur as StatStripItem, rr as StaticBoardDisplay, rt as StatusDot, gt as Switch, Ge as Table, Ke as TableBody, qe as TableCell, Je as TableHead, Ye as TableHeader, Xe as TableRow, Ze as Tabs, Qe as TabsContent, $e as TabsList, et as TabsTrigger, mi as TemplateEditor, ui as TemplateEditorToolbar, vt as Text, Yt as TextLink, _t as Textarea, xn as ThemeToggle, bt as TimePicker, xt as Toggle, Dt as ToggleCard, Ot as ToggleCardGroup, St as ToggleGroup, ii as ToolbarDropdown, Gt as Tooltip, Kt as TooltipContent, qt as TooltipProvider, Jt as TooltipTrigger, Lr as TrailingNewline, Br as VariableNode, zr as VariableNodeView, vi as VariablePickerContent, Sn as WizardProgress, Wn as WizardShell, Ur as WrappedTextNode, Hr as WrappedTextView, S as alertVariants, w as badgeVariants, qr as brushToCell, di as buildStrokeTransaction, j as buttonVariants, xi as calculateLineLength, Jr as cellsToLine, E as chipVariants, e as cn, yi as createLucideIconResolver, er as deriveFlapTiming, R as flexVariants, kn as getBoardColor, Pn as getCharFromToken, Fn as getCharIndex, Si as getOverflowAmount, bi as getPluginsWithNestedArrays, B as gridVariants, ze as headingVariants, ci as insertTemplateContent, In as isColorTile, Yn as isNoteArray, Yr as isPositionalLine, An as isValidBoardColor, fi as lineRanges, Xr as lineToCells, He as listVariants, Ln as messageToGrid, Rn as messageToText, Xn as noteArrayDimensions, gn as pageHue, Zr as paintLine, zn as parseLine, ai as parseLineContent, oi as parseTemplateSimple, ar as previewLabel, or as previewLabels, sr as previewMessage, Qr as renderPositionalLine, Bn as resolveCode62Glyph, jn as resolveColorCode, Zn as resolveDimensions, tr as resolveFlapSpeed, kt as segmentedControlItemVariants, At as segmentedControlVariants, si as serializeTemplateSimple, k as spinnerVariants, Pt as stackVariants, it as statusDotVariants, yt as textVariants, jt as toggleCardGroupVariants, Mt as toggleCardVariants, Ct as toggleGroupVariants, wt as toggleVariants, Vn as tokensEqual, Tr as useNodeViewInjection, Ie as usePopoverClose, Ci as willOverflow };
5
+ import { IconTile as h, iconTileVariants as g } from "./components/containment/icon-tile.js";
6
+ import { JsonTree as _ } from "./components/containment/json-tree.js";
7
+ import { MediaFrame as v, MediaFrameBar as y, MediaFrameMedia as b } from "./components/containment/media-frame.js";
8
+ import { Alert as x, AlertDescription as S, AlertTitle as C, alertVariants as w } from "./components/feedback/alert.js";
9
+ import { Badge as T, badgeVariants as E } from "./components/feedback/badge.js";
10
+ import { Chip as D, chipVariants as O } from "./components/feedback/chip.js";
11
+ import { EmptyState as k } from "./components/feedback/empty-state.js";
12
+ import { Spinner as A, spinnerVariants as j } from "./components/feedback/spinner.js";
13
+ import { Button as M, buttonVariants as N } from "./components/forms/button.js";
14
+ import { Checkbox as P } from "./components/forms/checkbox.js";
15
+ import { Input as F } from "./components/forms/input.js";
16
+ import { Label as I } from "./components/forms/label.js";
17
+ import { SecretInput as L } from "./components/forms/secret-input.js";
18
+ import { Box as R } from "./components/layout/box.js";
19
+ import { Flex as z, flexVariants as B } from "./components/layout/flex.js";
20
+ import { Grid as V, gridVariants as H } from "./components/layout/grid.js";
21
+ import { AlertDialog as U, AlertDialogAction as W, AlertDialogCancel as G, AlertDialogContent as K, AlertDialogDescription as q, AlertDialogFooter as J, AlertDialogHeader as Y, AlertDialogOverlay as X, AlertDialogPortal as Z, AlertDialogTitle as Q, AlertDialogTrigger as $ } from "./components/overlays/alert-dialog.js";
22
+ import { Dialog as ee, DialogClose as te, DialogContent as ne, DialogDescription as re, DialogFooter as ie, DialogHeader as ae, DialogOverlay as oe, DialogPortal as se, DialogTitle as ce, DialogTrigger as le } from "./components/overlays/dialog.js";
23
+ import { DropdownMenu as ue, DropdownMenuCheckboxItem as de, DropdownMenuContent as fe, DropdownMenuGroup as pe, DropdownMenuItem as me, DropdownMenuLabel as he, DropdownMenuPortal as ge, DropdownMenuRadioGroup as _e, DropdownMenuRadioItem as ve, DropdownMenuSeparator as ye, DropdownMenuShortcut as be, DropdownMenuSub as xe, DropdownMenuSubContent as Se, DropdownMenuSubTrigger as Ce, DropdownMenuTrigger as we } from "./components/overlays/dropdown-menu.js";
24
+ import { Lightbox as Te, LightboxClose as Ee, LightboxContent as De, LightboxFooter as Oe, LightboxOverlay as ke, LightboxPortal as Ae, LightboxTrigger as je } from "./components/overlays/lightbox.js";
25
+ import { Popover as Me, PopoverClose as Ne, PopoverContent as Pe, PopoverDescription as Fe, PopoverTitle as Ie, PopoverTrigger as Le, usePopoverClose as Re } from "./components/overlays/popover.js";
26
+ import { Code as ze } from "./components/typography/code.js";
27
+ import { Heading as Be, headingVariants as Ve } from "./components/typography/heading.js";
28
+ import { List as He, ListItem as Ue, listVariants as We } from "./components/typography/list.js";
29
+ import { ScrollArea as Ge, ScrollBar as Ke } from "./components/containment/scroll-area.js";
30
+ import { Table as qe, TableBody as Je, TableCell as Ye, TableHead as Xe, TableHeader as Ze, TableRow as Qe } from "./components/containment/table.js";
31
+ import { Tabs as $e, TabsContent as et, TabsList as tt, TabsTrigger as nt } from "./components/containment/tabs.js";
32
+ import rt from "./components/effects/react-bits/fade-content.js";
33
+ import { Skeleton as it } from "./components/feedback/skeleton.js";
34
+ import { StatusDot as at, statusDotVariants as ot } from "./components/feedback/status-dot.js";
35
+ import { Select as st, SelectContent as ct, SelectGroup as lt, SelectItem as ut, SelectLabel as dt, SelectScrollDownButton as ft, SelectScrollUpButton as pt, SelectSeparator as mt, SelectTrigger as ht, SelectValue as gt } from "./components/forms/select.js";
36
+ import { Slider as _t } from "./components/forms/slider.js";
37
+ import { Swatch as vt, SwatchGroup as yt, swatchFillVariants as bt, swatchGroupVariants as xt, swatchIndicatorVariants as St, swatchVariants as Ct } from "./components/forms/swatch.js";
38
+ import { Switch as wt } from "./components/forms/switch.js";
39
+ import { Textarea as Tt } from "./components/forms/textarea.js";
40
+ import { Text as Et, textVariants as Dt } from "./components/typography/text.js";
41
+ import { TimePicker as Ot } from "./components/forms/time-picker.js";
42
+ import { TimezonePicker as kt, listTimezones as At } from "./components/forms/timezone-picker.js";
43
+ import { Toggle as jt, ToggleGroup as Mt, toggleGroupVariants as Nt, toggleVariants as Pt } from "./components/forms/toggle.js";
44
+ import { SegmentedControl as Ft, SegmentedControlItem as It, ToggleCard as Lt, ToggleCardGroup as Rt, segmentedControlItemVariants as zt, segmentedControlVariants as Bt, toggleCardGroupVariants as Vt, toggleCardVariants as Ht } from "./components/forms/toggle-card.js";
45
+ import { Stack as Ut, stackVariants as Wt } from "./components/layout/stack.js";
46
+ import { Sheet as Gt, SheetClose as Kt, SheetContent as qt, SheetDescription as Jt, SheetFooter as Yt, SheetHeader as Xt, SheetOverlay as Zt, SheetPortal as Qt, SheetTitle as $t, SheetTrigger as en } from "./components/overlays/sheet.js";
47
+ import { Tooltip as tn, TooltipContent as nn, TooltipProvider as rn, TooltipTrigger as an } from "./components/overlays/tooltip.js";
48
+ import { TextLink as on } from "./components/typography/text-link.js";
49
+ import { BoardIcon as sn } from "./components/chrome/board-icon.js";
50
+ import { BoardSelector as cn } from "./components/chrome/board-selector.js";
51
+ import { Breadcrumb as ln, BreadcrumbEllipsis as un, BreadcrumbItem as dn, BreadcrumbLink as fn, BreadcrumbList as pn, BreadcrumbPage as mn, BreadcrumbSeparator as hn } from "./components/chrome/breadcrumb.js";
52
+ import { FIESTA_ICON_DATA_URI as gn, FIESTA_ICON_PALETTE as _n, FIESTA_ICON_SVG as vn, FiestaIcon as yn } from "./components/chrome/fiesta-icon.js";
53
+ import { FiestaLogo as bn } from "./components/chrome/fiesta-logo.js";
54
+ import { LanguageSelector as xn } from "./components/chrome/language-selector.js";
55
+ import { MainContent as Sn } from "./components/chrome/main-content.js";
56
+ import { NavList as Cn, NavListItem as wn, NavListLink as Tn, NavListSection as En, NavListSectionContent as Dn, NavListSectionTrigger as On } from "./components/chrome/nav-list.js";
57
+ import { PAGE_HUES as kn, PageHeader as An, PageIconGradientDefs as jn, pageHue as Mn } from "./components/chrome/page-header.js";
58
+ import { PageLayout as Nn } from "./components/chrome/page-layout.js";
59
+ import { PageToolbar as Pn } from "./components/chrome/page-toolbar.js";
60
+ import { Sidebar as Fn } from "./components/chrome/sidebar.js";
61
+ import { SkipToContent as In } from "./components/chrome/skip-to-content.js";
62
+ import { ThemeToggle as Ln } from "./components/chrome/theme-toggle.js";
63
+ import { WizardProgress as Rn } from "./components/wizard/wizard-progress.js";
64
+ import { ALL_COLOR_CODES as zn, AVAILABLE_COLORS as Bn, BOARD_COLORS as Vn, COLOR_CODE_MAP as Hn, COLOR_DISPLAY as Un, FIESTABOARD_COLORS as Wn, getBoardColor as Gn, isValidBoardColor as Kn, resolveColorCode as qn } from "./lib/board-colors.js";
65
+ import { BOARD_CHARS as Jn, EXTRA_CHARS as Yn, applyCode62Glyph as Xn, getCharFromToken as Zn, getCharIndex as Qn, isColorTile as $n, messageToGrid as er, messageToText as tr, parseLine as nr, resolveCode62Glyph as rr, tokensEqual as ir } from "./lib/board-characters.js";
66
+ import { BoardTeaser as ar } from "./components/board/board-teaser.js";
67
+ import { BoardBackdrop as or } from "./components/board/board-backdrop.js";
68
+ import { WizardShell as sr } from "./components/wizard/wizard-shell.js";
69
+ import { DEVICE_DIMENSIONS as cr, MAX_NOTES_PER_AXIS as lr, NOTE_COLS as ur, NOTE_ROWS as dr, isNoteArray as fr, noteArrayDimensions as pr, resolveDimensions as mr } from "./lib/board-dimensions.js";
70
+ import { BoardDisplay as hr, FLAP_SPEED_PRESETS as gr, deriveFlapTiming as _r, resolveFlapSpeed as vr } from "./components/board/board-display.js";
71
+ import { ScaledBoardDisplay as yr } from "./components/board/scaled-board-display.js";
72
+ import { StaticBoardDisplay as br } from "./components/board/static-board-display.js";
73
+ import { DEFAULT_SHAPE_LABELS as xr, previewLabel as Sr, previewLabels as Cr, previewMessage as wr } from "./lib/board-previews.js";
74
+ import { BarList as Tr } from "./components/data/bar-list.js";
75
+ import { StatStrip as Er, StatStripItem as Dr } from "./components/data/stat-strip.js";
76
+ import { BoardShowcase as Or, DEFAULT_SHOWCASE_LABELS as kr } from "./components/plugin/board-showcase.js";
77
+ import { PLUGIN_CATEGORIES as Ar, PluginCategoryBadge as jr } from "./components/plugin/plugin-category-badge.js";
78
+ import { ScaledBoardTeaser as Mr } from "./components/plugin/scaled-board-teaser.js";
79
+ import { PluginCard as Nr } from "./components/plugin/plugin-card.js";
80
+ import { BOARD_CODE_TO_COLOR as Pr, BOARD_COLOR_CODES as Fr, CURSOR_ANCHOR as Ir, DEFAULT_BOARD_LINES as Lr, DEFAULT_BOARD_WIDTH as Rr, FILL_SPACE_REPEAT_VAR as zr, FILL_SPACE_VAR as Br } from "./components/editor/constants.js";
81
+ import { NodeViewInjectionProvider as Vr, useNodeViewInjection as Hr } from "./components/editor/node-views/node-view-context.js";
82
+ import { ColorTileNodeView as Ur, DEFAULT_COLOR_TILE_NODE_VIEW_LABELS as Wr } from "./components/editor/node-views/color-tile-node-view.js";
83
+ import { ColorTileNode as Gr } from "./components/editor/extensions/color-tile-node.js";
84
+ import { DEFAULT_FILL_SPACE_NODE_VIEW_LABELS as Kr, FillSpaceNodeView as qr } from "./components/editor/node-views/fill-space-node-view.js";
85
+ import { FillSpaceNode as Jr } from "./components/editor/extensions/fill-space-node.js";
86
+ import { DEFAULT_FORMULA_NODE_VIEW_LABELS as Yr, FormulaNodeView as Xr } from "./components/editor/node-views/formula-node-view.js";
87
+ import { FormulaNode as Zr } from "./components/editor/extensions/formula-node.js";
88
+ import { LineNavigation as Qr } from "./components/editor/extensions/line-navigation.js";
89
+ import { SingleParagraphDoc as $r } from "./components/editor/extensions/single-paragraph-doc.js";
90
+ import { TrailingNewline as ei } from "./components/editor/extensions/trailing-newline.js";
91
+ import { DEFAULT_VARIABLE_NODE_VIEW_LABELS as ti, VariableNodeView as ni } from "./components/editor/node-views/variable-node-view.js";
92
+ import { VariableNode as ri } from "./components/editor/extensions/variable-node.js";
93
+ import { DEFAULT_WRAPPED_TEXT_VIEW_LABELS as ii, WrappedTextView as ai } from "./components/editor/node-views/wrapped-text-view.js";
94
+ import { WrappedTextNode as oi } from "./components/editor/extensions/wrapped-text-node.js";
95
+ import { ColorPickerContent as si, DEFAULT_COLOR_PICKER_LABELS as ci } from "./components/editor/color-picker-content.js";
96
+ import { DRAW_CHARS as li, brushToCell as ui, cellsToLine as di, isPositionalLine as fi, lineToCells as pi, paintLine as mi, renderPositionalLine as hi } from "./components/editor/utils/draw-mode.js";
97
+ import { DEFAULT_DRAW_CHAR_PICKER_LABELS as gi, DrawCharPickerContent as _i } from "./components/editor/draw-char-picker-content.js";
98
+ import { DEFAULT_FORMATTING_PICKER_LABELS as vi, FormattingPickerContent as yi } from "./components/editor/formatting-picker-content.js";
99
+ import { DEFAULT_TOOLBAR_DROPDOWN_LABELS as bi, ToolbarDropdown as xi } from "./components/editor/toolbar-dropdown.js";
100
+ import { parseLineContent as Si, parseTemplateSimple as Ci, serializeTemplateSimple as wi } from "./components/editor/utils/serialization.js";
101
+ import { insertTemplateContent as Ti } from "./components/editor/utils/insertion.js";
102
+ import { DEFAULT_TEMPLATE_EDITOR_TOOLBAR_LABELS as Ei, TemplateEditorToolbar as Di } from "./components/editor/template-editor-toolbar.js";
103
+ import { buildStrokeTransaction as Oi, lineRanges as ki } from "./components/editor/utils/stroke-transaction.js";
104
+ import { DEFAULT_TEMPLATE_EDITOR_LABELS as Ai, TemplateEditor as ji } from "./components/editor/template-editor.js";
105
+ import { DEFAULT_FILTER_PICKER_LABELS as Mi, FilterPickerContent as Ni } from "./components/editor/filter-picker-content.js";
106
+ import { DEFAULT_VARIABLE_PICKER_LABELS as Pi, VariablePickerContent as Fi, createLucideIconResolver as Ii, getPluginsWithNestedArrays as Li } from "./components/editor/variable-picker-content.js";
107
+ import { calculateLineLength as Ri, getOverflowAmount as zi, willOverflow as Bi } from "./components/editor/utils/length-calculator.js";
108
+ export { zn as ALL_COLOR_CODES, Bn as AVAILABLE_COLORS, t as Accordion, n as AccordionContent, r as AccordionItem, i as AccordionTrigger, x as Alert, S as AlertDescription, U as AlertDialog, W as AlertDialogAction, G as AlertDialogCancel, K as AlertDialogContent, q as AlertDialogDescription, J as AlertDialogFooter, Y as AlertDialogHeader, X as AlertDialogOverlay, Z as AlertDialogPortal, Q as AlertDialogTitle, $ as AlertDialogTrigger, C as AlertTitle, Jn as BOARD_CHARS, Pr as BOARD_CODE_TO_COLOR, Vn as BOARD_COLORS, Fr as BOARD_COLOR_CODES, T as Badge, Tr as BarList, or as BoardBackdrop, hr as BoardDisplay, sn as BoardIcon, cn as BoardSelector, Or as BoardShowcase, ar as BoardTeaser, R as Box, ln as Breadcrumb, un as BreadcrumbEllipsis, dn as BreadcrumbItem, fn as BreadcrumbLink, pn as BreadcrumbList, mn as BreadcrumbPage, hn as BreadcrumbSeparator, M as Button, Hn as COLOR_CODE_MAP, Un as COLOR_DISPLAY, Ir as CURSOR_ANCHOR, a as Card, o as CardAction, s as CardContent, c as CardDescription, l as CardFooter, u as CardHeader, d as CardTitle, P as Checkbox, D as Chip, ze as Code, f as Collapsible, p as CollapsibleContent, m as CollapsibleTrigger, si as ColorPickerContent, Gr as ColorTileNode, Ur as ColorTileNodeView, Lr as DEFAULT_BOARD_LINES, Rr as DEFAULT_BOARD_WIDTH, ci as DEFAULT_COLOR_PICKER_LABELS, Wr as DEFAULT_COLOR_TILE_NODE_VIEW_LABELS, gi as DEFAULT_DRAW_CHAR_PICKER_LABELS, Kr as DEFAULT_FILL_SPACE_NODE_VIEW_LABELS, Mi as DEFAULT_FILTER_PICKER_LABELS, vi as DEFAULT_FORMATTING_PICKER_LABELS, Yr as DEFAULT_FORMULA_NODE_VIEW_LABELS, xr as DEFAULT_SHAPE_LABELS, kr as DEFAULT_SHOWCASE_LABELS, Ai as DEFAULT_TEMPLATE_EDITOR_LABELS, Ei as DEFAULT_TEMPLATE_EDITOR_TOOLBAR_LABELS, bi as DEFAULT_TOOLBAR_DROPDOWN_LABELS, ti as DEFAULT_VARIABLE_NODE_VIEW_LABELS, Pi as DEFAULT_VARIABLE_PICKER_LABELS, ii as DEFAULT_WRAPPED_TEXT_VIEW_LABELS, cr as DEVICE_DIMENSIONS, li as DRAW_CHARS, ee as Dialog, te as DialogClose, ne as DialogContent, re as DialogDescription, ie as DialogFooter, ae as DialogHeader, oe as DialogOverlay, se as DialogPortal, ce as DialogTitle, le as DialogTrigger, _i as DrawCharPickerContent, ue as DropdownMenu, de as DropdownMenuCheckboxItem, fe as DropdownMenuContent, pe as DropdownMenuGroup, me as DropdownMenuItem, he as DropdownMenuLabel, ge as DropdownMenuPortal, _e as DropdownMenuRadioGroup, ve as DropdownMenuRadioItem, ye as DropdownMenuSeparator, be as DropdownMenuShortcut, xe as DropdownMenuSub, Se as DropdownMenuSubContent, Ce as DropdownMenuSubTrigger, we as DropdownMenuTrigger, Yn as EXTRA_CHARS, k as EmptyState, Wn as FIESTABOARD_COLORS, gn as FIESTA_ICON_DATA_URI, _n as FIESTA_ICON_PALETTE, vn as FIESTA_ICON_SVG, zr as FILL_SPACE_REPEAT_VAR, Br as FILL_SPACE_VAR, gr as FLAP_SPEED_PRESETS, rt as FadeContent, yn as FiestaIcon, bn as FiestaLogo, Jr as FillSpaceNode, qr as FillSpaceNodeView, Ni as FilterPickerContent, z as Flex, yi as FormattingPickerContent, Zr as FormulaNode, Xr as FormulaNodeView, V as Grid, Be as Heading, h as IconTile, F as Input, _ as JsonTree, I as Label, xn as LanguageSelector, Te as Lightbox, Ee as LightboxClose, De as LightboxContent, Oe as LightboxFooter, ke as LightboxOverlay, Ae as LightboxPortal, je as LightboxTrigger, Qr as LineNavigation, He as List, Ue as ListItem, lr as MAX_NOTES_PER_AXIS, Sn as MainContent, v as MediaFrame, y as MediaFrameBar, b as MediaFrameMedia, ur as NOTE_COLS, dr as NOTE_ROWS, Cn as NavList, wn as NavListItem, Tn as NavListLink, En as NavListSection, Dn as NavListSectionContent, On as NavListSectionTrigger, Vr as NodeViewInjectionProvider, kn as PAGE_HUES, Ar as PLUGIN_CATEGORIES, An as PageHeader, jn as PageIconGradientDefs, Nn as PageLayout, Pn as PageToolbar, Nr as PluginCard, jr as PluginCategoryBadge, Me as Popover, Ne as PopoverClose, Pe as PopoverContent, Fe as PopoverDescription, Ie as PopoverTitle, Le as PopoverTrigger, yr as ScaledBoardDisplay, Mr as ScaledBoardTeaser, Ge as ScrollArea, Ke as ScrollBar, L as SecretInput, Ft as SegmentedControl, It as SegmentedControlItem, st as Select, ct as SelectContent, lt as SelectGroup, ut as SelectItem, dt as SelectLabel, ft as SelectScrollDownButton, pt as SelectScrollUpButton, mt as SelectSeparator, ht as SelectTrigger, gt as SelectValue, Gt as Sheet, Kt as SheetClose, qt as SheetContent, Jt as SheetDescription, Yt as SheetFooter, Xt as SheetHeader, Zt as SheetOverlay, Qt as SheetPortal, $t as SheetTitle, en as SheetTrigger, Fn as Sidebar, $r as SingleParagraphDoc, it as Skeleton, In as SkipToContent, _t as Slider, A as Spinner, Ut as Stack, Er as StatStrip, Dr as StatStripItem, br as StaticBoardDisplay, at as StatusDot, vt as Swatch, yt as SwatchGroup, wt as Switch, qe as Table, Je as TableBody, Ye as TableCell, Xe as TableHead, Ze as TableHeader, Qe as TableRow, $e as Tabs, et as TabsContent, tt as TabsList, nt as TabsTrigger, ji as TemplateEditor, Di as TemplateEditorToolbar, Et as Text, on as TextLink, Tt as Textarea, Ln as ThemeToggle, Ot as TimePicker, kt as TimezonePicker, jt as Toggle, Lt as ToggleCard, Rt as ToggleCardGroup, Mt as ToggleGroup, xi as ToolbarDropdown, tn as Tooltip, nn as TooltipContent, rn as TooltipProvider, an as TooltipTrigger, ei as TrailingNewline, ri as VariableNode, ni as VariableNodeView, Fi as VariablePickerContent, Rn as WizardProgress, sr as WizardShell, oi as WrappedTextNode, ai as WrappedTextView, w as alertVariants, Xn as applyCode62Glyph, E as badgeVariants, ui as brushToCell, Oi as buildStrokeTransaction, N as buttonVariants, Ri as calculateLineLength, di as cellsToLine, O as chipVariants, e as cn, Ii as createLucideIconResolver, _r as deriveFlapTiming, B as flexVariants, Gn as getBoardColor, Zn as getCharFromToken, Qn as getCharIndex, zi as getOverflowAmount, Li as getPluginsWithNestedArrays, H as gridVariants, Ve as headingVariants, g as iconTileVariants, Ti as insertTemplateContent, $n as isColorTile, fr as isNoteArray, fi as isPositionalLine, Kn as isValidBoardColor, ki as lineRanges, pi as lineToCells, At as listTimezones, We as listVariants, er as messageToGrid, tr as messageToText, pr as noteArrayDimensions, Mn as pageHue, mi as paintLine, nr as parseLine, Si as parseLineContent, Ci as parseTemplateSimple, Sr as previewLabel, Cr as previewLabels, wr as previewMessage, hi as renderPositionalLine, rr as resolveCode62Glyph, qn as resolveColorCode, mr as resolveDimensions, vr as resolveFlapSpeed, zt as segmentedControlItemVariants, Bt as segmentedControlVariants, wi as serializeTemplateSimple, j as spinnerVariants, Wt as stackVariants, ot as statusDotVariants, bt as swatchFillVariants, xt as swatchGroupVariants, St as swatchIndicatorVariants, Ct as swatchVariants, Dt as textVariants, Vt as toggleCardGroupVariants, Ht as toggleCardVariants, Nt as toggleGroupVariants, Pt as toggleVariants, ir as tokensEqual, Hr as useNodeViewInjection, Re as usePopoverClose, Bi as willOverflow };
@@ -72,6 +72,19 @@ export type Code62Glyph = "degree" | "heart";
72
72
  * not been taught about the new flap keeps rendering exactly as it did.
73
73
  */
74
74
  export declare function resolveCode62Glyph(deviceType: string, code62Glyph?: Code62Glyph): Code62Glyph;
75
+ /**
76
+ * Draw code 62 as the glyph this board's flap actually carries.
77
+ *
78
+ * Shared by {@link messageToGrid} and {@link messageToText} rather than written
79
+ * out twice: the tiles and the accessible name have to agree about what the
80
+ * board draws, or a board shows ♥ while announcing "degree" (WCAG 1.1.1).
81
+ *
82
+ * Exported for `BoardTeaser`, which tokenizes with {@link parseLine} directly
83
+ * rather than through {@link messageToGrid} — a one-row strip pads to a tile
84
+ * count instead of filling a grid — and would otherwise need its own copy of
85
+ * this substitution (FiestaBoard#1666).
86
+ */
87
+ export declare function applyCode62Glyph(token: BoardToken, glyph: Code62Glyph): BoardToken;
75
88
  /**
76
89
  * Convert a message string to a rows×cols grid of tokens.
77
90
  * Lines are split on `\n`, truncated/padded to the grid, and code 62 draws as
@@ -156,6 +156,6 @@ function m(e, t = "flagship", n) {
156
156
  }).join("")).join(" ").replace(/\s+/g, " ").trim();
157
157
  }
158
158
  //#endregion
159
- export { t as BOARD_CHARS, n as EXTRA_CHARS, l as getCharFromToken, c as getCharIndex, o as isColorTile, p as messageToGrid, m as messageToText, u as parseLine, d as resolveCode62Glyph, i as tokensEqual };
159
+ export { t as BOARD_CHARS, n as EXTRA_CHARS, f as applyCode62Glyph, l as getCharFromToken, c as getCharIndex, o as isColorTile, p as messageToGrid, m as messageToText, u as parseLine, d as resolveCode62Glyph, i as tokensEqual };
160
160
 
161
161
  //# sourceMappingURL=board-characters.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"board-characters.js","names":[],"sources":["../../src/lib/board-characters.ts"],"mappings":"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"}
1
+ {"version":3,"file":"board-characters.js","names":[],"sources":["../../src/lib/board-characters.ts"],"mappings":"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"}
package/dist/theme.css CHANGED
@@ -361,6 +361,28 @@
361
361
  --border: color-mix(in oklch, var(--foreground) 11%, transparent);
362
362
  --input: color-mix(in oklch, var(--foreground) 50%, transparent);
363
363
  --ring: var(--primary); /* = --primary, see the invariant above */
364
+ /* ============================================================
365
+ * THE FOCUS RING, AS A VALUE (#228 item 5).
366
+ *
367
+ * The recipe itself is argued at `.focus-ring` near the bottom of this
368
+ * file; this is the same three stops written ONCE, so that the class and
369
+ * every other caller are the same value rather than two copies of it.
370
+ *
371
+ * `.focus-ring` is a class, and a class needs a call site. MDX prose
372
+ * anchors do not have one — a docs pipeline styles them from a stylesheet
373
+ * it owns — so the docs site hand-mirrored the three stops and the copy
374
+ * has already gone stale once. With the recipe published as a property, a
375
+ * CSS-only consumer writes
376
+ *
377
+ * a:focus-visible { box-shadow: var(--focus-ring-shadow); outline: none; }
378
+ *
379
+ * and tracks a retune here by construction.
380
+ *
381
+ * Declared in :root only: both stops resolve through --ring and
382
+ * --ring-edge, which are already themed, so the value re-resolves per
383
+ * theme without a second declaration to keep in sync.
384
+ * ============================================================ */
385
+ --focus-ring-shadow: 0 0 0 1px var(--ring-edge), 0 0 0 3px var(--ring), 0 0 0 4px var(--ring-edge);
364
386
  /* ============================================================
365
387
  * THE RAIL FOLLOWS THE THEME (#231).
366
388
  *
@@ -406,6 +428,56 @@
406
428
  Alert enforces this — status color never touches a sentence. */
407
429
  --warning: oklch(0.62 0.131 104);
408
430
  --warning-foreground: oklch(0.205 0.008 73);
431
+ /* ============================================================
432
+ * TAG TINTS ARE A PAIR ACROSS AN UNKNOWN SURFACE (#231).
433
+ *
434
+ * badge.tsx paints the three tag variants as `bg-tag-x/15` with
435
+ * `text-tag-x-foreground` on top (and lifts the fill to 25% when the badge
436
+ * is an anchor being hovered). The fill is TRANSLUCENT, so the thing the
437
+ * text is actually measured against is not a token at all — it is the tint
438
+ * composited over whatever surface the badge landed on. Retuning either
439
+ * half without re-measuring the whole matrix is how this drifts.
440
+ *
441
+ * So the matrix is measured, and it is measured by CI rather than by
442
+ * comment: scripts/ci/tests/theme-contrast.test.mjs recomputes every
443
+ * variant x surface x theme x tint cell from this file and fails under
444
+ * 4.5:1. Worst cell in the palette today (SC 1.4.3, AA):
445
+ *
446
+ * --background --card/--popover worst surface
447
+ * variable light 7.09/6.11 7.68/6.59 6.35 (--secondary)
448
+ * success light 6.62/5.77 7.17/6.22 5.22 (--secondary)
449
+ * formula light 6.74/5.81 7.31/6.27 5.25 (--secondary)
450
+ * variable dark 9.95/7.92 8.83/7.02 5.98 (--secondary)
451
+ * success dark 10.39/8.11 9.20/7.18 6.11 (--secondary)
452
+ * formula dark 10.11/7.96 8.96/7.04 5.99 (--secondary)
453
+ * ^15% / ^25% (rest / anchor-hover fill)
454
+ *
455
+ * The pairs hold, and the ~1.5:1 in #231 IS NOT REPRODUCIBLE FROM THIS
456
+ * FILE. The issue's cell — dark `success` on `--card` — recomputes to
457
+ * 9.20:1 at the 15% fill and 7.18:1 at the 25% one, and the pre-4.0.0
458
+ * palette this replaced does not produce a sub-4.5:1 cell anywhere either,
459
+ * so it is not a number these tokens used to have. It is quoted here
460
+ * because #231 stays OPEN on it: the tokens are proven, the report is not
461
+ * explained, and inventing a cause for it would be the same mistake as
462
+ * inventing a ratio.
463
+ *
464
+ * In particular it is NOT the downstream override. fiestaboard.github.io
465
+ * pins the "New" badge to hexes with `!important`, which is a hex fork of
466
+ * a token pair and a real maintenance defect — a fork stops tracking a
467
+ * retune here — but it is theme-AWARE (`.newBadge` plus a
468
+ * `[data-theme="dark"] .newBadge`, and their build widens every compiled
469
+ * `.dark` selector to that attribute), so the light pigment never lands on
470
+ * a dark fill. Both halves clear AA on their own fills: 6.49:1 light,
471
+ * 7.52:1 dark. It is redundant, not broken. Dropping it downstream is a
472
+ * cleanup, not a fix, and it does not close #231.
473
+ *
474
+ * Opaque fills (mixing the tint into --background instead of compositing
475
+ * over the live surface) were prototyped and REJECTED: they make the pair
476
+ * surface-independent, but a fill baked from --background measures 1.01:1
477
+ * against --popover in dark, so the chip's field disappears on exactly the
478
+ * surface the variable picker uses. Alpha is what keeps the chip visible on
479
+ * every surface; the CI matrix is what keeps it legible.
480
+ * ============================================================ */
409
481
  --tag-variable: oklch(0.52 0.16 315);
410
482
  --tag-variable-foreground: oklch(0.4 0.1 315);
411
483
  --tag-success: oklch(0.52 0.147 133);
@@ -800,6 +872,10 @@
800
872
  13.05:1 on --background; board-ink label 11.81:1. */
801
873
  --warning: oklch(0.86 0.17 104);
802
874
  --warning-foreground: oklch(0.205 0.008 73);
875
+ /* The dark half of the #231 matrix — see the table in :root. These measure
876
+ 7.90-10.39:1 at the 15% fill on every surface a Badge can land on, which
877
+ includes the dark `--card` cell #231 reports as ~1.5:1 (9.20:1 here). The
878
+ reported figure is unexplained, not reproduced; #231 stays open on it. */
803
879
  --tag-variable: oklch(0.78 0.164 315);
804
880
  --tag-variable-foreground: oklch(0.86 0.1 315);
805
881
  --tag-success: oklch(0.78 0.17 133);
@@ -1435,16 +1511,21 @@ html[data-board-switch="backward"]::view-transition-new(board-page) {
1435
1511
  * merges into the page (1.11:1) and the orange band — 9.77:1 there — carries
1436
1512
  * the indicator directly, which is why the recipe is safe in both themes for
1437
1513
  * different reasons.
1514
+ *
1515
+ * The three stops themselves live in :root as --focus-ring-shadow (#228
1516
+ * item 5). This class is now one CALLER of that value rather than the place
1517
+ * it is defined, which is what lets a CSS-only consumer — MDX prose anchors
1518
+ * have no call site to add a class to — say `box-shadow:
1519
+ * var(--focus-ring-shadow)` and stay in sync instead of hand-mirroring the
1520
+ * geometry. The rendered output is byte-identical to the inline recipe it
1521
+ * replaces; if it were not, every VRT baseline in the repo would move.
1438
1522
  * ============================================================ */
1439
1523
  .focus-ring {
1440
1524
  outline: none;
1441
1525
  }
1442
1526
  .focus-ring:focus-visible {
1443
1527
  outline: none;
1444
- box-shadow:
1445
- 0 0 0 1px var(--ring-edge),
1446
- 0 0 0 3px var(--ring),
1447
- 0 0 0 4px var(--ring-edge);
1528
+ box-shadow: var(--focus-ring-shadow);
1448
1529
  }
1449
1530
 
1450
1531
  /* ============================================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fiestaboard/ui",
3
- "version": "5.3.0",
3
+ "version": "5.4.1",
4
4
  "description": "FiestaUI — the FiestaBoard design system. React components on Base UI with Tailwind v4 design tokens.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -38,6 +38,8 @@
38
38
  "scripts": {
39
39
  "build": "vite build && tsc -p tsconfig.build.json && cp src/styles/theme.css dist/theme.css && cp src/styles/fonts.css dist/fonts.css && cp src/styles/editor.css dist/editor.css",
40
40
  "typecheck": "tsc --noEmit",
41
+ "test": "vitest run",
42
+ "test:watch": "vitest",
41
43
  "lint": "eslint",
42
44
  "lint:fix": "eslint --fix",
43
45
  "format": "prettier --write .",
@@ -89,6 +91,10 @@
89
91
  "@storybook/react-vite": "^10.5.5",
90
92
  "@storybook/test-runner": "^0.24.4",
91
93
  "@tailwindcss/vite": "^4",
94
+ "@testing-library/dom": "^10.4.1",
95
+ "@testing-library/jest-dom": "^7.0.1",
96
+ "@testing-library/react": "^16.3.2",
97
+ "@testing-library/user-event": "^14.6.5",
92
98
  "@tiptap/core": "^3.29.2",
93
99
  "@tiptap/pm": "^3.29.2",
94
100
  "@tiptap/react": "^3.29.2",
@@ -118,7 +124,8 @@
118
124
  "tailwindcss": "^4",
119
125
  "typescript": "6.0.3",
120
126
  "typescript-eslint": "^8.65.0",
121
- "vite": "^8.1.5"
127
+ "vite": "^8.1.5",
128
+ "vitest": "^4.1.11"
122
129
  },
123
130
  "publishConfig": {
124
131
  "registry": "https://registry.npmjs.org",