luxen-ui 0.4.0 → 0.5.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/cdn/chunks/map.js +2 -0
- package/cdn/chunks/map.js.map +1 -0
- package/cdn/custom-elements.json +6522 -4081
- package/cdn/elements/avatar/avatar.d.ts +1 -1
- package/cdn/elements/avatar/avatar.d.ts.map +1 -1
- package/cdn/elements/avatar/avatar.js +2 -2
- package/cdn/elements/avatar/avatar.js.map +1 -1
- package/cdn/elements/avatar/index.d.ts +2 -2
- package/cdn/elements/avatar/index.d.ts.map +1 -1
- package/cdn/elements/avatar/index.js +1 -1
- package/cdn/elements/avatar/index.js.map +1 -1
- package/cdn/elements/badge/badge.d.ts +1 -1
- package/cdn/elements/badge/badge.d.ts.map +1 -1
- package/cdn/elements/badge/badge.js +1 -1
- package/cdn/elements/badge/badge.js.map +1 -1
- package/cdn/elements/badge/index.d.ts +2 -2
- package/cdn/elements/badge/index.d.ts.map +1 -1
- package/cdn/elements/badge/index.js +1 -1
- package/cdn/elements/badge/index.js.map +1 -1
- package/cdn/elements/carousel/carousel.d.ts +9 -10
- package/cdn/elements/carousel/carousel.d.ts.map +1 -1
- package/cdn/elements/carousel/carousel.js +4 -4
- package/cdn/elements/carousel/carousel.js.map +1 -1
- package/cdn/elements/carousel/index.d.ts +2 -2
- package/cdn/elements/carousel/index.d.ts.map +1 -1
- package/cdn/elements/carousel/index.js +1 -1
- package/cdn/elements/carousel/index.js.map +1 -1
- package/cdn/elements/carousel-item/carousel-item.d.ts +1 -1
- package/cdn/elements/carousel-item/carousel-item.d.ts.map +1 -1
- package/cdn/elements/carousel-item/carousel-item.js +1 -1
- package/cdn/elements/carousel-item/carousel-item.js.map +1 -1
- package/cdn/elements/carousel-item/index.d.ts +2 -2
- package/cdn/elements/carousel-item/index.d.ts.map +1 -1
- package/cdn/elements/carousel-item/index.js +1 -1
- package/cdn/elements/carousel-item/index.js.map +1 -1
- package/cdn/elements/dialog/dialog.d.ts +1 -1
- package/cdn/elements/dialog/dialog.d.ts.map +1 -1
- package/cdn/elements/dialog/dialog.js +1 -1
- package/cdn/elements/dialog/dialog.js.map +1 -1
- package/cdn/elements/dialog/dialog.styles.js.map +1 -1
- package/cdn/elements/dialog/index.d.ts +2 -2
- package/cdn/elements/dialog/index.d.ts.map +1 -1
- package/cdn/elements/dialog/index.js +1 -1
- package/cdn/elements/dialog/index.js.map +1 -1
- package/cdn/elements/divider/divider.d.ts +1 -1
- package/cdn/elements/divider/divider.d.ts.map +1 -1
- package/cdn/elements/divider/divider.js +1 -1
- package/cdn/elements/divider/divider.js.map +1 -1
- package/cdn/elements/divider/index.d.ts +2 -2
- package/cdn/elements/divider/index.d.ts.map +1 -1
- package/cdn/elements/divider/index.js +1 -1
- package/cdn/elements/divider/index.js.map +1 -1
- package/cdn/elements/drawer/drawer.d.ts +2 -2
- package/cdn/elements/drawer/drawer.d.ts.map +1 -1
- package/cdn/elements/drawer/drawer.js +1 -1
- package/cdn/elements/drawer/drawer.js.map +1 -1
- package/cdn/elements/drawer/index.d.ts +2 -2
- package/cdn/elements/drawer/index.d.ts.map +1 -1
- package/cdn/elements/drawer/index.js +1 -1
- package/cdn/elements/drawer/index.js.map +1 -1
- package/cdn/elements/dropdown/dropdown.d.ts +2 -2
- package/cdn/elements/dropdown/dropdown.d.ts.map +1 -1
- package/cdn/elements/dropdown/dropdown.js +1 -1
- package/cdn/elements/dropdown/dropdown.js.map +1 -1
- package/cdn/elements/dropdown/index.d.ts +2 -2
- package/cdn/elements/dropdown/index.d.ts.map +1 -1
- package/cdn/elements/dropdown/index.js +1 -1
- package/cdn/elements/dropdown/index.js.map +1 -1
- package/cdn/elements/dropdown-item/dropdown-item.d.ts +1 -1
- package/cdn/elements/dropdown-item/dropdown-item.d.ts.map +1 -1
- package/cdn/elements/dropdown-item/dropdown-item.js +1 -1
- package/cdn/elements/dropdown-item/dropdown-item.js.map +1 -1
- package/cdn/elements/dropdown-item/index.d.ts +2 -2
- package/cdn/elements/dropdown-item/index.d.ts.map +1 -1
- package/cdn/elements/dropdown-item/index.js +1 -1
- package/cdn/elements/dropdown-item/index.js.map +1 -1
- package/cdn/elements/icon/icon.d.ts +1 -1
- package/cdn/elements/icon/icon.d.ts.map +1 -1
- package/cdn/elements/icon/icon.js +1 -1
- package/cdn/elements/icon/icon.js.map +1 -1
- package/cdn/elements/icon/index.d.ts +2 -2
- package/cdn/elements/icon/index.d.ts.map +1 -1
- package/cdn/elements/icon/index.js +1 -1
- package/cdn/elements/icon/index.js.map +1 -1
- package/cdn/elements/input-otp/index.d.ts +2 -2
- package/cdn/elements/input-otp/index.d.ts.map +1 -1
- package/cdn/elements/input-otp/index.js +1 -1
- package/cdn/elements/input-otp/index.js.map +1 -1
- package/cdn/elements/input-otp/input-otp.d.ts +1 -1
- package/cdn/elements/input-otp/input-otp.d.ts.map +1 -1
- package/cdn/elements/input-otp/input-otp.js +1 -1
- package/cdn/elements/input-otp/input-otp.js.map +1 -1
- package/cdn/elements/input-stepper/index.d.ts +2 -2
- package/cdn/elements/input-stepper/index.d.ts.map +1 -1
- package/cdn/elements/input-stepper/index.js +1 -1
- package/cdn/elements/input-stepper/index.js.map +1 -1
- package/cdn/elements/input-stepper/input-stepper.d.ts +1 -1
- package/cdn/elements/input-stepper/input-stepper.d.ts.map +1 -1
- package/cdn/elements/input-stepper/input-stepper.js +1 -1
- package/cdn/elements/input-stepper/input-stepper.js.map +1 -1
- package/cdn/elements/popover/index.d.ts +2 -2
- package/cdn/elements/popover/index.d.ts.map +1 -1
- package/cdn/elements/popover/index.js +1 -1
- package/cdn/elements/popover/index.js.map +1 -1
- package/cdn/elements/popover/popover.d.ts +1 -1
- package/cdn/elements/popover/popover.d.ts.map +1 -1
- package/cdn/elements/popover/popover.js +1 -1
- package/cdn/elements/popover/popover.js.map +1 -1
- package/cdn/elements/rating/index.d.ts +2 -2
- package/cdn/elements/rating/index.d.ts.map +1 -1
- package/cdn/elements/rating/index.js +1 -1
- package/cdn/elements/rating/index.js.map +1 -1
- package/cdn/elements/rating/rating.d.ts +1 -1
- package/cdn/elements/rating/rating.d.ts.map +1 -1
- package/cdn/elements/rating/rating.js +2 -2
- package/cdn/elements/rating/rating.js.map +1 -1
- package/cdn/elements/skeleton/index.d.ts +2 -2
- package/cdn/elements/skeleton/index.d.ts.map +1 -1
- package/cdn/elements/skeleton/index.js +1 -1
- package/cdn/elements/skeleton/index.js.map +1 -1
- package/cdn/elements/skeleton/skeleton.d.ts +1 -1
- package/cdn/elements/skeleton/skeleton.d.ts.map +1 -1
- package/cdn/elements/skeleton/skeleton.js +1 -1
- package/cdn/elements/skeleton/skeleton.js.map +1 -1
- package/cdn/elements/spinner/index.d.ts +2 -2
- package/cdn/elements/spinner/index.d.ts.map +1 -1
- package/cdn/elements/spinner/index.js +1 -1
- package/cdn/elements/spinner/index.js.map +1 -1
- package/cdn/elements/spinner/spinner.d.ts +1 -1
- package/cdn/elements/spinner/spinner.d.ts.map +1 -1
- package/cdn/elements/spinner/spinner.js +1 -1
- package/cdn/elements/spinner/spinner.js.map +1 -1
- package/cdn/elements/sticky-bar/index.d.ts +8 -0
- package/cdn/elements/sticky-bar/index.d.ts.map +1 -0
- package/cdn/elements/sticky-bar/index.js +2 -0
- package/cdn/elements/sticky-bar/index.js.map +1 -0
- package/cdn/elements/sticky-bar/sticky-bar.d.ts +46 -0
- package/cdn/elements/sticky-bar/sticky-bar.d.ts.map +1 -0
- package/cdn/elements/sticky-bar/sticky-bar.js +2 -0
- package/cdn/elements/sticky-bar/sticky-bar.js.map +1 -0
- package/cdn/elements/stories/index.d.ts +8 -0
- package/cdn/elements/stories/index.d.ts.map +1 -0
- package/cdn/elements/stories/index.js +2 -0
- package/cdn/elements/stories/index.js.map +1 -0
- package/cdn/elements/stories/stories.d.ts +50 -0
- package/cdn/elements/stories/stories.d.ts.map +1 -0
- package/cdn/elements/stories/stories.js +2 -0
- package/cdn/elements/stories/stories.js.map +1 -0
- package/cdn/elements/stories-viewer/index.d.ts +8 -0
- package/cdn/elements/stories-viewer/index.d.ts.map +1 -0
- package/cdn/elements/stories-viewer/index.js +2 -0
- package/cdn/elements/stories-viewer/index.js.map +1 -0
- package/cdn/elements/stories-viewer/stories-viewer.d.ts +136 -0
- package/cdn/elements/stories-viewer/stories-viewer.d.ts.map +1 -0
- package/cdn/elements/stories-viewer/stories-viewer.js +160 -0
- package/cdn/elements/stories-viewer/stories-viewer.js.map +1 -0
- package/cdn/elements/story/index.d.ts +8 -0
- package/cdn/elements/story/index.d.ts.map +1 -0
- package/cdn/elements/story/index.js +2 -0
- package/cdn/elements/story/index.js.map +1 -0
- package/cdn/elements/story/story.d.ts +48 -0
- package/cdn/elements/story/story.d.ts.map +1 -0
- package/cdn/elements/story/story.js +35 -0
- package/cdn/elements/story/story.js.map +1 -0
- package/cdn/elements/tabs/index.d.ts +2 -2
- package/cdn/elements/tabs/index.d.ts.map +1 -1
- package/cdn/elements/tabs/index.js +1 -1
- package/cdn/elements/tabs/index.js.map +1 -1
- package/cdn/elements/tabs/tabs.d.ts +1 -1
- package/cdn/elements/tabs/tabs.d.ts.map +1 -1
- package/cdn/elements/tabs/tabs.js +1 -1
- package/cdn/elements/tabs/tabs.js.map +1 -1
- package/cdn/elements/toast/index.d.ts +3 -3
- package/cdn/elements/toast/index.d.ts.map +1 -1
- package/cdn/elements/toast/index.js +1 -1
- package/cdn/elements/toast/index.js.map +1 -1
- package/cdn/elements/toast/toast.d.ts +2 -2
- package/cdn/elements/toast/toast.d.ts.map +1 -1
- package/cdn/elements/toast/toast.js +1 -1
- package/cdn/elements/toast/toast.js.map +1 -1
- package/cdn/elements/tooltip/index.d.ts +2 -2
- package/cdn/elements/tooltip/index.d.ts.map +1 -1
- package/cdn/elements/tooltip/index.js +1 -1
- package/cdn/elements/tooltip/index.js.map +1 -1
- package/cdn/elements/tooltip/tooltip.d.ts +1 -1
- package/cdn/elements/tooltip/tooltip.d.ts.map +1 -1
- package/cdn/elements/tooltip/tooltip.js +1 -1
- package/cdn/elements/tooltip/tooltip.js.map +1 -1
- package/cdn/elements/tree/index.d.ts +2 -2
- package/cdn/elements/tree/index.d.ts.map +1 -1
- package/cdn/elements/tree/index.js +1 -1
- package/cdn/elements/tree/index.js.map +1 -1
- package/cdn/elements/tree/tree.d.ts +5 -5
- package/cdn/elements/tree/tree.d.ts.map +1 -1
- package/cdn/elements/tree/tree.js +1 -1
- package/cdn/elements/tree/tree.js.map +1 -1
- package/cdn/elements/tree-item/index.d.ts +2 -2
- package/cdn/elements/tree-item/index.d.ts.map +1 -1
- package/cdn/elements/tree-item/index.js +1 -1
- package/cdn/elements/tree-item/index.js.map +1 -1
- package/cdn/elements/tree-item/tree-item.d.ts +2 -2
- package/cdn/elements/tree-item/tree-item.d.ts.map +1 -1
- package/cdn/elements/tree-item/tree-item.js +1 -1
- package/cdn/elements/tree-item/tree-item.js.map +1 -1
- package/cdn/registry.d.ts +1 -1
- package/cdn/registry.d.ts.map +1 -1
- package/cdn/registry.js.map +1 -1
- package/cdn/shared/controllers/popover.js.map +1 -1
- package/cdn/shared/styles/host.styles.js.map +1 -1
- package/cdn/styles/elements/stories.css +63 -0
- package/cdn/styles/elements/story.css +192 -0
- package/cdn/styles/index.css +3 -0
- package/dist/css/elements/stories.css +63 -0
- package/dist/css/elements/story.css +192 -0
- package/dist/css/index.css +3 -0
- package/dist/custom-elements.json +6522 -4081
- package/dist/elements/avatar/avatar.d.ts +1 -1
- package/dist/elements/avatar/avatar.d.ts.map +1 -1
- package/dist/elements/avatar/avatar.js +11 -11
- package/dist/elements/avatar/index.d.ts +2 -2
- package/dist/elements/avatar/index.d.ts.map +1 -1
- package/dist/elements/avatar/index.js +2 -2
- package/dist/elements/badge/badge.d.ts +1 -1
- package/dist/elements/badge/badge.d.ts.map +1 -1
- package/dist/elements/badge/badge.js +5 -5
- package/dist/elements/badge/index.d.ts +2 -2
- package/dist/elements/badge/index.d.ts.map +1 -1
- package/dist/elements/badge/index.js +2 -2
- package/dist/elements/carousel/carousel.d.ts +9 -10
- package/dist/elements/carousel/carousel.d.ts.map +1 -1
- package/dist/elements/carousel/carousel.js +132 -140
- package/dist/elements/carousel/index.d.ts +2 -2
- package/dist/elements/carousel/index.d.ts.map +1 -1
- package/dist/elements/carousel/index.js +2 -2
- package/dist/elements/carousel-item/carousel-item.d.ts +1 -1
- package/dist/elements/carousel-item/carousel-item.d.ts.map +1 -1
- package/dist/elements/carousel-item/carousel-item.js +2 -2
- package/dist/elements/carousel-item/index.d.ts +2 -2
- package/dist/elements/carousel-item/index.d.ts.map +1 -1
- package/dist/elements/carousel-item/index.js +2 -2
- package/dist/elements/dialog/dialog.d.ts +1 -1
- package/dist/elements/dialog/dialog.d.ts.map +1 -1
- package/dist/elements/dialog/dialog.js +9 -9
- package/dist/elements/dialog/index.d.ts +2 -2
- package/dist/elements/dialog/index.d.ts.map +1 -1
- package/dist/elements/dialog/index.js +2 -2
- package/dist/elements/divider/divider.d.ts +1 -1
- package/dist/elements/divider/divider.d.ts.map +1 -1
- package/dist/elements/divider/divider.js +3 -3
- package/dist/elements/divider/index.d.ts +2 -2
- package/dist/elements/divider/index.d.ts.map +1 -1
- package/dist/elements/divider/index.js +2 -2
- package/dist/elements/drawer/drawer.d.ts +2 -2
- package/dist/elements/drawer/drawer.d.ts.map +1 -1
- package/dist/elements/drawer/drawer.js +4 -4
- package/dist/elements/drawer/index.d.ts +2 -2
- package/dist/elements/drawer/index.d.ts.map +1 -1
- package/dist/elements/drawer/index.js +2 -2
- package/dist/elements/dropdown/dropdown.d.ts +2 -2
- package/dist/elements/dropdown/dropdown.d.ts.map +1 -1
- package/dist/elements/dropdown/dropdown.js +22 -22
- package/dist/elements/dropdown/index.d.ts +2 -2
- package/dist/elements/dropdown/index.d.ts.map +1 -1
- package/dist/elements/dropdown/index.js +2 -2
- package/dist/elements/dropdown-item/dropdown-item.d.ts +1 -1
- package/dist/elements/dropdown-item/dropdown-item.d.ts.map +1 -1
- package/dist/elements/dropdown-item/dropdown-item.js +20 -20
- package/dist/elements/dropdown-item/index.d.ts +2 -2
- package/dist/elements/dropdown-item/index.d.ts.map +1 -1
- package/dist/elements/dropdown-item/index.js +2 -2
- package/dist/elements/icon/icon.d.ts +1 -1
- package/dist/elements/icon/icon.d.ts.map +1 -1
- package/dist/elements/icon/icon.js +4 -4
- package/dist/elements/icon/index.d.ts +2 -2
- package/dist/elements/icon/index.d.ts.map +1 -1
- package/dist/elements/icon/index.js +2 -2
- package/dist/elements/input-otp/index.d.ts +2 -2
- package/dist/elements/input-otp/index.d.ts.map +1 -1
- package/dist/elements/input-otp/index.js +2 -2
- package/dist/elements/input-otp/input-otp.d.ts +1 -1
- package/dist/elements/input-otp/input-otp.d.ts.map +1 -1
- package/dist/elements/input-otp/input-otp.js +2 -2
- package/dist/elements/input-stepper/index.d.ts +2 -2
- package/dist/elements/input-stepper/index.d.ts.map +1 -1
- package/dist/elements/input-stepper/index.js +2 -2
- package/dist/elements/input-stepper/input-stepper.d.ts +1 -1
- package/dist/elements/input-stepper/input-stepper.d.ts.map +1 -1
- package/dist/elements/input-stepper/input-stepper.js +8 -8
- package/dist/elements/popover/index.d.ts +2 -2
- package/dist/elements/popover/index.d.ts.map +1 -1
- package/dist/elements/popover/index.js +2 -2
- package/dist/elements/popover/popover.d.ts +1 -1
- package/dist/elements/popover/popover.d.ts.map +1 -1
- package/dist/elements/popover/popover.js +33 -33
- package/dist/elements/rating/index.d.ts +2 -2
- package/dist/elements/rating/index.d.ts.map +1 -1
- package/dist/elements/rating/index.js +2 -2
- package/dist/elements/rating/rating.d.ts +1 -1
- package/dist/elements/rating/rating.d.ts.map +1 -1
- package/dist/elements/rating/rating.js +48 -48
- package/dist/elements/skeleton/index.d.ts +2 -2
- package/dist/elements/skeleton/index.d.ts.map +1 -1
- package/dist/elements/skeleton/index.js +2 -2
- package/dist/elements/skeleton/skeleton.d.ts +1 -1
- package/dist/elements/skeleton/skeleton.d.ts.map +1 -1
- package/dist/elements/skeleton/skeleton.js +1 -1
- package/dist/elements/spinner/index.d.ts +2 -2
- package/dist/elements/spinner/index.d.ts.map +1 -1
- package/dist/elements/spinner/index.js +2 -2
- package/dist/elements/spinner/spinner.d.ts +1 -1
- package/dist/elements/spinner/spinner.d.ts.map +1 -1
- package/dist/elements/spinner/spinner.js +2 -2
- package/dist/elements/sticky-bar/index.d.ts +8 -0
- package/dist/elements/sticky-bar/index.d.ts.map +1 -0
- package/dist/elements/sticky-bar/index.js +4 -0
- package/dist/elements/sticky-bar/sticky-bar.css +56 -0
- package/dist/elements/sticky-bar/sticky-bar.d.ts +46 -0
- package/dist/elements/sticky-bar/sticky-bar.d.ts.map +1 -0
- package/dist/elements/sticky-bar/sticky-bar.js +146 -0
- package/dist/elements/stories/index.d.ts +8 -0
- package/dist/elements/stories/index.d.ts.map +1 -0
- package/dist/elements/stories/index.js +4 -0
- package/dist/elements/stories/stories.d.ts +50 -0
- package/dist/elements/stories/stories.d.ts.map +1 -0
- package/dist/elements/stories/stories.js +113 -0
- package/dist/elements/stories-viewer/index.d.ts +8 -0
- package/dist/elements/stories-viewer/index.d.ts.map +1 -0
- package/dist/elements/stories-viewer/index.js +4 -0
- package/dist/elements/stories-viewer/stories-viewer.css +337 -0
- package/dist/elements/stories-viewer/stories-viewer.d.ts +136 -0
- package/dist/elements/stories-viewer/stories-viewer.d.ts.map +1 -0
- package/dist/elements/stories-viewer/stories-viewer.js +719 -0
- package/dist/elements/story/index.d.ts +8 -0
- package/dist/elements/story/index.d.ts.map +1 -0
- package/dist/elements/story/index.js +4 -0
- package/dist/elements/story/story.d.ts +48 -0
- package/dist/elements/story/story.d.ts.map +1 -0
- package/dist/elements/story/story.js +161 -0
- package/dist/elements/tabs/index.d.ts +2 -2
- package/dist/elements/tabs/index.d.ts.map +1 -1
- package/dist/elements/tabs/index.js +2 -2
- package/dist/elements/tabs/tabs.d.ts +1 -1
- package/dist/elements/tabs/tabs.d.ts.map +1 -1
- package/dist/elements/tabs/tabs.js +5 -5
- package/dist/elements/toast/index.d.ts +3 -3
- package/dist/elements/toast/index.d.ts.map +1 -1
- package/dist/elements/toast/index.js +3 -3
- package/dist/elements/toast/toast.d.ts +2 -2
- package/dist/elements/toast/toast.d.ts.map +1 -1
- package/dist/elements/toast/toast.js +5 -5
- package/dist/elements/tooltip/index.d.ts +2 -2
- package/dist/elements/tooltip/index.d.ts.map +1 -1
- package/dist/elements/tooltip/index.js +2 -2
- package/dist/elements/tooltip/tooltip.d.ts +1 -1
- package/dist/elements/tooltip/tooltip.d.ts.map +1 -1
- package/dist/elements/tooltip/tooltip.js +29 -29
- package/dist/elements/tree/index.d.ts +2 -2
- package/dist/elements/tree/index.d.ts.map +1 -1
- package/dist/elements/tree/index.js +2 -2
- package/dist/elements/tree/tree.d.ts +5 -5
- package/dist/elements/tree/tree.d.ts.map +1 -1
- package/dist/elements/tree/tree.js +14 -16
- package/dist/elements/tree-item/index.d.ts +2 -2
- package/dist/elements/tree-item/index.d.ts.map +1 -1
- package/dist/elements/tree-item/index.js +2 -2
- package/dist/elements/tree-item/tree-item.d.ts +2 -2
- package/dist/elements/tree-item/tree-item.d.ts.map +1 -1
- package/dist/elements/tree-item/tree-item.js +28 -28
- package/dist/registry.d.ts +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/skills/luxen-ui/SKILL.md +1 -0
- package/dist/skills/luxen-ui/references/sticky-bar.md +148 -0
- package/package.json +4 -4
|
@@ -15,7 +15,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
15
15
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
16
16
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
17
17
|
};
|
|
18
|
-
var
|
|
18
|
+
var _Tree_selection_accessor_storage, _Tree_independent_accessor_storage;
|
|
19
19
|
import { html, unsafeCSS } from 'lit';
|
|
20
20
|
import { property } from 'lit/decorators.js';
|
|
21
21
|
import { LuxenElement } from '../../shared/luxen-element';
|
|
@@ -39,14 +39,14 @@ const styles = unsafeCSS(rawStyles);
|
|
|
39
39
|
* @cssproperty --chevron-size - Size of the expand/collapse chevron box. Default `1.125rem`.
|
|
40
40
|
* @cssproperty --item-gap - Horizontal gap between chevron, prefix, label and suffix on the row; also drives the content slot left indent. Default `0.375rem`.
|
|
41
41
|
*
|
|
42
|
-
* @event selection-change - Fired when the selected items change. Detail: `{ selection:
|
|
42
|
+
* @event selection-change - Fired when the selected items change. Detail: `{ selection: TreeItem[] }`.
|
|
43
43
|
*/
|
|
44
|
-
export class
|
|
44
|
+
export class Tree extends LuxenElement {
|
|
45
45
|
constructor() {
|
|
46
46
|
super(...arguments);
|
|
47
47
|
this._lastFocusedItem = null;
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
_Tree_selection_accessor_storage.set(this, 'single');
|
|
49
|
+
_Tree_independent_accessor_storage.set(this, false);
|
|
50
50
|
// --- Selection handling ---
|
|
51
51
|
this._onItemToggle = (event) => {
|
|
52
52
|
const { item, checked } = event.detail;
|
|
@@ -184,9 +184,7 @@ export class LuxenTree extends LuxenElement {
|
|
|
184
184
|
case '*': {
|
|
185
185
|
event.preventDefault();
|
|
186
186
|
// Expand all siblings of the current item.
|
|
187
|
-
const siblings = (current.parentElement
|
|
188
|
-
? Array.from(current.parentElement.children)
|
|
189
|
-
: []).filter((el) => el.tagName === tagName('tree-item').toUpperCase());
|
|
187
|
+
const siblings = (current.parentElement ? Array.from(current.parentElement.children) : []).filter((el) => el.tagName === tagName('tree-item').toUpperCase());
|
|
190
188
|
for (const sib of siblings) {
|
|
191
189
|
if (!sib.isLeaf())
|
|
192
190
|
sib.expanded = true;
|
|
@@ -203,15 +201,15 @@ export class LuxenTree extends LuxenElement {
|
|
|
203
201
|
* - `leaf`: only leaf items can be selected (single). Branches just toggle.
|
|
204
202
|
* - `none`: purely navigable, no selection state.
|
|
205
203
|
*/
|
|
206
|
-
get selection() { return __classPrivateFieldGet(this,
|
|
207
|
-
set selection(value) { __classPrivateFieldSet(this,
|
|
204
|
+
get selection() { return __classPrivateFieldGet(this, _Tree_selection_accessor_storage, "f"); }
|
|
205
|
+
set selection(value) { __classPrivateFieldSet(this, _Tree_selection_accessor_storage, value, "f"); }
|
|
208
206
|
/**
|
|
209
207
|
* When set with `selection="multiple"`, parent and children selection are decoupled:
|
|
210
208
|
* toggling a parent does NOT toggle its descendants and vice versa.
|
|
211
209
|
* Without it, selection cascades both ways and branches may become indeterminate.
|
|
212
210
|
*/
|
|
213
|
-
get independent() { return __classPrivateFieldGet(this,
|
|
214
|
-
set independent(value) { __classPrivateFieldSet(this,
|
|
211
|
+
get independent() { return __classPrivateFieldGet(this, _Tree_independent_accessor_storage, "f"); }
|
|
212
|
+
set independent(value) { __classPrivateFieldSet(this, _Tree_independent_accessor_storage, value, "f"); }
|
|
215
213
|
connectedCallback() {
|
|
216
214
|
super.connectedCallback();
|
|
217
215
|
this._mutationObserver = new MutationObserver(() => this._syncAll());
|
|
@@ -422,11 +420,11 @@ export class LuxenTree extends LuxenElement {
|
|
|
422
420
|
`;
|
|
423
421
|
}
|
|
424
422
|
}
|
|
425
|
-
|
|
426
|
-
|
|
423
|
+
_Tree_selection_accessor_storage = new WeakMap(), _Tree_independent_accessor_storage = new WeakMap();
|
|
424
|
+
Tree.styles = [hostStyles, styles];
|
|
427
425
|
__decorate([
|
|
428
426
|
property({ reflect: true })
|
|
429
|
-
],
|
|
427
|
+
], Tree.prototype, "selection", null);
|
|
430
428
|
__decorate([
|
|
431
429
|
property({ type: Boolean, reflect: true })
|
|
432
|
-
],
|
|
430
|
+
], Tree.prototype, "independent", null);
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TreeItem } from './tree-item';
|
|
2
2
|
export * from './tree-item';
|
|
3
3
|
declare global {
|
|
4
4
|
interface HTMLElementTagNameMap {
|
|
5
|
-
'l-tree-item':
|
|
5
|
+
'l-tree-item': TreeItem;
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/html/elements/tree-item/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/html/elements/tree-item/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,cAAc,aAAa,CAAC;AAG5B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,aAAa,EAAE,QAAQ,CAAC;KACzB;CACF"}
|
|
@@ -26,7 +26,7 @@ import { LuxenElement } from '../../shared/luxen-element';
|
|
|
26
26
|
* @event collapse - Fired when the item is collapsed.
|
|
27
27
|
* @event lazy-load - Fired when a lazy item is expanded for the first time. Consumers should append children and set `lazy=false`.
|
|
28
28
|
*/
|
|
29
|
-
export declare class
|
|
29
|
+
export declare class TreeItem extends LuxenElement {
|
|
30
30
|
static styles: import("lit").CSSResult[];
|
|
31
31
|
private _internals;
|
|
32
32
|
private _childObserver?;
|
|
@@ -56,7 +56,7 @@ export declare class LuxenTreeItem extends LuxenElement {
|
|
|
56
56
|
/** Returns the child `<l-tree-item>` elements directly under this one. */
|
|
57
57
|
getChildrenItems({ includeDisabled }?: {
|
|
58
58
|
includeDisabled?: boolean | undefined;
|
|
59
|
-
}):
|
|
59
|
+
}): TreeItem[];
|
|
60
60
|
/** Returns true if this item has no expandable children. */
|
|
61
61
|
isLeaf(): boolean;
|
|
62
62
|
/** Returns the text label of this item. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-item.d.ts","sourceRoot":"","sources":["../../../src/html/elements/tree-item/tree-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAO1D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,
|
|
1
|
+
{"version":3,"file":"tree-item.d.ts","sourceRoot":"","sources":["../../../src/html/elements/tree-item/tree-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAO1D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,QAAS,SAAQ,YAAY;IACxC,OAAgB,MAAM,4BAAwB;IAE9C,OAAO,CAAC,UAAU,CAA0B;IAC5C,OAAO,CAAC,cAAc,CAAC,CAAmB;IAE1C,oCAAoC;IAEpC,QAAQ,CAAC,QAAQ,UAAS;IAE1B,oCAAoC;IAEpC,QAAQ,CAAC,QAAQ,UAAS;IAE1B,yEAAyE;IAEzE,QAAQ,CAAC,aAAa,UAAS;IAE/B,oCAAoC;IAEpC,QAAQ,CAAC,QAAQ,UAAS;IAE1B,8EAA8E;IAE9E,QAAQ,CAAC,IAAI,UAAS;IAEtB,+DAA+D;IAE/D,QAAQ,CAAC,OAAO,UAAS;IAEzB,sDAAsD;IACtD,IAAI,YAAY,CAAC,KAAK,EAAE,OAAO,EAG9B;IACD,IAAI,YAAY,IAAI,OAAO,CAE1B;IACD,OAAO,CAAC,aAAa,CAAS;IAE9B,mEAAmE;IACnE,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAGtB;IACD,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,OAAO,CAAC,MAAM,CAAK;IAEnB,uDAAuD;IACvD,IAAI,WAAW,IAAI,OAAO,CAEzB;IACD,OAAO,CAAC,YAAY,CAAS;IAE7B,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,eAAsB,EAAE;;KAAK,GAAG,QAAQ,EAAE;IAO7D,4DAA4D;IAC5D,MAAM,IAAI,OAAO;IAIjB,2CAA2C;IAC3C,YAAY,IAAI,MAAM;IAUb,iBAAiB;IAQjB,oBAAoB;IAKpB,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;IAe9C,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,aAAa;IAmBrB,+EAA+E;IAC/E,MAAM;IASN,OAAO,CAAC,iBAAiB,CAUvB;IAEO,MAAM;CAwFhB"}
|
|
@@ -15,7 +15,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
15
15
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
16
16
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
17
17
|
};
|
|
18
|
-
var
|
|
18
|
+
var _TreeItem_expanded_accessor_storage, _TreeItem_selected_accessor_storage, _TreeItem_indeterminate_accessor_storage, _TreeItem_disabled_accessor_storage, _TreeItem_lazy_accessor_storage, _TreeItem_loading_accessor_storage;
|
|
19
19
|
import { html, unsafeCSS } from 'lit';
|
|
20
20
|
import { property } from 'lit/decorators.js';
|
|
21
21
|
import { LuxenElement } from '../../shared/luxen-element';
|
|
@@ -49,16 +49,16 @@ const styles = unsafeCSS(rawStyles);
|
|
|
49
49
|
* @event collapse - Fired when the item is collapsed.
|
|
50
50
|
* @event lazy-load - Fired when a lazy item is expanded for the first time. Consumers should append children and set `lazy=false`.
|
|
51
51
|
*/
|
|
52
|
-
export class
|
|
52
|
+
export class TreeItem extends LuxenElement {
|
|
53
53
|
constructor() {
|
|
54
54
|
super(...arguments);
|
|
55
55
|
this._internals = this.attachInternals();
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
_TreeItem_expanded_accessor_storage.set(this, false);
|
|
57
|
+
_TreeItem_selected_accessor_storage.set(this, false);
|
|
58
|
+
_TreeItem_indeterminate_accessor_storage.set(this, false);
|
|
59
|
+
_TreeItem_disabled_accessor_storage.set(this, false);
|
|
60
|
+
_TreeItem_lazy_accessor_storage.set(this, false);
|
|
61
|
+
_TreeItem_loading_accessor_storage.set(this, false);
|
|
62
62
|
this._showCheckbox = false;
|
|
63
63
|
this._depth = 0;
|
|
64
64
|
this._hasChildren = false;
|
|
@@ -73,23 +73,23 @@ export class LuxenTreeItem extends LuxenElement {
|
|
|
73
73
|
};
|
|
74
74
|
}
|
|
75
75
|
/** Whether the item is expanded. */
|
|
76
|
-
get expanded() { return __classPrivateFieldGet(this,
|
|
77
|
-
set expanded(value) { __classPrivateFieldSet(this,
|
|
76
|
+
get expanded() { return __classPrivateFieldGet(this, _TreeItem_expanded_accessor_storage, "f"); }
|
|
77
|
+
set expanded(value) { __classPrivateFieldSet(this, _TreeItem_expanded_accessor_storage, value, "f"); }
|
|
78
78
|
/** Whether the item is selected. */
|
|
79
|
-
get selected() { return __classPrivateFieldGet(this,
|
|
80
|
-
set selected(value) { __classPrivateFieldSet(this,
|
|
79
|
+
get selected() { return __classPrivateFieldGet(this, _TreeItem_selected_accessor_storage, "f"); }
|
|
80
|
+
set selected(value) { __classPrivateFieldSet(this, _TreeItem_selected_accessor_storage, value, "f"); }
|
|
81
81
|
/** Whether the checkbox is indeterminate (some descendants selected). */
|
|
82
|
-
get indeterminate() { return __classPrivateFieldGet(this,
|
|
83
|
-
set indeterminate(value) { __classPrivateFieldSet(this,
|
|
82
|
+
get indeterminate() { return __classPrivateFieldGet(this, _TreeItem_indeterminate_accessor_storage, "f"); }
|
|
83
|
+
set indeterminate(value) { __classPrivateFieldSet(this, _TreeItem_indeterminate_accessor_storage, value, "f"); }
|
|
84
84
|
/** Whether the item is disabled. */
|
|
85
|
-
get disabled() { return __classPrivateFieldGet(this,
|
|
86
|
-
set disabled(value) { __classPrivateFieldSet(this,
|
|
85
|
+
get disabled() { return __classPrivateFieldGet(this, _TreeItem_disabled_accessor_storage, "f"); }
|
|
86
|
+
set disabled(value) { __classPrivateFieldSet(this, _TreeItem_disabled_accessor_storage, value, "f"); }
|
|
87
87
|
/** Marks this item as having children that will be loaded on first expand. */
|
|
88
|
-
get lazy() { return __classPrivateFieldGet(this,
|
|
89
|
-
set lazy(value) { __classPrivateFieldSet(this,
|
|
88
|
+
get lazy() { return __classPrivateFieldGet(this, _TreeItem_lazy_accessor_storage, "f"); }
|
|
89
|
+
set lazy(value) { __classPrivateFieldSet(this, _TreeItem_lazy_accessor_storage, value, "f"); }
|
|
90
90
|
/** Whether the item is currently loading (shows a spinner). */
|
|
91
|
-
get loading() { return __classPrivateFieldGet(this,
|
|
92
|
-
set loading(value) { __classPrivateFieldSet(this,
|
|
91
|
+
get loading() { return __classPrivateFieldGet(this, _TreeItem_loading_accessor_storage, "f"); }
|
|
92
|
+
set loading(value) { __classPrivateFieldSet(this, _TreeItem_loading_accessor_storage, value, "f"); }
|
|
93
93
|
/** Set by `<l-tree>`: whether a checkbox is shown. */
|
|
94
94
|
set showCheckbox(value) {
|
|
95
95
|
this._showCheckbox = value;
|
|
@@ -279,23 +279,23 @@ export class LuxenTreeItem extends LuxenElement {
|
|
|
279
279
|
`;
|
|
280
280
|
}
|
|
281
281
|
}
|
|
282
|
-
|
|
283
|
-
|
|
282
|
+
_TreeItem_expanded_accessor_storage = new WeakMap(), _TreeItem_selected_accessor_storage = new WeakMap(), _TreeItem_indeterminate_accessor_storage = new WeakMap(), _TreeItem_disabled_accessor_storage = new WeakMap(), _TreeItem_lazy_accessor_storage = new WeakMap(), _TreeItem_loading_accessor_storage = new WeakMap();
|
|
283
|
+
TreeItem.styles = [hostStyles, styles];
|
|
284
284
|
__decorate([
|
|
285
285
|
property({ type: Boolean, reflect: true })
|
|
286
|
-
],
|
|
286
|
+
], TreeItem.prototype, "expanded", null);
|
|
287
287
|
__decorate([
|
|
288
288
|
property({ type: Boolean, reflect: true })
|
|
289
|
-
],
|
|
289
|
+
], TreeItem.prototype, "selected", null);
|
|
290
290
|
__decorate([
|
|
291
291
|
property({ type: Boolean, reflect: true })
|
|
292
|
-
],
|
|
292
|
+
], TreeItem.prototype, "indeterminate", null);
|
|
293
293
|
__decorate([
|
|
294
294
|
property({ type: Boolean, reflect: true })
|
|
295
|
-
],
|
|
295
|
+
], TreeItem.prototype, "disabled", null);
|
|
296
296
|
__decorate([
|
|
297
297
|
property({ type: Boolean, reflect: true })
|
|
298
|
-
],
|
|
298
|
+
], TreeItem.prototype, "lazy", null);
|
|
299
299
|
__decorate([
|
|
300
300
|
property({ type: Boolean, reflect: true })
|
|
301
|
-
],
|
|
301
|
+
], TreeItem.prototype, "loading", null);
|
package/dist/registry.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Every component base name the library ships. */
|
|
2
|
-
export type ElementBaseName = 'avatar' | 'badge' | 'carousel' | 'carousel-item' | 'dialog' | 'divider' | 'drawer' | 'dropdown' | 'dropdown-item' | 'icon' | 'input-otp' | 'input-stepper' | 'popover' | 'skeleton' | 'spinner' | 'rating' | 'tabs' | 'toast' | 'toast-item' | 'tooltip' | 'tree' | 'tree-item';
|
|
2
|
+
export type ElementBaseName = 'avatar' | 'badge' | 'carousel' | 'carousel-item' | 'dialog' | 'divider' | 'drawer' | 'dropdown' | 'dropdown-item' | 'icon' | 'input-otp' | 'input-stepper' | 'popover' | 'skeleton' | 'spinner' | 'rating' | 'sticky-bar' | 'stories' | 'story' | 'stories-viewer' | 'tabs' | 'toast' | 'toast-item' | 'tooltip' | 'tree' | 'tree-item';
|
|
3
3
|
/** Set the global prefix. Must be called before defining elements. */
|
|
4
4
|
export declare function setPrefix(prefix: {
|
|
5
5
|
element: string;
|
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/html/registry.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,OAAO,GACP,UAAU,GACV,eAAe,GACf,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,UAAU,GACV,eAAe,GACf,MAAM,GACN,WAAW,GACX,eAAe,GACf,SAAS,GACT,UAAU,GACV,SAAS,GACT,QAAQ,GACR,MAAM,GACN,OAAO,GACP,YAAY,GACZ,SAAS,GACT,MAAM,GACN,WAAW,CAAC;AAMhB,sEAAsE;AACtE,wBAAgB,SAAS,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGxE;AAED,gCAAgC;AAChC,wBAAgB,SAAS,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAE5D;AAED,gEAAgE;AAChE,wBAAgB,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEzD;AAED,sEAAsE;AACtE,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExC;AAID,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAE/D;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAE9D"}
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/html/registry.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,OAAO,GACP,UAAU,GACV,eAAe,GACf,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,UAAU,GACV,eAAe,GACf,MAAM,GACN,WAAW,GACX,eAAe,GACf,SAAS,GACT,UAAU,GACV,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,SAAS,GACT,OAAO,GACP,gBAAgB,GAChB,MAAM,GACN,OAAO,GACP,YAAY,GACZ,SAAS,GACT,MAAM,GACN,WAAW,CAAC;AAMhB,sEAAsE;AACtE,wBAAgB,SAAS,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAGxE;AAED,gCAAgC;AAChC,wBAAgB,SAAS,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAE5D;AAED,gEAAgE;AAChE,wBAAgB,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEzD;AAED,sEAAsE;AACtE,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExC;AAID,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAE/D;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAE9D"}
|
|
@@ -46,6 +46,7 @@ import 'luxen-ui';
|
|
|
46
46
|
| Drawer | Custom element | `<l-drawer>` | [references/drawer.md](references/drawer.md) |
|
|
47
47
|
| Select | CSS class | `.l-select` | [references/select.md](references/select.md) |
|
|
48
48
|
| Progress | CSS class | `.l-progress` | [references/progress.md](references/progress.md) |
|
|
49
|
+
| Sticky bar | Custom element | `<l-sticky-bar>` | [references/sticky-bar.md](references/sticky-bar.md) |
|
|
49
50
|
| Toast | Custom element | `<l-toast>` | [references/toast.md](references/toast.md) |
|
|
50
51
|
| Tree | Custom element | `<l-tree>` | [references/tree.md](references/tree.md) |
|
|
51
52
|
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
outline: deep
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
<style scoped>
|
|
6
|
+
.phone-deck {
|
|
7
|
+
display: flex;
|
|
8
|
+
flex-wrap: wrap;
|
|
9
|
+
gap: 24px;
|
|
10
|
+
justify-content: center;
|
|
11
|
+
padding: 24px 0;
|
|
12
|
+
}
|
|
13
|
+
.phone {
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-direction: column;
|
|
16
|
+
align-items: center;
|
|
17
|
+
gap: 8px;
|
|
18
|
+
}
|
|
19
|
+
.phone .label {
|
|
20
|
+
font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, monospace;
|
|
21
|
+
font-size: 11px;
|
|
22
|
+
font-weight: 500;
|
|
23
|
+
text-transform: uppercase;
|
|
24
|
+
letter-spacing: 0.06em;
|
|
25
|
+
color: var(--vp-c-text-2);
|
|
26
|
+
}
|
|
27
|
+
.phone iframe {
|
|
28
|
+
width: 340px;
|
|
29
|
+
height: 640px;
|
|
30
|
+
border: 10px solid #18181b;
|
|
31
|
+
border-radius: 40px;
|
|
32
|
+
background: var(--vp-c-bg);
|
|
33
|
+
box-shadow: 0 24px 48px -12px rgb(0 0 0 / 0.25);
|
|
34
|
+
}
|
|
35
|
+
</style>
|
|
36
|
+
|
|
37
|
+
# Sticky Bar
|
|
38
|
+
|
|
39
|
+
A bar docked to the viewport edge, painted in the document's **top layer**. Pass `for="<id>"` to track an element; the bar reveals when that element scrolls out of view (e.g. an Add to cart button on a mobile product page). Omit `for` for a permanently visible bar.
|
|
40
|
+
|
|
41
|
+
Common use cases: mobile product Add to cart, sticky save action on long forms, post-form newsletter signup, cookie banners, environment indicators, promo announcements.
|
|
42
|
+
|
|
43
|
+
<ElementSpec
|
|
44
|
+
tag="l-sticky-bar"
|
|
45
|
+
type="shadow"
|
|
46
|
+
/>
|
|
47
|
+
|
|
48
|
+
## Examples
|
|
49
|
+
|
|
50
|
+
### Mobile product page
|
|
51
|
+
|
|
52
|
+
The canonical use: an Add to cart CTA stays reachable while the customer scrolls product details. Each iframe below is its own document — the sticky bar paints in its top layer and `IntersectionObserver` resolves against the iframe's viewport, so production behavior is faithfully simulated.
|
|
53
|
+
|
|
54
|
+
Both demos start with the bar **revealed** (the Add to cart button sits below the fold). Scroll inside a phone to bring the button into view — the bar hides. Keep scrolling past the button — the bar reveals again.
|
|
55
|
+
|
|
56
|
+
<div class="phone-deck">
|
|
57
|
+
<div class="phone">
|
|
58
|
+
<span class="label">placement="bottom"</span>
|
|
59
|
+
<iframe src="/previews/sticky-bar-mobile-bottom.html" title="Sticky bar — bottom placement"></iframe>
|
|
60
|
+
</div>
|
|
61
|
+
<div class="phone">
|
|
62
|
+
<span class="label">placement="top"</span>
|
|
63
|
+
<iframe src="/previews/sticky-bar-mobile-top.html" title="Sticky bar — top placement"></iframe>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
> The top phone uses `style="--offset: var(--header-height)"` to dock under the in-page sticky header — `--header-height` is defined once at `:root` and shared between the header's `height` and the bar's offset, so they stay in sync.
|
|
68
|
+
|
|
69
|
+
```html
|
|
70
|
+
<button
|
|
71
|
+
id="add-to-cart"
|
|
72
|
+
class="l-button"
|
|
73
|
+
data-variant="primary"
|
|
74
|
+
>
|
|
75
|
+
Add to cart — €42
|
|
76
|
+
</button>
|
|
77
|
+
|
|
78
|
+
<l-sticky-bar for="add-to-cart">
|
|
79
|
+
<div
|
|
80
|
+
class="flex items-center justify-between gap-3 border-t border-[var(--l-color-divider)] bg-white px-4 py-3 dark:bg-zinc-900"
|
|
81
|
+
>
|
|
82
|
+
<span class="text-sm font-semibold text-primary">Magic Mouse — €42</span>
|
|
83
|
+
<button
|
|
84
|
+
class="l-button"
|
|
85
|
+
data-variant="primary"
|
|
86
|
+
data-size="sm"
|
|
87
|
+
>
|
|
88
|
+
Add to cart
|
|
89
|
+
</button>
|
|
90
|
+
</div>
|
|
91
|
+
</l-sticky-bar>
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## Accessibility
|
|
95
|
+
|
|
96
|
+
The element is a positioning shell — it adds no role of its own. Slotted content keeps its native semantics: a `<button>` stays a button, a `<form>` stays a form, links remain in the focus order.
|
|
97
|
+
|
|
98
|
+
| Check | Description |
|
|
99
|
+
|-------|-------------|
|
|
100
|
+
| Motion | Respects `prefers-reduced-motion` — the slide animation collapses to instant |
|
|
101
|
+
| Focus order | Slotted content stays in the natural focus order. Do not focus-trap inside the bar — it is not a dialog |
|
|
102
|
+
| Contrast | The bar inherits text and background from slotted content — apply your own contrast tokens |
|
|
103
|
+
|
|
104
|
+
### Rules
|
|
105
|
+
- Keep the bar action self-explanatory (e.g. duplicate the in-page button label, do not introduce a new verb)
|
|
106
|
+
- Use `--offset` to clear a sticky header when `placement="top"` to avoid overlap
|
|
107
|
+
- Do not nest live regions or modal-like behavior inside the bar
|
|
108
|
+
|
|
109
|
+
## API reference
|
|
110
|
+
|
|
111
|
+
### Importing
|
|
112
|
+
|
|
113
|
+
```js
|
|
114
|
+
import 'luxen-ui/sticky-bar';
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Attributes & Properties
|
|
118
|
+
|
|
119
|
+
<ApiTable :data="[
|
|
120
|
+
{ Attribute: 'for', Description: 'HTML id of the element to track. The bar reveals when it leaves the viewport. Omit for a permanently visible bar' },
|
|
121
|
+
{ Attribute: 'placement', Description: '`bottom` (default) or `top`. Edge to dock against' },
|
|
122
|
+
{ Attribute: 'root', Description: 'HTML id of the scrolling ancestor used as the IntersectionObserver root. Omit to use the viewport. Useful for nested scroll containers' },
|
|
123
|
+
]" />
|
|
124
|
+
|
|
125
|
+
### Events
|
|
126
|
+
|
|
127
|
+
<ApiTable :data="[
|
|
128
|
+
{ Event: 'show', Description: 'Fired before the bar reveals. Cancelable' },
|
|
129
|
+
{ Event: 'after-show', Description: 'Fired after the reveal animation completes' },
|
|
130
|
+
{ Event: 'hide', Description: 'Fired before the bar hides. Cancelable' },
|
|
131
|
+
{ Event: 'after-hide', Description: 'Fired after the hide animation completes' },
|
|
132
|
+
]" />
|
|
133
|
+
|
|
134
|
+
### Slots
|
|
135
|
+
|
|
136
|
+
<ApiTable :data="[
|
|
137
|
+
{ Slot: '(default)', Description: 'Bar content. Owns its own background, padding, and typography' },
|
|
138
|
+
]" />
|
|
139
|
+
|
|
140
|
+
### CSS custom properties
|
|
141
|
+
|
|
142
|
+
<ApiTable :data="[
|
|
143
|
+
{ Name: '--show-duration', Description: 'Reveal animation duration. Default `200ms`' },
|
|
144
|
+
{ Name: '--hide-duration', Description: 'Dismiss animation duration. Default `200ms`' },
|
|
145
|
+
{ Name: '--offset', Description: 'Distance from the active edge. Default `0px`. Use to clear a sticky header when `placement="top"`' },
|
|
146
|
+
]" />
|
|
147
|
+
|
|
148
|
+
> **Top layer.** The bar uses `popover="manual"` internally, so it paints in the document's top layer — `z-index` is not needed and would be ignored. Target `l-sticky-bar:popover-open` to style the revealed state.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "luxen-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Modern web components and CSS-first UI library built with Lit. Framework-agnostic, customizable prefix, design tokens.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"custom-elements",
|
|
@@ -101,13 +101,13 @@
|
|
|
101
101
|
"css-extras": "^0.4.0",
|
|
102
102
|
"http-server": "^14.1.1",
|
|
103
103
|
"playwright": "^1.59.1",
|
|
104
|
-
"postcss": "^8.5.
|
|
104
|
+
"postcss": "^8.5.14",
|
|
105
105
|
"postcss-import": "^16.1.1",
|
|
106
106
|
"tinyglobby": "^0.2.16",
|
|
107
107
|
"typescript": "^6.0.3",
|
|
108
108
|
"vite": "^8.0.10",
|
|
109
|
-
"vite-plugin-dts": "^
|
|
110
|
-
"vite-plus": "^0.1.
|
|
109
|
+
"vite-plugin-dts": "^5.0.0",
|
|
110
|
+
"vite-plus": "^0.1.20"
|
|
111
111
|
},
|
|
112
112
|
"customElements": "dist/custom-elements.json",
|
|
113
113
|
"scripts": {
|