@lolmath/ui 9.6.0 → 9.7.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/dist/index.css CHANGED
@@ -1646,6 +1646,83 @@
1646
1646
  }
1647
1647
  }
1648
1648
  }
1649
+ @layer lol {
1650
+ ._previewButton_sepr8_2 {
1651
+ appearance: none;
1652
+ margin: 0;
1653
+ padding: 0;
1654
+ border: 0;
1655
+ background: none;
1656
+
1657
+ /*
1658
+ * Not `pointer`: the preview opens on hover, so a hand would promise a
1659
+ * click that does nothing, and the term is not a link. This is the arrow
1660
+ * a `<button>` gets from the browser anyway, spelled out because a host's
1661
+ * CSS reset may have decided otherwise.
1662
+ */
1663
+ cursor: default;
1664
+
1665
+ /*
1666
+ * The term belongs to the sentence around it, so everything but the face
1667
+ * is inherited: size, weight, leading and colour come from the paragraph.
1668
+ * `font: inherit` also resets the family, hence the override after it.
1669
+ */
1670
+ font: inherit;
1671
+ font-family: var(--lol-font-family-spiegel);
1672
+ /* A button is an inline-block; without this it rides above the text. */
1673
+ vertical-align: baseline;
1674
+ text-align: inherit;
1675
+
1676
+ color: var(--lol-color-gold-100);
1677
+
1678
+ /*
1679
+ * An underline rather than a border-bottom: it follows the term when it
1680
+ * wraps, sits under the descenders instead of clipping them, and can go
1681
+ * from dashed to solid without moving anything on the line.
1682
+ */
1683
+ text-decoration: underline dashed var(--lol-preview-underline-color);
1684
+ text-decoration-thickness: 1px;
1685
+ text-underline-offset: 0.25em;
1686
+
1687
+ --lol-preview-underline-color: var(--lol-color-gold-400);
1688
+
1689
+ transition: color, text-decoration-color;
1690
+ transition-duration: 0.3s;
1691
+
1692
+ outline-style: solid;
1693
+ outline-color: var(--lol-color-gold-400);
1694
+ outline-offset: 2px;
1695
+
1696
+ &:not(:focus-visible) {
1697
+ outline: none;
1698
+ }
1699
+
1700
+ &:hover,
1701
+ &:focus-visible {
1702
+ --lol-preview-underline-color: var(--lol-color-gold-200);
1703
+ }
1704
+
1705
+ /*
1706
+ * Once the preview is open the dashes have done their job — they hint that
1707
+ * there is more to read, and there now is — so they close up into a rule.
1708
+ * `aria-expanded` is set by whichever trigger wraps the button, so this
1709
+ * also covers a `DialogTrigger` used as a toggle tip.
1710
+ */
1711
+ &[aria-expanded="true"] {
1712
+ --lol-preview-underline-color: var(--lol-color-gold-200);
1713
+ text-decoration-style: solid;
1714
+ }
1715
+
1716
+ &:active {
1717
+ color: var(--lol-color-gold-300);
1718
+ }
1719
+
1720
+ &:disabled {
1721
+ color: var(--lol-color-grey-150);
1722
+ --lol-preview-underline-color: var(--lol-color-grey-150);
1723
+ }
1724
+ }
1725
+ }
1649
1726
  @layer lol {
1650
1727
  ._wrapper_1jgc6_2 {
1651
1728
  display: flex;
package/dist/index.d.mts CHANGED
@@ -223,6 +223,41 @@ declare function NumberField({ inputProps, groupProps, children, preset, size, .
223
223
  declare function Popover({ children, className, ...props }: PopoverProps): import("react").JSX.Element;
224
224
  declare function PopoverBody({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): import("react").JSX.Element;
225
225
  //#endregion
226
+ //#region src/components/preview-trigger.d.ts
227
+ declare const previewButton: (props?: ({
228
+ class?: import("cva").ClassValue;
229
+ className?: never;
230
+ } | {
231
+ class?: never;
232
+ className?: import("cva").ClassValue;
233
+ }) | undefined) => string;
234
+ type PreviewButtonProps = ButtonProps & {
235
+ ref?: Ref<HTMLButtonElement>;
236
+ };
237
+ /**
238
+ * A term inside running text that reveals a preview: it inherits the size,
239
+ * weight and leading of the sentence it sits in and marks itself with a dashed
240
+ * gold underline, which goes solid while the preview is open.
241
+ *
242
+ * Use it as the trigger of a `PreviewTrigger` for a term the reader may not
243
+ * know — an item, a rune, a stat — where a `Button` would interrupt the
244
+ * sentence and a plain `<span>` would give a keyboard or screen reader user
245
+ * nothing to act on. It is a real button, so it also works as the trigger of a
246
+ * `DialogTrigger` (a toggle tip). When the term should also navigate
247
+ * somewhere, use a `ButtonLink` or apply the exported `previewButton` styles
248
+ * to a `Link` instead — a preview is never the only way to reach content.
249
+ *
250
+ * ```tsx
251
+ * <PreviewTrigger>
252
+ * <PreviewButton>Doran's Blade</PreviewButton>
253
+ * <Popover>
254
+ * <PopoverBody>…</PopoverBody>
255
+ * </Popover>
256
+ * </PreviewTrigger>
257
+ * ```
258
+ */
259
+ declare function PreviewButton({ children, className, ref, ...props }: PreviewButtonProps): import("react").JSX.Element;
260
+ //#endregion
226
261
  //#region src/components/progress-bar.d.ts
227
262
  interface ProgressBarProps$1 extends Omit<ProgressBarProps, "children"> {
228
263
  label?: string;
@@ -795,5 +830,5 @@ interface VerticalTableProps<T> extends Omit<TableHTMLAttributes<HTMLTableElemen
795
830
  */
796
831
  declare function VerticalTable<T>({ align, className, fields, recordHeader, recordKey, records, ...props }: VerticalTableProps<T>): import("react").JSX.Element;
797
832
  //#endregion
798
- export { type AsyncListData, type AsyncListOptions, Autocomplete, AutocompleteContext, AutocompleteStateContext, Breadcrumb, Breadcrumbs, Button, ButtonLink, ButtonPreset, ButtonShape, ButtonSize, Calendar, CalendarCell, CalendarGrid, CalendarGridHeader, CalendarHeaderCell, CalendarIcon, CalendarProps, Checkbox, CheckboxButton, CheckboxField, Collection, DateField, DateInput, DatePicker, DatePickerButton, DatePickerPopover, DateRangePicker, DateSegment, type DateValue, Dialog, DialogButtons, DialogHeading, DialogTrigger, Disclosure, DisclosureButton, DisclosureGroup, DisclosurePanel, Divider, type DragAndDropHooks, type DragAndDropOptions, type DropItem, type DropTarget, FieldError, Focusable, GridLayout, Group, GroupInput, GroupProps, GroupSeparator, Heading, HeadingColor, HeadingElement, type Key, Label, ListBoxItem, type ListData, ListLayout, Menu, MenuHeader, MenuItem, type MenuItemProps, MenuPopover, type MenuProps, MenuSection, MenuSeparator, MenuTrigger, MenuVirtualizer, Modal, MultipleSelect, MultipleSelectProps, NumberField, PickerDateInput, Popover, PopoverBody, Pressable, PreviewTrigger, type PreviewTriggerProps, ProgressBar, Radio, RadioButton, RadioField, RadioGroup, RangeCalendar, RangeCalendarProps, ResizableTableContainer, ResizableTableContainerProps, RouterProvider, SearchField, Select, SelectButton, SelectListBox, SelectListBoxItem, SelectPopover, SelectValue, SelectVirtualizer, type Selection, Size, Slider, SliderOutput, Sonner, SonnerProps, type SortDescriptor, type SortDirection, Spinner, SubmenuTrigger, Switch, SwitchButton, SwitchField, Tab, TabList, TabPanel, Table, TableAlign, TableBody, TableBodyProps, TableCell, TableCellProps, TableColumn, TableColumnProps, TableColumnResizer, TableColumnResizerProps, TableDropIndicator, TableDropIndicatorProps, TableFooter, TableFooterProps, TableHeader, TableHeaderProps, TableLayout, TableLoadMoreItem, TableLoadMoreItemProps, TableProps, TableRow, TableRowProps, Tabs, Tag, TagGroup, TagGroupProps, TagList, TagListProps, TagProps, Text, TextArea, TextColor, type TextDropItem, TextElement, TextField, TextPreset, TimeField, type TimeValue, ToastVariant, ToggleButton, ToggleButtonGroup, ToggleButtonGroupProps, ToggleButtonPreset, Token, TokenField, type TokenFieldValue, TokenInput, TokenInputProps, TokenProps, Toolbar, ToolbarProps, ToolbarSeparator, ToolbarSeparatorProps, Tree, TreeItem, TreeItemContent, TreeItemContentProps, TreeItemProps, TreeLoadMoreItem, TreeLoadMoreItemProps, TreeProps, UnstyledPopover, VerticalTable, VerticalTableAlign, VerticalTableField, VerticalTableProps, Virtualizer, WaterfallLayout, button, dateGroup, dateInput, group, heading, isTextDropItem, select, sonner, table, tableCell, tableColumn, tableRow, tagGroup, tagList, text, textField, token, tokenInput, tree, treeItem, useAsyncList, useDragAndDrop, useFilter, useListData, useTableDragAndDrop, verticalTable, verticalTableCell, verticalTableRecordHeader };
833
+ export { type AsyncListData, type AsyncListOptions, Autocomplete, AutocompleteContext, AutocompleteStateContext, Breadcrumb, Breadcrumbs, Button, ButtonLink, ButtonPreset, ButtonShape, ButtonSize, Calendar, CalendarCell, CalendarGrid, CalendarGridHeader, CalendarHeaderCell, CalendarIcon, CalendarProps, Checkbox, CheckboxButton, CheckboxField, Collection, DateField, DateInput, DatePicker, DatePickerButton, DatePickerPopover, DateRangePicker, DateSegment, type DateValue, Dialog, DialogButtons, DialogHeading, DialogTrigger, Disclosure, DisclosureButton, DisclosureGroup, DisclosurePanel, Divider, type DragAndDropHooks, type DragAndDropOptions, type DropItem, type DropTarget, FieldError, Focusable, GridLayout, Group, GroupInput, GroupProps, GroupSeparator, Heading, HeadingColor, HeadingElement, type Key, Label, ListBoxItem, type ListData, ListLayout, Menu, MenuHeader, MenuItem, type MenuItemProps, MenuPopover, type MenuProps, MenuSection, MenuSeparator, MenuTrigger, MenuVirtualizer, Modal, MultipleSelect, MultipleSelectProps, NumberField, PickerDateInput, Popover, PopoverBody, Pressable, PreviewButton, PreviewButtonProps, PreviewTrigger, type PreviewTriggerProps, ProgressBar, Radio, RadioButton, RadioField, RadioGroup, RangeCalendar, RangeCalendarProps, ResizableTableContainer, ResizableTableContainerProps, RouterProvider, SearchField, Select, SelectButton, SelectListBox, SelectListBoxItem, SelectPopover, SelectValue, SelectVirtualizer, type Selection, Size, Slider, SliderOutput, Sonner, SonnerProps, type SortDescriptor, type SortDirection, Spinner, SubmenuTrigger, Switch, SwitchButton, SwitchField, Tab, TabList, TabPanel, Table, TableAlign, TableBody, TableBodyProps, TableCell, TableCellProps, TableColumn, TableColumnProps, TableColumnResizer, TableColumnResizerProps, TableDropIndicator, TableDropIndicatorProps, TableFooter, TableFooterProps, TableHeader, TableHeaderProps, TableLayout, TableLoadMoreItem, TableLoadMoreItemProps, TableProps, TableRow, TableRowProps, Tabs, Tag, TagGroup, TagGroupProps, TagList, TagListProps, TagProps, Text, TextArea, TextColor, type TextDropItem, TextElement, TextField, TextPreset, TimeField, type TimeValue, ToastVariant, ToggleButton, ToggleButtonGroup, ToggleButtonGroupProps, ToggleButtonPreset, Token, TokenField, type TokenFieldValue, TokenInput, TokenInputProps, TokenProps, Toolbar, ToolbarProps, ToolbarSeparator, ToolbarSeparatorProps, Tree, TreeItem, TreeItemContent, TreeItemContentProps, TreeItemProps, TreeLoadMoreItem, TreeLoadMoreItemProps, TreeProps, UnstyledPopover, VerticalTable, VerticalTableAlign, VerticalTableField, VerticalTableProps, Virtualizer, WaterfallLayout, button, dateGroup, dateInput, group, heading, isTextDropItem, previewButton, select, sonner, table, tableCell, tableColumn, tableRow, tagGroup, tagList, text, textField, token, tokenInput, tree, treeItem, useAsyncList, useDragAndDrop, useFilter, useListData, useTableDragAndDrop, verticalTable, verticalTableCell, verticalTableRecordHeader };
799
834
  //# sourceMappingURL=index.d.mts.map
package/dist/index.mjs CHANGED
@@ -1096,6 +1096,39 @@ function PopoverBody({ className, ...props }) {
1096
1096
  });
1097
1097
  }
1098
1098
  //#endregion
1099
+ //#region src/components/preview-trigger.tsx
1100
+ const previewButton = cva({ base: { "previewButton": "_previewButton_sepr8_2" }.previewButton });
1101
+ /**
1102
+ * A term inside running text that reveals a preview: it inherits the size,
1103
+ * weight and leading of the sentence it sits in and marks itself with a dashed
1104
+ * gold underline, which goes solid while the preview is open.
1105
+ *
1106
+ * Use it as the trigger of a `PreviewTrigger` for a term the reader may not
1107
+ * know — an item, a rune, a stat — where a `Button` would interrupt the
1108
+ * sentence and a plain `<span>` would give a keyboard or screen reader user
1109
+ * nothing to act on. It is a real button, so it also works as the trigger of a
1110
+ * `DialogTrigger` (a toggle tip). When the term should also navigate
1111
+ * somewhere, use a `ButtonLink` or apply the exported `previewButton` styles
1112
+ * to a `Link` instead — a preview is never the only way to reach content.
1113
+ *
1114
+ * ```tsx
1115
+ * <PreviewTrigger>
1116
+ * <PreviewButton>Doran's Blade</PreviewButton>
1117
+ * <Popover>
1118
+ * <PopoverBody>…</PopoverBody>
1119
+ * </Popover>
1120
+ * </PreviewTrigger>
1121
+ * ```
1122
+ */
1123
+ function PreviewButton({ children, className, ref, ...props }) {
1124
+ return /* @__PURE__ */ jsx(Button$1, {
1125
+ ref,
1126
+ ...props,
1127
+ className: composeRenderProps(className, (className) => previewButton({ className })),
1128
+ children
1129
+ });
1130
+ }
1131
+ //#endregion
1099
1132
  //#region src/components/progress-bar.module.css
1100
1133
  var progress_bar_module_default = {
1101
1134
  "wrapper": "_wrapper_1jgc6_2",
@@ -2116,6 +2149,6 @@ function VerticalTable({ align = "start", className, fields, recordHeader, recor
2116
2149
  });
2117
2150
  }
2118
2151
  //#endregion
2119
- export { Autocomplete, AutocompleteContext, AutocompleteStateContext, Breadcrumb, Breadcrumbs, Button, ButtonLink, Calendar, CalendarCell, CalendarGrid, CalendarGridHeader, CalendarHeaderCell, CalendarIcon, Checkbox, CheckboxButton, CheckboxField, Collection, DateField, DateInput, DatePicker, DatePickerButton, DatePickerPopover, DateRangePicker, DateSegment, Dialog, DialogButtons, DialogHeading, DialogTrigger, Disclosure, DisclosureButton, DisclosureGroup, DisclosurePanel, Divider, FieldError, Focusable, GridLayout, Group, GroupInput, GroupSeparator, Heading, Label, ListBoxItem, ListLayout, Menu, MenuHeader, MenuItem, MenuPopover, MenuSection, MenuSeparator, MenuTrigger, MenuVirtualizer, Modal, MultipleSelect, NumberField, PickerDateInput, Popover, PopoverBody, Pressable, PreviewTrigger, ProgressBar, Radio, RadioButton, RadioField, RadioGroup, RangeCalendar, ResizableTableContainer, RouterProvider, SearchField, Select, SelectButton, SelectListBox, SelectListBoxItem, SelectPopover, SelectValue, SelectVirtualizer, Size, Slider, SliderOutput, Sonner, Spinner, SubmenuTrigger, Switch, SwitchButton, SwitchField, Tab, TabList, TabPanel, Table, TableBody, TableCell, TableColumn, TableColumnResizer, TableDropIndicator, TableFooter, TableHeader, TableLayout, TableLoadMoreItem, TableRow, Tabs, Tag, TagGroup, TagList, Text, TextArea, TextField, TimeField, ToggleButton, ToggleButtonGroup, Token, TokenField, TokenFieldValue, TokenInput, Toolbar, ToolbarSeparator, Tree, TreeItem, TreeItemContent, TreeLoadMoreItem, UnstyledPopover, VerticalTable, Virtualizer, WaterfallLayout, button, dateGroup, dateInput, group, heading, isTextDropItem, select, sonner, table, tableCell, tableColumn, tableRow, tagGroup, tagList, text, textField, token, tokenInput, tree, treeItem, useAsyncList, useDragAndDrop, useFilter, useListData, useTableDragAndDrop, verticalTable, verticalTableCell, verticalTableRecordHeader };
2152
+ export { Autocomplete, AutocompleteContext, AutocompleteStateContext, Breadcrumb, Breadcrumbs, Button, ButtonLink, Calendar, CalendarCell, CalendarGrid, CalendarGridHeader, CalendarHeaderCell, CalendarIcon, Checkbox, CheckboxButton, CheckboxField, Collection, DateField, DateInput, DatePicker, DatePickerButton, DatePickerPopover, DateRangePicker, DateSegment, Dialog, DialogButtons, DialogHeading, DialogTrigger, Disclosure, DisclosureButton, DisclosureGroup, DisclosurePanel, Divider, FieldError, Focusable, GridLayout, Group, GroupInput, GroupSeparator, Heading, Label, ListBoxItem, ListLayout, Menu, MenuHeader, MenuItem, MenuPopover, MenuSection, MenuSeparator, MenuTrigger, MenuVirtualizer, Modal, MultipleSelect, NumberField, PickerDateInput, Popover, PopoverBody, Pressable, PreviewButton, PreviewTrigger, ProgressBar, Radio, RadioButton, RadioField, RadioGroup, RangeCalendar, ResizableTableContainer, RouterProvider, SearchField, Select, SelectButton, SelectListBox, SelectListBoxItem, SelectPopover, SelectValue, SelectVirtualizer, Size, Slider, SliderOutput, Sonner, Spinner, SubmenuTrigger, Switch, SwitchButton, SwitchField, Tab, TabList, TabPanel, Table, TableBody, TableCell, TableColumn, TableColumnResizer, TableDropIndicator, TableFooter, TableHeader, TableLayout, TableLoadMoreItem, TableRow, Tabs, Tag, TagGroup, TagList, Text, TextArea, TextField, TimeField, ToggleButton, ToggleButtonGroup, Token, TokenField, TokenFieldValue, TokenInput, Toolbar, ToolbarSeparator, Tree, TreeItem, TreeItemContent, TreeLoadMoreItem, UnstyledPopover, VerticalTable, Virtualizer, WaterfallLayout, button, dateGroup, dateInput, group, heading, isTextDropItem, previewButton, select, sonner, table, tableCell, tableColumn, tableRow, tagGroup, tagList, text, textField, token, tokenInput, tree, treeItem, useAsyncList, useDragAndDrop, useFilter, useListData, useTableDragAndDrop, verticalTable, verticalTableCell, verticalTableRecordHeader };
2120
2153
 
2121
2154
  //# sourceMappingURL=index.mjs.map