@fiestaboard/ui 5.2.0 → 5.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -0
- package/dist/components/board/board-display.d.ts +13 -1
- package/dist/components/board/board-display.js +103 -101
- package/dist/components/board/board-display.js.map +1 -1
- package/dist/components/board/static-board-display.d.ts +6 -1
- package/dist/components/board/static-board-display.js +36 -34
- package/dist/components/board/static-board-display.js.map +1 -1
- package/dist/components/chrome/nav-list.d.ts +53 -0
- package/dist/components/chrome/nav-list.js +84 -0
- package/dist/components/chrome/nav-list.js.map +1 -0
- package/dist/components/containment/icon-tile.d.ts +67 -0
- package/dist/components/containment/icon-tile.js +44 -0
- package/dist/components/containment/icon-tile.js.map +1 -0
- package/dist/components/containment/json-tree.js +1 -1
- package/dist/components/containment/json-tree.js.map +1 -1
- package/dist/components/containment/media-frame.d.ts +28 -0
- package/dist/components/containment/media-frame.js +40 -0
- package/dist/components/containment/media-frame.js.map +1 -0
- package/dist/components/containment/scroll-area.d.ts +17 -0
- package/dist/components/containment/scroll-area.js +2 -2
- package/dist/components/containment/scroll-area.js.map +1 -1
- package/dist/components/containment/tabs.js +2 -2
- package/dist/components/containment/tabs.js.map +1 -1
- package/dist/components/editor/formula/formula-editor-panel.js +2 -2
- package/dist/components/editor/formula/formula-editor-panel.js.map +1 -1
- package/dist/components/editor/template-editor-toolbar.d.ts +27 -3
- package/dist/components/editor/template-editor-toolbar.js +99 -96
- package/dist/components/editor/template-editor-toolbar.js.map +1 -1
- package/dist/components/forms/button.d.ts +1 -1
- package/dist/components/forms/button.js +2 -0
- package/dist/components/forms/button.js.map +1 -1
- package/dist/components/forms/selection-group.d.ts +82 -0
- package/dist/components/forms/selection-group.js +51 -0
- package/dist/components/forms/selection-group.js.map +1 -0
- package/dist/components/forms/swatch.d.ts +81 -0
- package/dist/components/forms/swatch.js +91 -0
- package/dist/components/forms/swatch.js.map +1 -0
- package/dist/components/forms/timezone-picker.d.ts +163 -0
- package/dist/components/forms/timezone-picker.js +158 -0
- package/dist/components/forms/timezone-picker.js.map +1 -0
- package/dist/components/forms/toggle-card.d.ts +45 -35
- package/dist/components/forms/toggle-card.js +187 -122
- package/dist/components/forms/toggle-card.js.map +1 -1
- package/dist/components/forms/toggle.d.ts +1 -1
- package/dist/components/layout/flex.d.ts +1 -1
- package/dist/components/layout/grid.d.ts +1 -1
- package/dist/components/layout/stack.d.ts +1 -1
- package/dist/components/overlays/lightbox.d.ts +37 -0
- package/dist/components/overlays/lightbox.js +54 -0
- package/dist/components/overlays/lightbox.js.map +1 -0
- package/dist/components/overlays/overlay-close.js +1 -1
- package/dist/components/overlays/overlay-close.js.map +1 -1
- package/dist/components/plugin/board-showcase.js +1 -1
- package/dist/components/plugin/board-showcase.js.map +1 -1
- package/dist/components/typography/heading.d.ts +1 -1
- package/dist/components/typography/text-link.d.ts +27 -3
- package/dist/components/typography/text-link.js +1 -1
- package/dist/components/typography/text-link.js.map +1 -1
- package/dist/components/typography/text.d.ts +1 -1
- package/dist/components/wizard/wizard-shell.d.ts +6 -1
- package/dist/components/wizard/wizard-shell.js +38 -35
- package/dist/components/wizard/wizard-shell.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.js +104 -98
- package/dist/lib/board-characters.d.ts +33 -7
- package/dist/lib/board-characters.js +14 -11
- package/dist/lib/board-characters.js.map +1 -1
- package/dist/theme.css +85 -4
- package/package.json +9 -2
package/dist/index.js
CHANGED
|
@@ -2,101 +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 {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
28
|
-
import {
|
|
29
|
-
import Ge from "./components/
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import
|
|
33
|
-
import {
|
|
34
|
-
import {
|
|
35
|
-
import {
|
|
36
|
-
import {
|
|
37
|
-
import {
|
|
38
|
-
import {
|
|
39
|
-
import {
|
|
40
|
-
import {
|
|
41
|
-
import {
|
|
42
|
-
import {
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
45
|
-
import {
|
|
46
|
-
import {
|
|
47
|
-
import {
|
|
48
|
-
import {
|
|
49
|
-
import {
|
|
50
|
-
import {
|
|
51
|
-
import {
|
|
52
|
-
import {
|
|
53
|
-
import {
|
|
54
|
-
import {
|
|
55
|
-
import {
|
|
56
|
-
import {
|
|
57
|
-
import {
|
|
58
|
-
import {
|
|
59
|
-
import {
|
|
60
|
-
import {
|
|
61
|
-
import {
|
|
62
|
-
import {
|
|
63
|
-
import {
|
|
64
|
-
import {
|
|
65
|
-
import {
|
|
66
|
-
import {
|
|
67
|
-
import {
|
|
68
|
-
import {
|
|
69
|
-
import {
|
|
70
|
-
import {
|
|
71
|
-
import {
|
|
72
|
-
import {
|
|
73
|
-
import {
|
|
74
|
-
import {
|
|
75
|
-
import {
|
|
76
|
-
import {
|
|
77
|
-
import {
|
|
78
|
-
import {
|
|
79
|
-
import {
|
|
80
|
-
import {
|
|
81
|
-
import {
|
|
82
|
-
import {
|
|
83
|
-
import {
|
|
84
|
-
import {
|
|
85
|
-
import {
|
|
86
|
-
import {
|
|
87
|
-
import {
|
|
88
|
-
import {
|
|
89
|
-
import {
|
|
90
|
-
import {
|
|
91
|
-
import {
|
|
92
|
-
import {
|
|
93
|
-
import {
|
|
94
|
-
import {
|
|
95
|
-
import {
|
|
96
|
-
import {
|
|
97
|
-
import {
|
|
98
|
-
import {
|
|
99
|
-
import {
|
|
100
|
-
import {
|
|
101
|
-
import {
|
|
102
|
-
|
|
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, getCharFromToken as Xn, getCharIndex as Zn, isColorTile as Qn, messageToGrid as $n, messageToText as er, parseLine as tr, resolveCode62Glyph as nr, tokensEqual as rr } from "./lib/board-characters.js";
|
|
66
|
+
import { BoardTeaser as ir } from "./components/board/board-teaser.js";
|
|
67
|
+
import { BoardBackdrop as ar } from "./components/board/board-backdrop.js";
|
|
68
|
+
import { WizardShell as or } from "./components/wizard/wizard-shell.js";
|
|
69
|
+
import { DEVICE_DIMENSIONS as sr, MAX_NOTES_PER_AXIS as cr, NOTE_COLS as lr, NOTE_ROWS as ur, isNoteArray as dr, noteArrayDimensions as fr, resolveDimensions as pr } from "./lib/board-dimensions.js";
|
|
70
|
+
import { BoardDisplay as mr, FLAP_SPEED_PRESETS as hr, deriveFlapTiming as gr, resolveFlapSpeed as _r } from "./components/board/board-display.js";
|
|
71
|
+
import { ScaledBoardDisplay as vr } from "./components/board/scaled-board-display.js";
|
|
72
|
+
import { StaticBoardDisplay as yr } from "./components/board/static-board-display.js";
|
|
73
|
+
import { DEFAULT_SHAPE_LABELS as br, previewLabel as xr, previewLabels as Sr, previewMessage as Cr } from "./lib/board-previews.js";
|
|
74
|
+
import { BarList as wr } from "./components/data/bar-list.js";
|
|
75
|
+
import { StatStrip as Tr, StatStripItem as Er } from "./components/data/stat-strip.js";
|
|
76
|
+
import { BoardShowcase as Dr, DEFAULT_SHOWCASE_LABELS as Or } from "./components/plugin/board-showcase.js";
|
|
77
|
+
import { PLUGIN_CATEGORIES as kr, PluginCategoryBadge as Ar } from "./components/plugin/plugin-category-badge.js";
|
|
78
|
+
import { ScaledBoardTeaser as jr } from "./components/plugin/scaled-board-teaser.js";
|
|
79
|
+
import { PluginCard as Mr } from "./components/plugin/plugin-card.js";
|
|
80
|
+
import { BOARD_CODE_TO_COLOR as Nr, BOARD_COLOR_CODES as Pr, CURSOR_ANCHOR as Fr, DEFAULT_BOARD_LINES as Ir, DEFAULT_BOARD_WIDTH as Lr, FILL_SPACE_REPEAT_VAR as Rr, FILL_SPACE_VAR as zr } from "./components/editor/constants.js";
|
|
81
|
+
import { NodeViewInjectionProvider as Br, useNodeViewInjection as Vr } from "./components/editor/node-views/node-view-context.js";
|
|
82
|
+
import { ColorTileNodeView as Hr, DEFAULT_COLOR_TILE_NODE_VIEW_LABELS as Ur } from "./components/editor/node-views/color-tile-node-view.js";
|
|
83
|
+
import { ColorTileNode as Wr } from "./components/editor/extensions/color-tile-node.js";
|
|
84
|
+
import { DEFAULT_FILL_SPACE_NODE_VIEW_LABELS as Gr, FillSpaceNodeView as Kr } from "./components/editor/node-views/fill-space-node-view.js";
|
|
85
|
+
import { FillSpaceNode as qr } from "./components/editor/extensions/fill-space-node.js";
|
|
86
|
+
import { DEFAULT_FORMULA_NODE_VIEW_LABELS as Jr, FormulaNodeView as Yr } from "./components/editor/node-views/formula-node-view.js";
|
|
87
|
+
import { FormulaNode as Xr } from "./components/editor/extensions/formula-node.js";
|
|
88
|
+
import { LineNavigation as Zr } from "./components/editor/extensions/line-navigation.js";
|
|
89
|
+
import { SingleParagraphDoc as Qr } from "./components/editor/extensions/single-paragraph-doc.js";
|
|
90
|
+
import { TrailingNewline as $r } from "./components/editor/extensions/trailing-newline.js";
|
|
91
|
+
import { DEFAULT_VARIABLE_NODE_VIEW_LABELS as ei, VariableNodeView as ti } from "./components/editor/node-views/variable-node-view.js";
|
|
92
|
+
import { VariableNode as ni } from "./components/editor/extensions/variable-node.js";
|
|
93
|
+
import { DEFAULT_WRAPPED_TEXT_VIEW_LABELS as ri, WrappedTextView as ii } from "./components/editor/node-views/wrapped-text-view.js";
|
|
94
|
+
import { WrappedTextNode as ai } from "./components/editor/extensions/wrapped-text-node.js";
|
|
95
|
+
import { ColorPickerContent as oi, DEFAULT_COLOR_PICKER_LABELS as si } from "./components/editor/color-picker-content.js";
|
|
96
|
+
import { DRAW_CHARS as ci, brushToCell as li, cellsToLine as ui, isPositionalLine as di, lineToCells as fi, paintLine as pi, renderPositionalLine as mi } from "./components/editor/utils/draw-mode.js";
|
|
97
|
+
import { DEFAULT_DRAW_CHAR_PICKER_LABELS as hi, DrawCharPickerContent as gi } from "./components/editor/draw-char-picker-content.js";
|
|
98
|
+
import { DEFAULT_FORMATTING_PICKER_LABELS as _i, FormattingPickerContent as vi } from "./components/editor/formatting-picker-content.js";
|
|
99
|
+
import { DEFAULT_TOOLBAR_DROPDOWN_LABELS as yi, ToolbarDropdown as bi } from "./components/editor/toolbar-dropdown.js";
|
|
100
|
+
import { parseLineContent as xi, parseTemplateSimple as Si, serializeTemplateSimple as Ci } from "./components/editor/utils/serialization.js";
|
|
101
|
+
import { insertTemplateContent as wi } from "./components/editor/utils/insertion.js";
|
|
102
|
+
import { DEFAULT_TEMPLATE_EDITOR_TOOLBAR_LABELS as Ti, TemplateEditorToolbar as Ei } from "./components/editor/template-editor-toolbar.js";
|
|
103
|
+
import { buildStrokeTransaction as Di, lineRanges as Oi } from "./components/editor/utils/stroke-transaction.js";
|
|
104
|
+
import { DEFAULT_TEMPLATE_EDITOR_LABELS as ki, TemplateEditor as Ai } from "./components/editor/template-editor.js";
|
|
105
|
+
import { DEFAULT_FILTER_PICKER_LABELS as ji, FilterPickerContent as Mi } from "./components/editor/filter-picker-content.js";
|
|
106
|
+
import { DEFAULT_VARIABLE_PICKER_LABELS as Ni, VariablePickerContent as Pi, createLucideIconResolver as Fi, getPluginsWithNestedArrays as Ii } from "./components/editor/variable-picker-content.js";
|
|
107
|
+
import { calculateLineLength as Li, getOverflowAmount as Ri, willOverflow as zi } 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, Nr as BOARD_CODE_TO_COLOR, Vn as BOARD_COLORS, Pr as BOARD_COLOR_CODES, T as Badge, wr as BarList, ar as BoardBackdrop, mr as BoardDisplay, sn as BoardIcon, cn as BoardSelector, Dr as BoardShowcase, ir 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, Fr 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, oi as ColorPickerContent, Wr as ColorTileNode, Hr as ColorTileNodeView, Ir as DEFAULT_BOARD_LINES, Lr as DEFAULT_BOARD_WIDTH, si as DEFAULT_COLOR_PICKER_LABELS, Ur as DEFAULT_COLOR_TILE_NODE_VIEW_LABELS, hi as DEFAULT_DRAW_CHAR_PICKER_LABELS, Gr as DEFAULT_FILL_SPACE_NODE_VIEW_LABELS, ji as DEFAULT_FILTER_PICKER_LABELS, _i as DEFAULT_FORMATTING_PICKER_LABELS, Jr as DEFAULT_FORMULA_NODE_VIEW_LABELS, br as DEFAULT_SHAPE_LABELS, Or as DEFAULT_SHOWCASE_LABELS, ki as DEFAULT_TEMPLATE_EDITOR_LABELS, Ti as DEFAULT_TEMPLATE_EDITOR_TOOLBAR_LABELS, yi as DEFAULT_TOOLBAR_DROPDOWN_LABELS, ei as DEFAULT_VARIABLE_NODE_VIEW_LABELS, Ni as DEFAULT_VARIABLE_PICKER_LABELS, ri as DEFAULT_WRAPPED_TEXT_VIEW_LABELS, sr as DEVICE_DIMENSIONS, ci 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, gi 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, Rr as FILL_SPACE_REPEAT_VAR, zr as FILL_SPACE_VAR, hr as FLAP_SPEED_PRESETS, rt as FadeContent, yn as FiestaIcon, bn as FiestaLogo, qr as FillSpaceNode, Kr as FillSpaceNodeView, Mi as FilterPickerContent, z as Flex, vi as FormattingPickerContent, Xr as FormulaNode, Yr 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, Zr as LineNavigation, He as List, Ue as ListItem, cr as MAX_NOTES_PER_AXIS, Sn as MainContent, v as MediaFrame, y as MediaFrameBar, b as MediaFrameMedia, lr as NOTE_COLS, ur as NOTE_ROWS, Cn as NavList, wn as NavListItem, Tn as NavListLink, En as NavListSection, Dn as NavListSectionContent, On as NavListSectionTrigger, Br as NodeViewInjectionProvider, kn as PAGE_HUES, kr as PLUGIN_CATEGORIES, An as PageHeader, jn as PageIconGradientDefs, Nn as PageLayout, Pn as PageToolbar, Mr as PluginCard, Ar as PluginCategoryBadge, Me as Popover, Ne as PopoverClose, Pe as PopoverContent, Fe as PopoverDescription, Ie as PopoverTitle, Le as PopoverTrigger, vr as ScaledBoardDisplay, jr 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, Qr as SingleParagraphDoc, it as Skeleton, In as SkipToContent, _t as Slider, A as Spinner, Ut as Stack, Tr as StatStrip, Er as StatStripItem, yr 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, Ai as TemplateEditor, Ei 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, bi as ToolbarDropdown, tn as Tooltip, nn as TooltipContent, rn as TooltipProvider, an as TooltipTrigger, $r as TrailingNewline, ni as VariableNode, ti as VariableNodeView, Pi as VariablePickerContent, Rn as WizardProgress, or as WizardShell, ai as WrappedTextNode, ii as WrappedTextView, w as alertVariants, E as badgeVariants, li as brushToCell, Di as buildStrokeTransaction, N as buttonVariants, Li as calculateLineLength, ui as cellsToLine, O as chipVariants, e as cn, Fi as createLucideIconResolver, gr as deriveFlapTiming, B as flexVariants, Gn as getBoardColor, Xn as getCharFromToken, Zn as getCharIndex, Ri as getOverflowAmount, Ii as getPluginsWithNestedArrays, H as gridVariants, Ve as headingVariants, g as iconTileVariants, wi as insertTemplateContent, Qn as isColorTile, dr as isNoteArray, di as isPositionalLine, Kn as isValidBoardColor, Oi as lineRanges, fi as lineToCells, At as listTimezones, We as listVariants, $n as messageToGrid, er as messageToText, fr as noteArrayDimensions, Mn as pageHue, pi as paintLine, tr as parseLine, xi as parseLineContent, Si as parseTemplateSimple, xr as previewLabel, Sr as previewLabels, Cr as previewMessage, mi as renderPositionalLine, nr as resolveCode62Glyph, qn as resolveColorCode, pr as resolveDimensions, _r as resolveFlapSpeed, zt as segmentedControlItemVariants, Bt as segmentedControlVariants, Ci 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, rr as tokensEqual, Vr as useNodeViewInjection, Re as usePopoverClose, zi as willOverflow };
|
|
@@ -47,12 +47,37 @@ export declare function getCharFromToken(token: BoardToken): string;
|
|
|
47
47
|
* single brackets. End tags (`{/red}`, `{/}`) render nothing.
|
|
48
48
|
*/
|
|
49
49
|
export declare function parseLine(line: string, maxTokens?: number): BoardToken[];
|
|
50
|
+
/**
|
|
51
|
+
* Which glyph a board's code-62 flap physically carries.
|
|
52
|
+
*
|
|
53
|
+
* Code 62 is one character code with two possible flaps. Vestaboard shipped
|
|
54
|
+
* every Flagship with a degree flap until 2026, when they replaced it with a
|
|
55
|
+
* heart on newly-manufactured units ("Every new Vestaboard purchased will ship
|
|
56
|
+
* with the heart in place of the degree symbol"). Note has always carried the
|
|
57
|
+
* heart. So `deviceType` alone no longer says what a board draws, and nothing
|
|
58
|
+
* queryable distinguishes a degree-era Flagship from a heart-era one — only the
|
|
59
|
+
* owner knows. See FiestaBoard#1657.
|
|
60
|
+
*
|
|
61
|
+
* This is display-only. Both glyphs encode to code 62 on the wire; nothing here
|
|
62
|
+
* changes what is sent to a board.
|
|
63
|
+
*/
|
|
64
|
+
export type Code62Glyph = "degree" | "heart";
|
|
65
|
+
/**
|
|
66
|
+
* Decide which glyph a board draws for code 62.
|
|
67
|
+
*
|
|
68
|
+
* Note and note-array hardware only ever shipped the heart flap, so their glyph
|
|
69
|
+
* is a property of the device and `code62Glyph` is ignored for them. Flagship is
|
|
70
|
+
* the ambiguous one, and the caller has to say: unset means `"degree"`, the
|
|
71
|
+
* glyph every Flagship carried before the hardware change, so a caller that has
|
|
72
|
+
* not been taught about the new flap keeps rendering exactly as it did.
|
|
73
|
+
*/
|
|
74
|
+
export declare function resolveCode62Glyph(deviceType: string, code62Glyph?: Code62Glyph): Code62Glyph;
|
|
50
75
|
/**
|
|
51
76
|
* Convert a message string to a rows×cols grid of tokens.
|
|
52
|
-
* Lines are split on `\n`, truncated/padded to the grid, and
|
|
53
|
-
*
|
|
77
|
+
* Lines are split on `\n`, truncated/padded to the grid, and code 62 draws as
|
|
78
|
+
* the glyph {@link resolveCode62Glyph} picks for this board.
|
|
54
79
|
*/
|
|
55
|
-
export declare function messageToGrid(message: string, rows: number, cols: number, deviceType?: string): BoardToken[][];
|
|
80
|
+
export declare function messageToGrid(message: string, rows: number, cols: number, deviceType?: string, code62Glyph?: Code62Glyph): BoardToken[][];
|
|
56
81
|
/**
|
|
57
82
|
* The plain text a board draws, for accessible names (issue #205).
|
|
58
83
|
*
|
|
@@ -69,11 +94,12 @@ export declare function messageToGrid(message: string, rows: number, cols: numbe
|
|
|
69
94
|
* (they occupy a cell but say nothing), lines join with a space, and runs of
|
|
70
95
|
* whitespace collapse so a half-empty board does not announce a long silence.
|
|
71
96
|
*
|
|
72
|
-
* `deviceType`
|
|
73
|
-
*
|
|
74
|
-
* something the board is not
|
|
97
|
+
* `deviceType` and `code62Glyph` are taken for the same reason
|
|
98
|
+
* {@link messageToGrid} takes them: they decide whether `°` draws as a heart,
|
|
99
|
+
* and a name that said "degree" would describe something the board is not
|
|
100
|
+
* showing.
|
|
75
101
|
*
|
|
76
102
|
* Returns `""` for a message that draws no text at all — a color-only board —
|
|
77
103
|
* so callers can fall back to a generic name instead of a dangling prefix.
|
|
78
104
|
*/
|
|
79
|
-
export declare function messageToText(message: string, deviceType?: string): string;
|
|
105
|
+
export declare function messageToText(message: string, deviceType?: string, code62Glyph?: Code62Glyph): string;
|
|
@@ -131,28 +131,31 @@ function u(t, n = Infinity) {
|
|
|
131
131
|
return r;
|
|
132
132
|
}
|
|
133
133
|
function d(e, t) {
|
|
134
|
-
return
|
|
134
|
+
return e === "note" || e === "note_array" ? "heart" : t ?? "degree";
|
|
135
|
+
}
|
|
136
|
+
function f(e, t) {
|
|
137
|
+
return t === "heart" && e.type === "char" && e.value === "°" ? {
|
|
135
138
|
type: "char",
|
|
136
139
|
value: "♥"
|
|
137
140
|
} : e;
|
|
138
141
|
}
|
|
139
|
-
function
|
|
140
|
-
let
|
|
142
|
+
function p(e, t, n, i = "flagship", a) {
|
|
143
|
+
let o = e.split("\n"), s = [], c = d(i, a);
|
|
141
144
|
for (let e = 0; e < t; e++) {
|
|
142
|
-
let t = u(
|
|
143
|
-
for (let e = 0; e < n; e++) e < t.length ? i.push(
|
|
144
|
-
|
|
145
|
+
let t = u(o[e] || "", n), i = [];
|
|
146
|
+
for (let e = 0; e < n; e++) e < t.length ? i.push(f(t[e], c)) : i.push(r);
|
|
147
|
+
s.push(i);
|
|
145
148
|
}
|
|
146
|
-
return
|
|
149
|
+
return s;
|
|
147
150
|
}
|
|
148
|
-
function
|
|
149
|
-
let
|
|
151
|
+
function m(e, t = "flagship", n) {
|
|
152
|
+
let r = d(t, n);
|
|
150
153
|
return e.split("\n").map((e) => u(e).map((e) => {
|
|
151
|
-
let t =
|
|
154
|
+
let t = f(e, r);
|
|
152
155
|
return t.type === "char" ? t.value : " ";
|
|
153
156
|
}).join("")).join(" ").replace(/\s+/g, " ").trim();
|
|
154
157
|
}
|
|
155
158
|
//#endregion
|
|
156
|
-
export { t as BOARD_CHARS, n as EXTRA_CHARS, l as getCharFromToken, c as getCharIndex, o as isColorTile,
|
|
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 };
|
|
157
160
|
|
|
158
161
|
//# sourceMappingURL=board-characters.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board-characters.js","names":[],"sources":["../../src/lib/board-characters.ts"],"mappings":";;AAuBA,IAAa,IAAc;CACzB;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,GAKa,IAAuC,OAAO,OAAO,OAAO,OAAO,IAAI,GAAG,EACrF,KAAK,GACP,CAAC,GAQK,IAA0B,OAAO,OAAO;CAAE,MAAM;CAAQ,OAAO;AAAI,CAAC;AAG1E,SAAgB,EAAY,GAAe,GAAwB;CAIjE,OAHI,EAAE,SAAS,EAAE,OACb,EAAE,SAAS,UAAU,EAAE,SAAS,SAAe,EAAE,UAAU,EAAE,QAC7D,EAAE,SAAS,WAAW,EAAE,SAAS,WAAgB,EAAE,SAAS,EAAE,OAFpC;AAIhC;AAKA,IAAM,oBAAsB,IAAI,IAAI;CAAC;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;AAAI,CAAC,GAG7E,KAAe,MACnB,EAAoB,IAAI,CAAI,GAO/B,oBAAa,IAAI,IAAoB;AAC3C,KAAK,IAAI,IAAI,GAAG,IAAI,EAAY,QAAQ,KAAK;CAC3C,IAAM,IAAO,EAAY;CACzB,AAAK,EAAW,IAAI,CAAI,KAAG,EAAW,IAAI,GAAM,CAAC;AACnD;AAGA,SAAgB,EAAa,GAAsB;CACjD,IAAM,IAAQ,EAAW,IAAI,CAAI;CACjC,OAAO,MAAU,KAAA,IAAoB,IAAR;AAC/B;AAGA,SAAgB,EAAiB,GAA2B;CAI1D,OAHI,EAAM,SAAS,UACV,EAAM,OAER,EAAM;AACf;AASA,SAAgB,EAAU,GAAc,IAAoB,UAAwB;CAClF,IAAM,IAAuB,CAAC,GAC1B,IAAI;CAER,OAAO,IAAI,EAAK,UAAU,EAAO,SAAS,IAAW;EAGnD,IAAI,EAAK,OAAO,KAAK;GACnB,IAAM,IAAe,EAAK,QAAQ,KAAK,CAAC;GACxC,IAAI,MAAiB,IAAI;IACvB,IAAM,IAAU,EAAK,UAAU,IAAI,GAAG,CAAY;IAGlD,IAAI,EAAQ,WAAW,GAAG,GAAG;KAE3B,IAAI,IAAe;KACnB;IACF;IAGA,IAAM,IAAe,EAAQ,YAAY,GAErC,IAA2B;IAO/B,IANI,EAAgB,KAClB,IAAY,IACH,EAAgB,OACzB,IAAY,IAGV,GAAW;KAEb,AADA,EAAO,KAAK;MAAE,MAAM;MAAS,MAAM;KAAU,CAAC,GAC9C,IAAI,IAAe;KACnB;IACF;GAEF;EACF;EAIA,AADA,EAAO,KAAK;GAAE,MAAM;GAAQ,OAAO,EAAK,EAAE,CAAC,YAAY;EAAE,CAAC,GAC1D;CACF;CAEA,OAAO;AACT;AASA,SAAS,
|
|
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
|
+
"version": "5.4.0",
|
|
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",
|