@scattered-light/loomiere-base-ui 0.9.0 → 0.10.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 +16 -1
- package/dist/{chunk-LQWPDLLQ.js → chunk-PV5YOQMN.js} +54 -3
- package/dist/chunk-PV5YOQMN.js.map +1 -0
- package/dist/custom/index.d.ts +1 -1
- package/dist/custom/index.js +1 -1
- package/dist/design-system/components/SideNav/README.md +73 -0
- package/dist/design-system/components/SideNav/preview.html +19 -0
- package/dist/design-system/components/bundle.js +7 -7
- package/dist/design-system/components/index.d.ts +1 -1
- package/dist/design-system/components/styles.css +241 -59
- package/dist/{index-DdHpYalU.d.ts → index-D88kSSlM.d.ts} +49 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/styles/components/Accordion.css +1 -1
- package/dist/styles/components/AlertDialog.css +1 -1
- package/dist/styles/components/Autocomplete.css +1 -1
- package/dist/styles/components/Avatar.css +1 -1
- package/dist/styles/components/Button.css +1 -1
- package/dist/styles/components/Checkbox.css +1 -1
- package/dist/styles/components/CheckboxGroup.css +1 -1
- package/dist/styles/components/Collapsible.css +1 -1
- package/dist/styles/components/Combobox.css +1 -1
- package/dist/styles/components/ContextMenu.css +1 -1
- package/dist/styles/components/Dialog.css +1 -1
- package/dist/styles/components/Drawer.css +1 -1
- package/dist/styles/components/Field.css +1 -1
- package/dist/styles/components/Fieldset.css +1 -1
- package/dist/styles/components/Form.css +1 -1
- package/dist/styles/components/Input.css +1 -1
- package/dist/styles/components/Menu.css +1 -1
- package/dist/styles/components/Menubar.css +1 -1
- package/dist/styles/components/Meter.css +1 -1
- package/dist/styles/components/NavigationMenu.css +1 -1
- package/dist/styles/components/NumberField.css +1 -1
- package/dist/styles/components/OTPField.css +1 -1
- package/dist/styles/components/Popover.css +1 -1
- package/dist/styles/components/PreviewCard.css +1 -1
- package/dist/styles/components/Progress.css +1 -1
- package/dist/styles/components/Radio.css +1 -1
- package/dist/styles/components/ScrollArea.css +1 -1
- package/dist/styles/components/Select.css +1 -1
- package/dist/styles/components/Separator.css +1 -1
- package/dist/styles/components/Slider.css +1 -1
- package/dist/styles/components/Switch.css +1 -1
- package/dist/styles/components/Tabs.css +1 -1
- package/dist/styles/components/Toast.css +1 -1
- package/dist/styles/components/Toggle.css +1 -1
- package/dist/styles/components/ToggleGroup.css +1 -1
- package/dist/styles/components/Toolbar.css +1 -1
- package/dist/styles/components/Tooltip.css +1 -1
- package/dist/styles/custom/AppBar.css +1 -1
- package/dist/styles/custom/Badge.css +1 -1
- package/dist/styles/custom/Collection.css +1 -1
- package/dist/styles/custom/CollectionPagination.css +1 -1
- package/dist/styles/custom/CollectionToolbar.css +1 -1
- package/dist/styles/custom/DataList.css +1 -1
- package/dist/styles/custom/DataTable.css +1 -1
- package/dist/styles/custom/DatePicker.css +1 -1
- package/dist/styles/custom/DescriptionList.css +1 -1
- package/dist/styles/custom/EditableList.css +1 -1
- package/dist/styles/custom/EmptyState.css +1 -1
- package/dist/styles/custom/ListDetail.css +1 -1
- package/dist/styles/custom/MoneyField.css +1 -1
- package/dist/styles/custom/PickerButton.css +1 -1
- package/dist/styles/custom/Sheet.css +1 -1
- package/dist/styles/custom/SideNav.css +181 -0
- package/dist/styles/custom/Splitter.css +1 -1
- package/dist/styles/custom/StatFigure.css +1 -1
- package/dist/styles/custom/Table.css +1 -1
- package/dist/styles/index.css +2 -1
- package/dist/styles/reset/accessibility.css +1 -1
- package/dist/styles/reset/reset-accessibility.css +1 -1
- package/dist/styles/reset/reset-tailwind.css +1 -1
- package/dist/styles/reset/reset.css +1 -1
- package/dist/styles/tailwind.css +2 -1
- package/package.json +2 -2
- package/dist/chunk-LQWPDLLQ.js.map +0 -1
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ Use Base UI as usual, with the class names the styles target, or the few wrapper
|
|
|
31
31
|
import {
|
|
32
32
|
Accordion, AlertDialog, Autocomplete, Avatar, Badge, Button, Calendar, Checkbox, CheckboxGroup, Collapsible,
|
|
33
33
|
AppBar, AppBarSpacer, Combobox, ContextMenu, DatePicker, DatePresets, DescriptionItem, DescriptionList, Dialog, Drawer, EmptyState, Field, Form, Input, ListDetail, Menu, Menubar, Meter, MoneyField, NumberField, PickerButton,
|
|
34
|
-
OTPField, Popover, PreviewCard, Progress, Radio, ScrollArea, Select, Separator, Sheet, Slider, Splitter, StatFigure, Switch,
|
|
34
|
+
OTPField, Popover, PreviewCard, Progress, Radio, ScrollArea, Select, Separator, Sheet, SideNav, SideNavGroup, SideNavItem, SideNavToggle, Slider, Splitter, StatFigure, Switch,
|
|
35
35
|
Tabs, Toast, Toggle, ToggleGroup, Toolbar, Tooltip, useListDetail,
|
|
36
36
|
} from '@scattered-light/loomiere-base-ui';
|
|
37
37
|
```
|
|
@@ -192,6 +192,21 @@ Totals in a plain table are rows: `<tr data-total="subtotal">` rules a line abov
|
|
|
192
192
|
|
|
193
193
|
`data-variant="segmented"` on a `ToggleGroup` joins its toggles in one outline (`toggle-group.segmented-border-color`, the rule color) and fills the pressed one solid (`fill.inverse`), for switching between a few views or modules.
|
|
194
194
|
|
|
195
|
+
### Side navigation: SideNav
|
|
196
|
+
|
|
197
|
+
`SideNav` is the column of links down the side of a workspace, named by `aria-label`. `SideNavItem` is a row (a link): `current` marks the page you are on, `count` shows a figure at the end, and a `disabled` row takes a `hint`. `SideNavGroup` adds a caps heading over a set of rows. `SideNavToggle` sits inside the `SideNav` on its edge and collapses it; the parent sets the column's width and must not clip it (`overflow: visible`).
|
|
198
|
+
|
|
199
|
+
```tsx
|
|
200
|
+
<SideNav aria-label="Entity navigation" collapsed={collapsed}>
|
|
201
|
+
<SideNavItem current href="/entity">Entity Dashboard</SideNavItem>
|
|
202
|
+
<SideNavItem count={5} href="/open">Open Items</SideNavItem>
|
|
203
|
+
<SideNavGroup label="Books">
|
|
204
|
+
<SideNavItem href="/accounts">Financial Accounts</SideNavItem>
|
|
205
|
+
</SideNavGroup>
|
|
206
|
+
<SideNavToggle collapsed={collapsed} onCollapsedChange={setCollapsed} />
|
|
207
|
+
</SideNav>
|
|
208
|
+
```
|
|
209
|
+
|
|
195
210
|
### Collection
|
|
196
211
|
|
|
197
212
|
Install the peer, then import the views from their own entry. `EditableList` does not need it, and comes from `./custom` like Badge.
|
|
@@ -3562,6 +3562,57 @@ var PickerButton = React10.forwardRef(function PickerButton2({ className, label,
|
|
|
3562
3562
|
/* @__PURE__ */ jsx("svg", { className: "PickerButtonIcon", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M6 9l6 6 6-6" }) })
|
|
3563
3563
|
] });
|
|
3564
3564
|
});
|
|
3565
|
+
var SideNav = React10.forwardRef(function SideNav2({ className, collapsed, children, ...props }, ref) {
|
|
3566
|
+
return /* @__PURE__ */ jsx("nav", { ref, className: cn("SideNav", className), "data-collapsed": collapsed ? "" : void 0, ...props, children });
|
|
3567
|
+
});
|
|
3568
|
+
var SideNavItem = React10.forwardRef(function SideNavItem2({ className, current, count, countTone, disabled, hint, children, href, onClick, ...props }, ref) {
|
|
3569
|
+
return /* @__PURE__ */ jsxs(
|
|
3570
|
+
"a",
|
|
3571
|
+
{
|
|
3572
|
+
ref,
|
|
3573
|
+
className: cn("SideNavItem", className),
|
|
3574
|
+
href: disabled ? void 0 : href ?? "#",
|
|
3575
|
+
"aria-current": current ? "page" : void 0,
|
|
3576
|
+
"aria-disabled": disabled ? true : void 0,
|
|
3577
|
+
"data-current": current ? "" : void 0,
|
|
3578
|
+
"data-disabled": disabled ? "" : void 0,
|
|
3579
|
+
onClick: disabled ? (event) => event.preventDefault() : onClick,
|
|
3580
|
+
...props,
|
|
3581
|
+
children: [
|
|
3582
|
+
/* @__PURE__ */ jsxs("span", { className: "SideNavItemText", children: [
|
|
3583
|
+
/* @__PURE__ */ jsx("span", { className: "SideNavItemLabel", children }),
|
|
3584
|
+
hint != null ? /* @__PURE__ */ jsx("span", { className: "SideNavItemHint", children: hint }) : null
|
|
3585
|
+
] }),
|
|
3586
|
+
count != null ? /* @__PURE__ */ jsx("span", { className: "SideNavItemCount", "data-tone": countTone === "quiet" ? "quiet" : void 0, children: count }) : null
|
|
3587
|
+
]
|
|
3588
|
+
}
|
|
3589
|
+
);
|
|
3590
|
+
});
|
|
3591
|
+
var SideNavGroup = React10.forwardRef(function SideNavGroup2({ className, label, children, ...props }, ref) {
|
|
3592
|
+
const labelId = React10.useId();
|
|
3593
|
+
return /* @__PURE__ */ jsxs("div", { ref, role: "group", "aria-labelledby": labelId, className: cn("SideNavGroup", className), ...props, children: [
|
|
3594
|
+
/* @__PURE__ */ jsx("div", { className: "SideNavGroupLabel", id: labelId, children: label }),
|
|
3595
|
+
children
|
|
3596
|
+
] });
|
|
3597
|
+
});
|
|
3598
|
+
var SideNavToggle = React10.forwardRef(function SideNavToggle2({ className, collapsed, onCollapsedChange, label, onClick, ...props }, ref) {
|
|
3599
|
+
return /* @__PURE__ */ jsx(
|
|
3600
|
+
"button",
|
|
3601
|
+
{
|
|
3602
|
+
ref,
|
|
3603
|
+
type: "button",
|
|
3604
|
+
className: cn("SideNavToggle", className),
|
|
3605
|
+
"aria-expanded": !collapsed,
|
|
3606
|
+
"aria-label": label ?? (collapsed ? "Expand navigation" : "Collapse navigation"),
|
|
3607
|
+
onClick: (event) => {
|
|
3608
|
+
onClick?.(event);
|
|
3609
|
+
if (!event.defaultPrevented) onCollapsedChange(!collapsed);
|
|
3610
|
+
},
|
|
3611
|
+
...props,
|
|
3612
|
+
children: /* @__PURE__ */ jsx("svg", { className: "SideNavToggleIcon", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "1.75", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: /* @__PURE__ */ jsx("path", { d: "M10 3.5 5.5 8l4.5 4.5" }) })
|
|
3613
|
+
}
|
|
3614
|
+
);
|
|
3615
|
+
});
|
|
3565
3616
|
var EditableListContext = React10.createContext(null);
|
|
3566
3617
|
function slug(value) {
|
|
3567
3618
|
return value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "") || "field";
|
|
@@ -3781,6 +3832,6 @@ var EditableList = {
|
|
|
3781
3832
|
Balance: EditableListBalance
|
|
3782
3833
|
};
|
|
3783
3834
|
|
|
3784
|
-
export { AppBar, AppBarSpacer, Badge, CURRENCY_SEARCH_THRESHOLD, Calendar, CurrencySelect, DatePicker, DatePresets, DescriptionItem, DescriptionList, Drawer, EditableList, Field, ListDetail, ListDetailDetail, ListDetailList, ListDetailRoot, MAX_MINOR_UNITS, MoneyField, MoneyFieldAffix, MoneyFieldGroup, MoneyFieldInput, MoneyFieldRoot, NumberField, PickerButton, Popover, Sheet, Splitter, SplitterHandle, SplitterPanel, SplitterRoot, StatFigure, addDays, addMonths, affixSide, applyKey, applyStored, ariaPercents, builtinPresets, clampDate, createPanels, cssSize, currencyName, currencySymbol, daysInMonth, defaultPresets, defaultWeekStartsOn, endOfWeek, formatDay, formatFull, formatMoney2 as formatMoney, fromMinorUnits, getCurrencyDigits, handleTarget, inclusiveDays, isValidCurrency, isoWeek, last30Days, last7Days, lastMonth, lastWeek, layoutOf, lengthBlockReason, measure, monthCells, moveFocusDate, nextMonth, nextWeek, normalizePaste, orderRange, parseDate, parseDecimalString, parseSize, presetInBounds, resetToDefault, resizeByDelta, resolvePreset, roundHalfExpand, roundingChangesValue, sameSelection, serializeSize, settle, sizeText, startOfWeek, syncPanels, thisMonth, thisQuarter, thisWeek, toDecimalString, toMinorUnits, today, todayDate, toggleCollapsed, tomorrow, useListDetail, valueText, yearToDate, yesterday };
|
|
3785
|
-
//# sourceMappingURL=chunk-
|
|
3786
|
-
//# sourceMappingURL=chunk-
|
|
3835
|
+
export { AppBar, AppBarSpacer, Badge, CURRENCY_SEARCH_THRESHOLD, Calendar, CurrencySelect, DatePicker, DatePresets, DescriptionItem, DescriptionList, Drawer, EditableList, Field, ListDetail, ListDetailDetail, ListDetailList, ListDetailRoot, MAX_MINOR_UNITS, MoneyField, MoneyFieldAffix, MoneyFieldGroup, MoneyFieldInput, MoneyFieldRoot, NumberField, PickerButton, Popover, Sheet, SideNav, SideNavGroup, SideNavItem, SideNavToggle, Splitter, SplitterHandle, SplitterPanel, SplitterRoot, StatFigure, addDays, addMonths, affixSide, applyKey, applyStored, ariaPercents, builtinPresets, clampDate, createPanels, cssSize, currencyName, currencySymbol, daysInMonth, defaultPresets, defaultWeekStartsOn, endOfWeek, formatDay, formatFull, formatMoney2 as formatMoney, fromMinorUnits, getCurrencyDigits, handleTarget, inclusiveDays, isValidCurrency, isoWeek, last30Days, last7Days, lastMonth, lastWeek, layoutOf, lengthBlockReason, measure, monthCells, moveFocusDate, nextMonth, nextWeek, normalizePaste, orderRange, parseDate, parseDecimalString, parseSize, presetInBounds, resetToDefault, resizeByDelta, resolvePreset, roundHalfExpand, roundingChangesValue, sameSelection, serializeSize, settle, sizeText, startOfWeek, syncPanels, thisMonth, thisQuarter, thisWeek, toDecimalString, toMinorUnits, today, todayDate, toggleCollapsed, tomorrow, useListDetail, valueText, yearToDate, yesterday };
|
|
3836
|
+
//# sourceMappingURL=chunk-PV5YOQMN.js.map
|
|
3837
|
+
//# sourceMappingURL=chunk-PV5YOQMN.js.map
|