@namroodinc/liquid-editorial 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +128 -2
- package/dist/chunks/EntryEditor-BF808OZR.js +181 -0
- package/dist/chunks/EntryEditor-BF808OZR.js.map +1 -0
- package/dist/chunks/EntryEditor-cjDk4vdH.cjs +2 -0
- package/dist/chunks/EntryEditor-cjDk4vdH.cjs.map +1 -0
- package/dist/chunks/Icon-CGY1FNXT.js +77 -0
- package/dist/chunks/Icon-CGY1FNXT.js.map +1 -0
- package/dist/chunks/Icon-CWsA1W83.cjs +2 -0
- package/dist/chunks/Icon-CWsA1W83.cjs.map +1 -0
- package/dist/chunks/RichTextEditor-DRt-kibg.js +248 -0
- package/dist/chunks/RichTextEditor-DRt-kibg.js.map +1 -0
- package/dist/chunks/RichTextEditor-tFkISOvq.cjs +2 -0
- package/dist/chunks/RichTextEditor-tFkISOvq.cjs.map +1 -0
- package/dist/components/AssetGrid/index.cjs +2 -0
- package/dist/components/AssetGrid/index.cjs.map +1 -0
- package/dist/components/AssetGrid/index.d.cts +54 -0
- package/dist/components/AssetGrid/index.d.cts.map +1 -0
- package/dist/components/AssetGrid/index.d.ts +54 -0
- package/dist/components/AssetGrid/index.d.ts.map +1 -0
- package/dist/components/AssetGrid/index.js +137 -0
- package/dist/components/AssetGrid/index.js.map +1 -0
- package/dist/components/AssetGrid/style.css +196 -0
- package/dist/components/Avatar/index.cjs +2 -0
- package/dist/components/Avatar/index.cjs.map +1 -0
- package/dist/components/Avatar/index.d.cts +24 -0
- package/dist/components/Avatar/index.d.cts.map +1 -0
- package/dist/components/Avatar/index.d.ts +24 -0
- package/dist/components/Avatar/index.d.ts.map +1 -0
- package/dist/components/Avatar/index.js +43 -0
- package/dist/components/Avatar/index.js.map +1 -0
- package/dist/components/Avatar/style.css +70 -0
- package/dist/components/Badge/index.cjs +2 -0
- package/dist/components/Badge/index.cjs.map +1 -0
- package/dist/components/Badge/index.d.cts +25 -0
- package/dist/components/Badge/index.d.cts.map +1 -0
- package/dist/components/Badge/index.d.ts +25 -0
- package/dist/components/Badge/index.d.ts.map +1 -0
- package/dist/components/Badge/index.js +28 -0
- package/dist/components/Badge/index.js.map +1 -0
- package/dist/components/Badge/style.css +103 -0
- package/dist/components/Board/index.cjs +2 -0
- package/dist/components/Board/index.cjs.map +1 -0
- package/dist/components/Board/index.d.cts +62 -0
- package/dist/components/Board/index.d.cts.map +1 -0
- package/dist/components/Board/index.d.ts +62 -0
- package/dist/components/Board/index.d.ts.map +1 -0
- package/dist/components/Board/index.js +227 -0
- package/dist/components/Board/index.js.map +1 -0
- package/dist/components/Board/style.css +145 -0
- package/dist/components/Button/index.cjs +2 -0
- package/dist/components/Button/index.cjs.map +1 -0
- package/dist/components/Button/index.d.cts +22 -0
- package/dist/components/Button/index.d.cts.map +1 -0
- package/dist/components/Button/index.d.ts +22 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Button/index.js +37 -0
- package/dist/components/Button/index.js.map +1 -0
- package/dist/components/Button/style.css +139 -0
- package/dist/components/ButtonGroup/index.cjs +2 -0
- package/dist/components/ButtonGroup/index.cjs.map +1 -0
- package/dist/components/ButtonGroup/index.d.cts +17 -0
- package/dist/components/ButtonGroup/index.d.cts.map +1 -0
- package/dist/components/ButtonGroup/index.d.ts +17 -0
- package/dist/components/ButtonGroup/index.d.ts.map +1 -0
- package/dist/components/ButtonGroup/index.js +18 -0
- package/dist/components/ButtonGroup/index.js.map +1 -0
- package/dist/components/ButtonGroup/style.css +66 -0
- package/dist/components/Choice/index.cjs +2 -0
- package/dist/components/Choice/index.cjs.map +1 -0
- package/dist/components/Choice/index.d.cts +25 -0
- package/dist/components/Choice/index.d.cts.map +1 -0
- package/dist/components/Choice/index.d.ts +25 -0
- package/dist/components/Choice/index.d.ts.map +1 -0
- package/dist/components/Choice/index.js +58 -0
- package/dist/components/Choice/index.js.map +1 -0
- package/dist/components/Choice/style.css +96 -0
- package/dist/components/Container/index.cjs +2 -0
- package/dist/components/Container/index.cjs.map +1 -0
- package/dist/components/Container/index.d.cts +19 -0
- package/dist/components/Container/index.d.cts.map +1 -0
- package/dist/components/Container/index.d.ts +19 -0
- package/dist/components/Container/index.d.ts.map +1 -0
- package/dist/components/Container/index.js +20 -0
- package/dist/components/Container/index.js.map +1 -0
- package/dist/components/Container/style.css +41 -0
- package/dist/components/DatePicker/index.cjs +2 -0
- package/dist/components/DatePicker/index.cjs.map +1 -0
- package/dist/components/DatePicker/index.d.cts +57 -0
- package/dist/components/DatePicker/index.d.cts.map +1 -0
- package/dist/components/DatePicker/index.d.ts +57 -0
- package/dist/components/DatePicker/index.d.ts.map +1 -0
- package/dist/components/DatePicker/index.js +248 -0
- package/dist/components/DatePicker/index.js.map +1 -0
- package/dist/components/DatePicker/style.css +149 -0
- package/dist/components/Drawer/index.cjs +2 -0
- package/dist/components/Drawer/index.cjs.map +1 -0
- package/dist/components/Drawer/index.d.cts +23 -0
- package/dist/components/Drawer/index.d.cts.map +1 -0
- package/dist/components/Drawer/index.d.ts +23 -0
- package/dist/components/Drawer/index.d.ts.map +1 -0
- package/dist/components/Drawer/index.js +85 -0
- package/dist/components/Drawer/index.js.map +1 -0
- package/dist/components/Drawer/style.css +147 -0
- package/dist/components/EntryEditor/index.cjs +1 -0
- package/dist/components/EntryEditor/index.d.cts +21 -0
- package/dist/components/EntryEditor/index.d.cts.map +1 -0
- package/dist/components/EntryEditor/index.d.ts +21 -0
- package/dist/components/EntryEditor/index.d.ts.map +1 -0
- package/dist/components/EntryEditor/index.js +6 -0
- package/dist/components/EntryEditor/model.d.cts +33 -0
- package/dist/components/EntryEditor/model.d.cts.map +1 -0
- package/dist/components/EntryEditor/model.d.ts +33 -0
- package/dist/components/EntryEditor/model.d.ts.map +1 -0
- package/dist/components/EntryEditor/style.css +8 -0
- package/dist/components/EntryPicker/index.cjs +2 -0
- package/dist/components/EntryPicker/index.cjs.map +1 -0
- package/dist/components/EntryPicker/index.d.cts +36 -0
- package/dist/components/EntryPicker/index.d.cts.map +1 -0
- package/dist/components/EntryPicker/index.d.ts +36 -0
- package/dist/components/EntryPicker/index.d.ts.map +1 -0
- package/dist/components/EntryPicker/index.js +181 -0
- package/dist/components/EntryPicker/index.js.map +1 -0
- package/dist/components/EntryPicker/style.css +162 -0
- package/dist/components/Field/index.cjs +2 -0
- package/dist/components/Field/index.cjs.map +1 -0
- package/dist/components/Field/index.d.cts +22 -0
- package/dist/components/Field/index.d.cts.map +1 -0
- package/dist/components/Field/index.d.ts +22 -0
- package/dist/components/Field/index.d.ts.map +1 -0
- package/dist/components/Field/index.js +47 -0
- package/dist/components/Field/index.js.map +1 -0
- package/dist/components/Field/style.css +112 -0
- package/dist/components/FieldAffix/index.cjs +2 -0
- package/dist/components/FieldAffix/index.cjs.map +1 -0
- package/dist/components/FieldAffix/index.d.cts +19 -0
- package/dist/components/FieldAffix/index.d.cts.map +1 -0
- package/dist/components/FieldAffix/index.d.ts +19 -0
- package/dist/components/FieldAffix/index.d.ts.map +1 -0
- package/dist/components/FieldAffix/index.js +45 -0
- package/dist/components/FieldAffix/index.js.map +1 -0
- package/dist/components/FieldAffix/style.css +54 -0
- package/dist/components/Grid/index.cjs +2 -0
- package/dist/components/Grid/index.cjs.map +1 -0
- package/dist/components/Grid/index.d.cts +44 -0
- package/dist/components/Grid/index.d.cts.map +1 -0
- package/dist/components/Grid/index.d.ts +44 -0
- package/dist/components/Grid/index.d.ts.map +1 -0
- package/dist/components/Grid/index.js +49 -0
- package/dist/components/Grid/index.js.map +1 -0
- package/dist/components/Grid/style.css +226 -0
- package/dist/components/Icon/icons.d.cts +64 -0
- package/dist/components/Icon/icons.d.cts.map +1 -0
- package/dist/components/Icon/icons.d.ts +64 -0
- package/dist/components/Icon/icons.d.ts.map +1 -0
- package/dist/components/Icon/index.cjs +1 -0
- package/dist/components/Icon/index.d.cts +15 -0
- package/dist/components/Icon/index.d.cts.map +1 -0
- package/dist/components/Icon/index.d.ts +15 -0
- package/dist/components/Icon/index.d.ts.map +1 -0
- package/dist/components/Icon/index.js +1 -0
- package/dist/components/Icon/style.css +10 -0
- package/dist/components/ImageCropper/index.cjs +2 -0
- package/dist/components/ImageCropper/index.cjs.map +1 -0
- package/dist/components/ImageCropper/index.d.cts +66 -0
- package/dist/components/ImageCropper/index.d.cts.map +1 -0
- package/dist/components/ImageCropper/index.d.ts +66 -0
- package/dist/components/ImageCropper/index.d.ts.map +1 -0
- package/dist/components/ImageCropper/index.js +263 -0
- package/dist/components/ImageCropper/index.js.map +1 -0
- package/dist/components/ImageCropper/style.css +160 -0
- package/dist/components/Menu/index.cjs +2 -0
- package/dist/components/Menu/index.cjs.map +1 -0
- package/dist/components/Menu/index.d.cts +35 -0
- package/dist/components/Menu/index.d.cts.map +1 -0
- package/dist/components/Menu/index.d.ts +35 -0
- package/dist/components/Menu/index.d.ts.map +1 -0
- package/dist/components/Menu/index.js +110 -0
- package/dist/components/Menu/index.js.map +1 -0
- package/dist/components/Menu/style.css +87 -0
- package/dist/components/Modal/index.cjs +2 -0
- package/dist/components/Modal/index.cjs.map +1 -0
- package/dist/components/Modal/index.d.cts +19 -0
- package/dist/components/Modal/index.d.cts.map +1 -0
- package/dist/components/Modal/index.d.ts +19 -0
- package/dist/components/Modal/index.d.ts.map +1 -0
- package/dist/components/Modal/index.js +84 -0
- package/dist/components/Modal/index.js.map +1 -0
- package/dist/components/Modal/style.css +106 -0
- package/dist/components/NumberField/index.cjs +2 -0
- package/dist/components/NumberField/index.cjs.map +1 -0
- package/dist/components/NumberField/index.d.cts +50 -0
- package/dist/components/NumberField/index.d.cts.map +1 -0
- package/dist/components/NumberField/index.d.ts +50 -0
- package/dist/components/NumberField/index.d.ts.map +1 -0
- package/dist/components/NumberField/index.js +124 -0
- package/dist/components/NumberField/index.js.map +1 -0
- package/dist/components/NumberField/style.css +85 -0
- package/dist/components/Popover/index.cjs +2 -0
- package/dist/components/Popover/index.cjs.map +1 -0
- package/dist/components/Popover/index.d.cts +28 -0
- package/dist/components/Popover/index.d.cts.map +1 -0
- package/dist/components/Popover/index.d.ts +28 -0
- package/dist/components/Popover/index.d.ts.map +1 -0
- package/dist/components/Popover/index.js +52 -0
- package/dist/components/Popover/index.js.map +1 -0
- package/dist/components/Popover/style.css +23 -0
- package/dist/components/RichTextEditor/document.d.cts +10 -0
- package/dist/components/RichTextEditor/document.d.cts.map +1 -0
- package/dist/components/RichTextEditor/document.d.ts +10 -0
- package/dist/components/RichTextEditor/document.d.ts.map +1 -0
- package/dist/components/RichTextEditor/index.cjs +1 -0
- package/dist/components/RichTextEditor/index.d.cts +38 -0
- package/dist/components/RichTextEditor/index.d.cts.map +1 -0
- package/dist/components/RichTextEditor/index.d.ts +38 -0
- package/dist/components/RichTextEditor/index.d.ts.map +1 -0
- package/dist/components/RichTextEditor/index.js +1 -0
- package/dist/components/RichTextEditor/style.css +136 -0
- package/dist/components/SearchField/index.cjs +2 -0
- package/dist/components/SearchField/index.cjs.map +1 -0
- package/dist/components/SearchField/index.d.cts +11 -0
- package/dist/components/SearchField/index.d.cts.map +1 -0
- package/dist/components/SearchField/index.d.ts +11 -0
- package/dist/components/SearchField/index.d.ts.map +1 -0
- package/dist/components/SearchField/index.js +49 -0
- package/dist/components/SearchField/index.js.map +1 -0
- package/dist/components/SearchField/style.css +27 -0
- package/dist/components/Select/index.cjs +2 -0
- package/dist/components/Select/index.cjs.map +1 -0
- package/dist/components/Select/index.d.cts +26 -0
- package/dist/components/Select/index.d.cts.map +1 -0
- package/dist/components/Select/index.d.ts +26 -0
- package/dist/components/Select/index.d.ts.map +1 -0
- package/dist/components/Select/index.js +129 -0
- package/dist/components/Select/index.js.map +1 -0
- package/dist/components/Select/style.css +88 -0
- package/dist/components/SelectionCard/index.cjs +2 -0
- package/dist/components/SelectionCard/index.cjs.map +1 -0
- package/dist/components/SelectionCard/index.d.cts +32 -0
- package/dist/components/SelectionCard/index.d.cts.map +1 -0
- package/dist/components/SelectionCard/index.d.ts +32 -0
- package/dist/components/SelectionCard/index.d.ts.map +1 -0
- package/dist/components/SelectionCard/index.js +71 -0
- package/dist/components/SelectionCard/index.js.map +1 -0
- package/dist/components/SelectionCard/style.css +133 -0
- package/dist/components/SideNav/index.cjs +2 -0
- package/dist/components/SideNav/index.cjs.map +1 -0
- package/dist/components/SideNav/index.d.cts +58 -0
- package/dist/components/SideNav/index.d.cts.map +1 -0
- package/dist/components/SideNav/index.d.ts +58 -0
- package/dist/components/SideNav/index.d.ts.map +1 -0
- package/dist/components/SideNav/index.js +113 -0
- package/dist/components/SideNav/index.js.map +1 -0
- package/dist/components/SideNav/style.css +184 -0
- package/dist/components/Skeleton/index.cjs +2 -0
- package/dist/components/Skeleton/index.cjs.map +1 -0
- package/dist/components/Skeleton/index.d.cts +21 -0
- package/dist/components/Skeleton/index.d.cts.map +1 -0
- package/dist/components/Skeleton/index.d.ts +21 -0
- package/dist/components/Skeleton/index.d.ts.map +1 -0
- package/dist/components/Skeleton/index.js +31 -0
- package/dist/components/Skeleton/index.js.map +1 -0
- package/dist/components/Skeleton/style.css +55 -0
- package/dist/components/Slider/index.cjs +2 -0
- package/dist/components/Slider/index.cjs.map +1 -0
- package/dist/components/Slider/index.d.cts +40 -0
- package/dist/components/Slider/index.d.cts.map +1 -0
- package/dist/components/Slider/index.d.ts +40 -0
- package/dist/components/Slider/index.d.ts.map +1 -0
- package/dist/components/Slider/index.js +117 -0
- package/dist/components/Slider/index.js.map +1 -0
- package/dist/components/Slider/style.css +156 -0
- package/dist/components/SortableList/index.cjs +2 -0
- package/dist/components/SortableList/index.cjs.map +1 -0
- package/dist/components/SortableList/index.d.cts +27 -0
- package/dist/components/SortableList/index.d.cts.map +1 -0
- package/dist/components/SortableList/index.d.ts +27 -0
- package/dist/components/SortableList/index.d.ts.map +1 -0
- package/dist/components/SortableList/index.js +85 -0
- package/dist/components/SortableList/index.js.map +1 -0
- package/dist/components/SortableList/style.css +71 -0
- package/dist/components/Stepper/index.cjs +2 -0
- package/dist/components/Stepper/index.cjs.map +1 -0
- package/dist/components/Stepper/index.d.cts +32 -0
- package/dist/components/Stepper/index.d.cts.map +1 -0
- package/dist/components/Stepper/index.d.ts +32 -0
- package/dist/components/Stepper/index.d.ts.map +1 -0
- package/dist/components/Stepper/index.js +69 -0
- package/dist/components/Stepper/index.js.map +1 -0
- package/dist/components/Stepper/style.css +154 -0
- package/dist/components/SubNav/index.cjs +2 -0
- package/dist/components/SubNav/index.cjs.map +1 -0
- package/dist/components/SubNav/index.d.cts +31 -0
- package/dist/components/SubNav/index.d.cts.map +1 -0
- package/dist/components/SubNav/index.d.ts +31 -0
- package/dist/components/SubNav/index.d.ts.map +1 -0
- package/dist/components/SubNav/index.js +62 -0
- package/dist/components/SubNav/index.js.map +1 -0
- package/dist/components/SubNav/style.css +86 -0
- package/dist/components/Switch/index.cjs +2 -0
- package/dist/components/Switch/index.cjs.map +1 -0
- package/dist/components/Switch/index.d.cts +12 -0
- package/dist/components/Switch/index.d.cts.map +1 -0
- package/dist/components/Switch/index.d.ts +12 -0
- package/dist/components/Switch/index.d.ts.map +1 -0
- package/dist/components/Switch/index.js +37 -0
- package/dist/components/Switch/index.js.map +1 -0
- package/dist/components/Switch/style.css +65 -0
- package/dist/components/Table/index.cjs +2 -0
- package/dist/components/Table/index.cjs.map +1 -0
- package/dist/components/Table/index.d.cts +54 -0
- package/dist/components/Table/index.d.cts.map +1 -0
- package/dist/components/Table/index.d.ts +54 -0
- package/dist/components/Table/index.d.ts.map +1 -0
- package/dist/components/Table/index.js +102 -0
- package/dist/components/Table/index.js.map +1 -0
- package/dist/components/Table/style.css +122 -0
- package/dist/components/TagsInput/index.cjs +2 -0
- package/dist/components/TagsInput/index.cjs.map +1 -0
- package/dist/components/TagsInput/index.d.cts +22 -0
- package/dist/components/TagsInput/index.d.cts.map +1 -0
- package/dist/components/TagsInput/index.d.ts +22 -0
- package/dist/components/TagsInput/index.d.ts.map +1 -0
- package/dist/components/TagsInput/index.js +60 -0
- package/dist/components/TagsInput/index.js.map +1 -0
- package/dist/components/TagsInput/style.css +83 -0
- package/dist/components/TextField/index.cjs +2 -0
- package/dist/components/TextField/index.cjs.map +1 -0
- package/dist/components/TextField/index.d.cts +11 -0
- package/dist/components/TextField/index.d.cts.map +1 -0
- package/dist/components/TextField/index.d.ts +11 -0
- package/dist/components/TextField/index.d.ts.map +1 -0
- package/dist/components/TextField/index.js +29 -0
- package/dist/components/TextField/index.js.map +1 -0
- package/dist/components/TextField/style.css +1 -0
- package/dist/components/Time/index.cjs +2 -0
- package/dist/components/Time/index.cjs.map +1 -0
- package/dist/components/Time/index.d.cts +35 -0
- package/dist/components/Time/index.d.cts.map +1 -0
- package/dist/components/Time/index.d.ts +35 -0
- package/dist/components/Time/index.d.ts.map +1 -0
- package/dist/components/Time/index.js +98 -0
- package/dist/components/Time/index.js.map +1 -0
- package/dist/components/Time/style.css +30 -0
- package/dist/components/Toast/index.cjs +2 -0
- package/dist/components/Toast/index.cjs.map +1 -0
- package/dist/components/Toast/index.d.cts +30 -0
- package/dist/components/Toast/index.d.cts.map +1 -0
- package/dist/components/Toast/index.d.ts +30 -0
- package/dist/components/Toast/index.d.ts.map +1 -0
- package/dist/components/Toast/index.js +96 -0
- package/dist/components/Toast/index.js.map +1 -0
- package/dist/components/Toast/style.css +80 -0
- package/dist/components/TopNav/index.cjs +2 -0
- package/dist/components/TopNav/index.cjs.map +1 -0
- package/dist/components/TopNav/index.d.cts +28 -0
- package/dist/components/TopNav/index.d.cts.map +1 -0
- package/dist/components/TopNav/index.d.ts +28 -0
- package/dist/components/TopNav/index.d.ts.map +1 -0
- package/dist/components/TopNav/index.js +45 -0
- package/dist/components/TopNav/index.js.map +1 -0
- package/dist/components/TopNav/style.css +80 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.cts +79 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +79 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/reset.css +15 -0
- package/dist/reset.css.d.ts +2 -0
- package/dist/styles.css +40 -0
- package/dist/styles.css.d.ts +2 -0
- package/dist/tokens.css +457 -0
- package/dist/tokens.css.d.ts +2 -0
- package/package.json +156 -4
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { t as e } from "../../chunks/Icon-CGY1FNXT.js";
|
|
2
|
+
import { createContext as t, forwardRef as n, useCallback as r, useContext as i, useMemo as a, useState as o } from "react";
|
|
3
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/SideNav/index.tsx
|
|
5
|
+
var l = t({ isCollapsed: !1 });
|
|
6
|
+
function u() {
|
|
7
|
+
return i(l).isCollapsed;
|
|
8
|
+
}
|
|
9
|
+
var d = n(function({ isCollapsed: e, defaultCollapsed: t = !1, onCollapsedChange: n, label: i = "Main", className: c, children: u, ...d }, p) {
|
|
10
|
+
let [m, h] = o(t), g = e ?? m, _ = r(() => {
|
|
11
|
+
let t = !g;
|
|
12
|
+
e === void 0 && h(t), n?.(t);
|
|
13
|
+
}, [
|
|
14
|
+
e,
|
|
15
|
+
g,
|
|
16
|
+
n
|
|
17
|
+
]), v = a(() => ({ isCollapsed: g }), [g]);
|
|
18
|
+
return /* @__PURE__ */ s(l.Provider, {
|
|
19
|
+
value: v,
|
|
20
|
+
children: /* @__PURE__ */ s(f.Provider, {
|
|
21
|
+
value: _,
|
|
22
|
+
children: /* @__PURE__ */ s("nav", {
|
|
23
|
+
ref: p,
|
|
24
|
+
"aria-label": i,
|
|
25
|
+
"data-collapsed": g || void 0,
|
|
26
|
+
className: ["ds-sidenav", c].filter(Boolean).join(" "),
|
|
27
|
+
...d,
|
|
28
|
+
children: u
|
|
29
|
+
})
|
|
30
|
+
})
|
|
31
|
+
});
|
|
32
|
+
}), f = t(() => {}), p = n(function({ title: t, mark: n, isCollapsible: r = !0, className: a, children: o, ...u }, d) {
|
|
33
|
+
let { isCollapsed: p } = i(l), m = i(f);
|
|
34
|
+
return /* @__PURE__ */ c("div", {
|
|
35
|
+
ref: d,
|
|
36
|
+
className: ["ds-sidenav__header", a].filter(Boolean).join(" "),
|
|
37
|
+
...u,
|
|
38
|
+
children: [
|
|
39
|
+
n && /* @__PURE__ */ s("span", {
|
|
40
|
+
className: "ds-sidenav__mark",
|
|
41
|
+
children: n
|
|
42
|
+
}),
|
|
43
|
+
!p && (t || o) && /* @__PURE__ */ s("span", {
|
|
44
|
+
className: "ds-sidenav__title",
|
|
45
|
+
children: t ?? o
|
|
46
|
+
}),
|
|
47
|
+
r && /* @__PURE__ */ s("button", {
|
|
48
|
+
type: "button",
|
|
49
|
+
className: "ds-sidenav__toggle",
|
|
50
|
+
"aria-label": p ? "Expand navigation" : "Collapse navigation",
|
|
51
|
+
"aria-expanded": !p,
|
|
52
|
+
title: p ? "Expand navigation" : "Collapse navigation",
|
|
53
|
+
onClick: m,
|
|
54
|
+
children: /* @__PURE__ */ s(e, { name: p ? "chevrons-right" : "chevrons-left" })
|
|
55
|
+
})
|
|
56
|
+
]
|
|
57
|
+
});
|
|
58
|
+
}), m = n(function({ label: e, className: t, children: n, ...r }, a) {
|
|
59
|
+
let { isCollapsed: o } = i(l);
|
|
60
|
+
return /* @__PURE__ */ c("div", {
|
|
61
|
+
ref: a,
|
|
62
|
+
className: ["ds-sidenav__section", t].filter(Boolean).join(" "),
|
|
63
|
+
"aria-label": e,
|
|
64
|
+
role: e ? "group" : void 0,
|
|
65
|
+
...r,
|
|
66
|
+
children: [e && !o && /* @__PURE__ */ s("span", {
|
|
67
|
+
className: "ds-sidenav__section-label",
|
|
68
|
+
children: e
|
|
69
|
+
}), /* @__PURE__ */ s("ul", {
|
|
70
|
+
className: "ds-sidenav__list",
|
|
71
|
+
children: n
|
|
72
|
+
})]
|
|
73
|
+
});
|
|
74
|
+
}), h = n(function({ icon: t, label: n, isActive: r, badge: a, className: o, ...u }, d) {
|
|
75
|
+
let { isCollapsed: f } = i(l);
|
|
76
|
+
return /* @__PURE__ */ s("li", {
|
|
77
|
+
className: "ds-sidenav__row",
|
|
78
|
+
children: /* @__PURE__ */ c("a", {
|
|
79
|
+
ref: d,
|
|
80
|
+
className: ["ds-sidenav__item", o].filter(Boolean).join(" "),
|
|
81
|
+
"data-active": r || void 0,
|
|
82
|
+
"aria-current": r ? "page" : void 0,
|
|
83
|
+
title: f ? n : void 0,
|
|
84
|
+
...u,
|
|
85
|
+
children: [
|
|
86
|
+
/* @__PURE__ */ s(e, { name: t }),
|
|
87
|
+
!f && /* @__PURE__ */ s("span", {
|
|
88
|
+
className: "ds-sidenav__label",
|
|
89
|
+
children: n
|
|
90
|
+
}),
|
|
91
|
+
!f && a && /* @__PURE__ */ s("span", {
|
|
92
|
+
className: "ds-sidenav__badge",
|
|
93
|
+
children: a
|
|
94
|
+
}),
|
|
95
|
+
f && /* @__PURE__ */ s("span", {
|
|
96
|
+
className: "ds-sidenav__sr",
|
|
97
|
+
children: n
|
|
98
|
+
})
|
|
99
|
+
]
|
|
100
|
+
})
|
|
101
|
+
});
|
|
102
|
+
}), g = n(function({ className: e, children: t, ...n }, r) {
|
|
103
|
+
return /* @__PURE__ */ s("div", {
|
|
104
|
+
ref: r,
|
|
105
|
+
className: ["ds-sidenav__footer", e].filter(Boolean).join(" "),
|
|
106
|
+
...n,
|
|
107
|
+
children: t
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
//#endregion
|
|
111
|
+
export { d as SideNav, g as SideNavFooter, p as SideNavHeader, h as SideNavItem, m as SideNavSection, u as useSideNavCollapsed };
|
|
112
|
+
|
|
113
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["Icon","SideNavContext","createContext","useSideNavCollapsed","useContext","SideNav","forwardRef","controlled","rest","uncontrolled","setUncontrolled","useState","defaultCollapsed","isCollapsed","toggle","useCallback","next","onCollapsedChange","value","useMemo","SideNavToggleContext","label","className","SideNavHeader","mark","title","children","isCollapsible","SideNavSection","SideNavItem","isActive","icon","badge","SideNavFooter"],"sources":["../../../src/components/SideNav/index.tsx"],"sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useState,\n type AnchorHTMLAttributes,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\nimport { Icon } from \"../Icon\";\nimport type { IconName } from \"../Icon/icons\";\nimport \"./style.css\";\n\ninterface SideNavContextValue {\n isCollapsed: boolean;\n}\n\nconst SideNavContext = createContext<SideNavContextValue>({ isCollapsed: false });\n\n/** Read the rail's collapsed state from anything rendered inside it. */\nexport function useSideNavCollapsed(): boolean {\n return useContext(SideNavContext).isCollapsed;\n}\n\nexport interface SideNavProps extends HTMLAttributes<HTMLElement> {\n /** Controlled collapsed state. Omit to let the rail own it. */\n isCollapsed?: boolean;\n /** Initial state when uncontrolled. */\n defaultCollapsed?: boolean;\n /** Fired by the header's collapse toggle. */\n onCollapsedChange?: (isCollapsed: boolean) => void;\n /** Accessible name for the landmark. */\n label?: string;\n children?: ReactNode;\n}\n\n/**\n * The primary rail: one heavy edge against the page, hairline rules between\n * sections. Collapsed it keeps the icons and drops the words — the width is a\n * token, so every rail in the product collapses to the same measure.\n */\nexport const SideNav = forwardRef<HTMLElement, SideNavProps>(function SideNav(\n {\n isCollapsed: controlled,\n defaultCollapsed = false,\n onCollapsedChange,\n label = \"Main\",\n className,\n children,\n ...rest\n },\n ref,\n) {\n const [uncontrolled, setUncontrolled] = useState(defaultCollapsed);\n const isCollapsed = controlled ?? uncontrolled;\n\n const toggle = useCallback(() => {\n const next = !isCollapsed;\n if (controlled === undefined) setUncontrolled(next);\n onCollapsedChange?.(next);\n }, [controlled, isCollapsed, onCollapsedChange]);\n\n const value = useMemo(() => ({ isCollapsed }), [isCollapsed]);\n\n return (\n <SideNavContext.Provider value={value}>\n <SideNavToggleContext.Provider value={toggle}>\n <nav\n ref={ref}\n aria-label={label}\n data-collapsed={isCollapsed || undefined}\n className={[\"ds-sidenav\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {children}\n </nav>\n </SideNavToggleContext.Provider>\n </SideNavContext.Provider>\n );\n});\n\nconst SideNavToggleContext = createContext<() => void>(() => {});\n\nexport interface SideNavHeaderProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Shown when the rail is open; hidden when it collapses. */\n title?: ReactNode;\n /** A mark that survives the collapse — a logo, a monogram. */\n mark?: ReactNode;\n /** Set false when the rail is permanently open. */\n isCollapsible?: boolean;\n children?: ReactNode;\n}\n\n/** Brand block plus the collapse toggle, above the first hairline rule. */\nexport const SideNavHeader = forwardRef<HTMLDivElement, SideNavHeaderProps>(\n function SideNavHeader({ title, mark, isCollapsible = true, className, children, ...rest }, ref) {\n const { isCollapsed } = useContext(SideNavContext);\n const toggle = useContext(SideNavToggleContext);\n\n return (\n <div\n ref={ref}\n className={[\"ds-sidenav__header\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {mark && <span className=\"ds-sidenav__mark\">{mark}</span>}\n {!isCollapsed && (title || children) && (\n <span className=\"ds-sidenav__title\">{title ?? children}</span>\n )}\n {isCollapsible && (\n <button\n type=\"button\"\n className=\"ds-sidenav__toggle\"\n aria-label={isCollapsed ? \"Expand navigation\" : \"Collapse navigation\"}\n aria-expanded={!isCollapsed}\n title={isCollapsed ? \"Expand navigation\" : \"Collapse navigation\"}\n onClick={toggle}\n >\n <Icon name={isCollapsed ? \"chevrons-right\" : \"chevrons-left\"} />\n </button>\n )}\n </div>\n );\n },\n);\n\nexport interface SideNavSectionProps extends HTMLAttributes<HTMLDivElement> {\n /** Section label. Hidden — but still announced — when collapsed. */\n label?: string;\n children?: ReactNode;\n}\n\n/** A group of items under one label, separated by a hairline rule. */\nexport const SideNavSection = forwardRef<HTMLDivElement, SideNavSectionProps>(\n function SideNavSection({ label, className, children, ...rest }, ref) {\n const { isCollapsed } = useContext(SideNavContext);\n\n return (\n <div\n ref={ref}\n className={[\"ds-sidenav__section\", className].filter(Boolean).join(\" \")}\n aria-label={label}\n role={label ? \"group\" : undefined}\n {...rest}\n >\n {label && !isCollapsed && <span className=\"ds-sidenav__section-label\">{label}</span>}\n <ul className=\"ds-sidenav__list\">{children}</ul>\n </div>\n );\n },\n);\n\nexport interface SideNavItemProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n icon: IconName;\n /** The words. Kept in the accessible name even when the rail is collapsed. */\n label: string;\n isActive?: boolean;\n /** A count or status pill at the end of the row. Hidden when collapsed. */\n badge?: ReactNode;\n}\n\n/**\n * One destination. The active row carries the solid rail on its leading edge —\n * the same rail as a selected table row, so selection reads the same anywhere.\n */\nexport const SideNavItem = forwardRef<HTMLAnchorElement, SideNavItemProps>(\n function SideNavItem({ icon, label, isActive, badge, className, ...rest }, ref) {\n const { isCollapsed } = useContext(SideNavContext);\n\n return (\n <li className=\"ds-sidenav__row\">\n <a\n ref={ref}\n className={[\"ds-sidenav__item\", className].filter(Boolean).join(\" \")}\n data-active={isActive || undefined}\n aria-current={isActive ? \"page\" : undefined}\n title={isCollapsed ? label : undefined}\n {...rest}\n >\n <Icon name={icon} />\n {!isCollapsed && <span className=\"ds-sidenav__label\">{label}</span>}\n {!isCollapsed && badge && <span className=\"ds-sidenav__badge\">{badge}</span>}\n {isCollapsed && <span className=\"ds-sidenav__sr\">{label}</span>}\n </a>\n </li>\n );\n },\n);\n\nexport interface SideNavFooterProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\n/** The bottom band — account, theme, help. Above the page edge, under a rule. */\nexport const SideNavFooter = forwardRef<HTMLDivElement, SideNavFooterProps>(\n function SideNavFooter({ className, children, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={[\"ds-sidenav__footer\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n"],"mappings":";;;;AAmBA,IAAMC,IAAiBC,EAAmC,EAAE,aAAa,GAAM,CAAC;AAGhF,SAAgBC,IAA+B;CAC7C,OAAOC,EAAWH,CAAc,CAAC,CAAC;AACpC;AAmBA,IAAaI,IAAUC,EAAsC,SAC3D,EACE,aAAaC,GACb,sBAAmB,IACnB,sBACA,WAAQ,QACR,cACA,aACA,GAAGC,KAEL,GACA;CACA,IAAM,CAACC,GAAcC,KAAmBC,EAASC,CAAgB,GAC3DC,IAAcN,KAAcE,GAE5BK,IAASC,QAAkB;EAC/B,IAAMC,IAAO,CAACH;EAEd,AADIN,MAAe,KAAA,KAAWG,EAAgBM,CAAI,GAClDC,IAAoBD,CAAI;CAC1B,GAAG;EAACT;EAAYM;EAAaI;CAAiB,CAAC,GAEzCC,IAAQC,SAAe,EAAE,eAAY,IAAI,CAACN,CAAW,CAAC;CAE5D,OACE,kBAACZ,EAAe,UAAhB;EAAgC;EAC9B,UAAA,kBAACmB,EAAqB,UAAtB;GAA+B,OAAON;GACpC,UAAA,kBAAC,OAAD;IACO;IACL,cAAYO;IACZ,kBAAgBR,KAAe,KAAA;IAC/B,WAAW,CAAC,cAAcS,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;IAC7D,GAAId;IAEH;GACE,CAAA;EACwB,CAAA;CACR,CAAA;AAE7B,CAAC,GAEKY,IAAuBlB,QAAgC,CAAC,CAAC,GAalDqB,IAAgBjB,EAC3B,SAAuB,EAAE,UAAO,SAAM,mBAAgB,IAAM,cAAW,aAAU,GAAGE,KAAQ,GAAK;CAC/F,IAAM,EAAE,mBAAgBJ,EAAWH,CAAc,GAC3Ca,IAASV,EAAWgB,CAAoB;CAE9C,OACE,kBAAC,OAAD;EACO;EACL,WAAW,CAAC,sBAAsBE,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EACrE,GAAId;EAHN,UAAA;GAKGgB,KAAQ,kBAAC,QAAD;IAAM,WAAU;IAAoB,UAAAA;GAAW,CAAA;GACvD,CAACX,MAAgBY,KAASC,MACzB,kBAAC,QAAD;IAAM,WAAU;IAAqB,UAAAD,KAASC;GAAe,CAAA;GAE9DC,KACC,kBAAC,UAAD;IACE,MAAK;IACL,WAAU;IACV,cAAYd,IAAc,sBAAsB;IAChD,iBAAe,CAACA;IAChB,OAAOA,IAAc,sBAAsB;IAC3C,SAASC;IAET,UAAA,kBAACd,GAAD,EAAM,MAAMa,IAAc,mBAAmB,gBAAkB,CAAA;GACzD,CAAA;EAEP;;AAET,CACF,GASae,IAAiBtB,EAC5B,SAAwB,EAAE,UAAO,cAAW,aAAU,GAAGE,KAAQ,GAAK;CACpE,IAAM,EAAE,mBAAgBJ,EAAWH,CAAc;CAEjD,OACE,kBAAC,OAAD;EACO;EACL,WAAW,CAAC,uBAAuBqB,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EACtE,cAAYD;EACZ,MAAMA,IAAQ,UAAU,KAAA;EACxB,GAAIb;EALN,UAAA,CAOGa,KAAS,CAACR,KAAe,kBAAC,QAAD;GAAM,WAAU;GAA6B,UAAAQ;EAAY,CAAA,GACnF,kBAAC,MAAD;GAAI,WAAU;GAAoB;EAAa,CAAA,CAC5C;;AAET,CACF,GAeaQ,IAAcvB,EACzB,SAAqB,EAAE,SAAM,UAAO,aAAU,UAAO,cAAW,GAAGE,KAAQ,GAAK;CAC9E,IAAM,EAAE,mBAAgBJ,EAAWH,CAAc;CAEjD,OACE,kBAAC,MAAD;EAAI,WAAU;EACZ,UAAA,kBAAC,KAAD;GACO;GACL,WAAW,CAAC,oBAAoBqB,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;GACnE,eAAaQ,KAAY,KAAA;GACzB,gBAAcA,IAAW,SAAS,KAAA;GAClC,OAAOjB,IAAcQ,IAAQ,KAAA;GAC7B,GAAIb;GANN,UAAA;IAQE,kBAACR,GAAD,EAAM,MAAM+B,EAAO,CAAA;IAClB,CAAClB,KAAe,kBAAC,QAAD;KAAM,WAAU;KAAqB,UAAAQ;IAAY,CAAA;IACjE,CAACR,KAAemB,KAAS,kBAAC,QAAD;KAAM,WAAU;KAAqB,UAAAA;IAAY,CAAA;IAC1EnB,KAAe,kBAAC,QAAD;KAAM,WAAU;KAAkB,UAAAQ;IAAY,CAAA;GAC7D;;CACD,CAAA;AAER,CACF,GAOaY,IAAgB3B,EAC3B,SAAuB,EAAE,cAAW,aAAU,GAAGE,KAAQ,GAAK;CAC5D,OACE,kBAAC,OAAD;EACO;EACL,WAAW,CAAC,sBAAsBc,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EACrE,GAAId;EAEH;CACE,CAAA;AAET,CACF"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.ds-sidenav {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
flex: none;
|
|
6
|
+
inline-size: var(--sidenav-width);
|
|
7
|
+
background: var(--color-surface);
|
|
8
|
+
border-inline-end: var(--frame-width) solid var(--frame-color);
|
|
9
|
+
overflow: hidden;
|
|
10
|
+
transition: inline-size var(--duration-panel) var(--ease-panel);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.ds-sidenav[data-collapsed] {
|
|
14
|
+
inline-size: var(--sidenav-width-collapsed);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.ds-sidenav__header {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
gap: var(--space-3);
|
|
21
|
+
min-block-size: var(--topnav-height);
|
|
22
|
+
padding: var(--space-3) var(--space-4);
|
|
23
|
+
border-block-end: var(--rule-width) solid var(--rule-color);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.ds-sidenav[data-collapsed] .ds-sidenav__header {
|
|
27
|
+
justify-content: center;
|
|
28
|
+
padding-inline: var(--space-2);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.ds-sidenav__mark {
|
|
32
|
+
display: flex;
|
|
33
|
+
align-items: center;
|
|
34
|
+
flex: none;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.ds-sidenav__title {
|
|
38
|
+
font-weight: var(--font-weight-bold);
|
|
39
|
+
font-size: var(--font-size-md);
|
|
40
|
+
white-space: nowrap;
|
|
41
|
+
overflow: hidden;
|
|
42
|
+
text-overflow: ellipsis;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.ds-sidenav__toggle {
|
|
46
|
+
margin-inline-start: auto;
|
|
47
|
+
display: flex;
|
|
48
|
+
align-items: center;
|
|
49
|
+
justify-content: center;
|
|
50
|
+
inline-size: var(--space-8);
|
|
51
|
+
block-size: var(--space-8);
|
|
52
|
+
border: 0;
|
|
53
|
+
border-radius: var(--field-radius);
|
|
54
|
+
background: none;
|
|
55
|
+
color: var(--color-text-muted);
|
|
56
|
+
cursor: pointer;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.ds-sidenav[data-collapsed] .ds-sidenav__toggle {
|
|
60
|
+
margin-inline-start: 0;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.ds-sidenav__toggle:hover {
|
|
64
|
+
background: var(--field-hover);
|
|
65
|
+
color: var(--color-text);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.ds-sidenav__toggle:focus-visible {
|
|
69
|
+
outline: var(--control-border-width) solid var(--color-focus);
|
|
70
|
+
outline-offset: 2px;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.ds-sidenav__section {
|
|
74
|
+
padding-block: var(--space-3);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.ds-sidenav__section + .ds-sidenav__section {
|
|
78
|
+
border-block-start: var(--rule-width) solid var(--rule-color);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.ds-sidenav__section-label {
|
|
82
|
+
display: block;
|
|
83
|
+
padding: var(--space-1) var(--space-4) var(--space-2);
|
|
84
|
+
color: var(--color-text-muted);
|
|
85
|
+
font-size: var(--font-size-xs);
|
|
86
|
+
font-weight: var(--font-weight-bold);
|
|
87
|
+
letter-spacing: var(--table-head-tracking);
|
|
88
|
+
text-transform: uppercase;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.ds-sidenav__list {
|
|
92
|
+
display: flex;
|
|
93
|
+
flex-direction: column;
|
|
94
|
+
gap: var(--space-1);
|
|
95
|
+
list-style: none;
|
|
96
|
+
margin: 0;
|
|
97
|
+
padding: 0;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.ds-sidenav__row {
|
|
101
|
+
display: block;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* The rail is inset, so the active row never changes width. */
|
|
105
|
+
.ds-sidenav__item {
|
|
106
|
+
display: flex;
|
|
107
|
+
align-items: center;
|
|
108
|
+
gap: var(--space-3);
|
|
109
|
+
min-block-size: var(--nav-item-height);
|
|
110
|
+
padding-inline: var(--space-4);
|
|
111
|
+
color: var(--color-text);
|
|
112
|
+
font-size: var(--font-size-sm);
|
|
113
|
+
font-weight: var(--font-weight-medium);
|
|
114
|
+
text-decoration: none;
|
|
115
|
+
cursor: pointer;
|
|
116
|
+
box-shadow: inset var(--rail-width) 0 0 0 transparent;
|
|
117
|
+
transition:
|
|
118
|
+
background-color var(--duration-fast) var(--ease-standard),
|
|
119
|
+
box-shadow var(--duration-fast) var(--ease-standard);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.ds-sidenav[data-collapsed] .ds-sidenav__item {
|
|
123
|
+
justify-content: center;
|
|
124
|
+
padding-inline: 0;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.ds-sidenav__item:hover {
|
|
128
|
+
background: var(--field-hover);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.ds-sidenav__item:focus-visible {
|
|
132
|
+
outline: var(--control-border-width) solid var(--color-focus);
|
|
133
|
+
outline-offset: -2px;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.ds-sidenav__item[data-active] {
|
|
137
|
+
background: var(--color-primary-soft);
|
|
138
|
+
color: var(--color-primary-text);
|
|
139
|
+
font-weight: var(--font-weight-bold);
|
|
140
|
+
box-shadow: inset var(--rail-width) 0 0 0 var(--rail-color);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.ds-sidenav__label {
|
|
144
|
+
white-space: nowrap;
|
|
145
|
+
overflow: hidden;
|
|
146
|
+
text-overflow: ellipsis;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.ds-sidenav__badge {
|
|
150
|
+
margin-inline-start: auto;
|
|
151
|
+
display: flex;
|
|
152
|
+
align-items: center;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.ds-sidenav__sr {
|
|
156
|
+
position: absolute;
|
|
157
|
+
inline-size: 1px;
|
|
158
|
+
block-size: 1px;
|
|
159
|
+
overflow: hidden;
|
|
160
|
+
clip-path: inset(50%);
|
|
161
|
+
white-space: nowrap;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
.ds-sidenav__footer {
|
|
165
|
+
margin-block-start: auto;
|
|
166
|
+
display: flex;
|
|
167
|
+
align-items: center;
|
|
168
|
+
gap: var(--space-3);
|
|
169
|
+
padding: var(--space-3) var(--space-4);
|
|
170
|
+
border-block-start: var(--rule-width) solid var(--rule-color);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.ds-sidenav[data-collapsed] .ds-sidenav__footer {
|
|
174
|
+
justify-content: center;
|
|
175
|
+
padding-inline: var(--space-2);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
@media (prefers-reduced-motion: reduce) {
|
|
179
|
+
.ds-sidenav,
|
|
180
|
+
.ds-sidenav__item {
|
|
181
|
+
transition: none;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("react"),t=require("react/jsx-runtime");var n=(0,e.forwardRef)(function({shape:e=`text`,width:n,size:r,className:i,style:a,...o},s){return(0,t.jsx)(`span`,{ref:s,"aria-hidden":`true`,"data-shape":e,className:[`ds-skeleton`,i].filter(Boolean).join(` `),style:{inlineSize:e===`circle`?r:n??`100%`,blockSize:e===`circle`?r:void 0,...a},...o})}),r=(0,e.forwardRef)(function({lines:e=3,className:r,...i},a){return(0,t.jsx)(`div`,{ref:a,role:`status`,"aria-busy":`true`,"aria-label":`Loading`,className:[`ds-skeleton-lines`,r].filter(Boolean).join(` `),...i,children:Array.from({length:e},(e,r)=>(0,t.jsx)(n,{style:{animationDelay:`calc(var(--skeleton-stagger) * ${r})`}},r))})});exports.Skeleton=n,exports.SkeletonText=r;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["forwardRef","react","react_jsx_runtime","Skeleton","rest","shape","className","size","width","style","SkeletonText","lines","i"],"sources":["../../../src/components/Skeleton/index.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from \"react\";\nimport \"./style.css\";\n\nexport type SkeletonShape = \"text\" | \"heading\" | \"block\" | \"circle\";\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLSpanElement> {\n shape?: SkeletonShape;\n /** Any CSS length or percentage. Defaults to filling its container. */\n width?: string;\n /** Only for `circle`, where width and height are the same value. */\n size?: string;\n}\n\n/**\n * A placeholder with the shape of the thing that is loading. Never a spinner\n * over a blank panel — the layout must not move when the content arrives.\n */\nexport const Skeleton = forwardRef<HTMLSpanElement, SkeletonProps>(function Skeleton(\n { shape = \"text\", width, size, className, style, ...rest },\n ref,\n) {\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n data-shape={shape}\n className={[\"ds-skeleton\", className].filter(Boolean).join(\" \")}\n style={{\n inlineSize: shape === \"circle\" ? size : (width ?? \"100%\"),\n blockSize: shape === \"circle\" ? size : undefined,\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport interface SkeletonTextProps extends HTMLAttributes<HTMLDivElement> {\n /** Number of lines; the last one renders short. */\n lines?: number;\n}\n\n/** A paragraph-shaped placeholder. Announced once, as busy, to screen readers. */\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n function SkeletonText({ lines = 3, className, ...rest }, ref) {\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-busy=\"true\"\n aria-label=\"Loading\"\n className={[\"ds-skeleton-lines\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {Array.from({ length: lines }, (_, i) => (\n <Skeleton\n key={i}\n style={{ animationDelay: `calc(var(--skeleton-stagger) * ${i})` }}\n />\n ))}\n </div>\n );\n },\n);\n"],"mappings":"A,yHAiBA,IAAaG,GAAA,EAAWH,EAAAA,WAAAA,CAA2C,SACjE,CAAE,QAAQ,OAAQ,QAAO,OAAM,YAAW,QAAO,GAAGI,GACpD,EACA,CACA,OACE,EAAAF,EAAA,IAAA,CAAC,OAAD,CACO,MACL,cAAY,OACZ,aAAYG,EACZ,UAAW,CAAC,cAAeC,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,EAC9D,MAAO,CACL,WAAYD,IAAU,SAAWE,EAAQC,GAAS,OAClD,UAAWH,IAAU,SAAWE,EAAO,IAAA,GACvC,GAAGE,CACL,EACA,GAAIL,CACL,CAAA,CAEL,CAAC,EAQYM,GAAA,EAAeV,EAAAA,WAAAA,CAC1B,SAAsB,CAAE,QAAQ,EAAG,YAAW,GAAGI,GAAQ,EAAK,CAC5D,OACE,EAAAF,EAAA,IAAA,CAAC,MAAD,CACO,MACL,KAAK,SACL,YAAU,OACV,aAAW,UACX,UAAW,CAAC,oBAAqBI,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,EACpE,GAAIF,EAEH,SAAA,MAAM,KAAK,CAAE,OAAQO,CAAM,GAAI,EAAG,KACjC,EAAAT,EAAA,IAAA,CAACC,EAAD,CAEE,MAAO,CAAE,eAAgB,kCAAkCS,EAAE,EAAG,CACjE,EAFMA,CAEN,CACF,CACE,CAAA,CAET,CACF,E"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type HTMLAttributes } from "react";
|
|
2
|
+
export type SkeletonShape = "text" | "heading" | "block" | "circle";
|
|
3
|
+
export interface SkeletonProps extends HTMLAttributes<HTMLSpanElement> {
|
|
4
|
+
shape?: SkeletonShape;
|
|
5
|
+
/** Any CSS length or percentage. Defaults to filling its container. */
|
|
6
|
+
width?: string;
|
|
7
|
+
/** Only for `circle`, where width and height are the same value. */
|
|
8
|
+
size?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A placeholder with the shape of the thing that is loading. Never a spinner
|
|
12
|
+
* over a blank panel — the layout must not move when the content arrives.
|
|
13
|
+
*/
|
|
14
|
+
export declare const Skeleton: import("react").ForwardRefExoticComponent<SkeletonProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
15
|
+
export interface SkeletonTextProps extends HTMLAttributes<HTMLDivElement> {
|
|
16
|
+
/** Number of lines; the last one renders short. */
|
|
17
|
+
lines?: number;
|
|
18
|
+
}
|
|
19
|
+
/** A paragraph-shaped placeholder. Announced once, as busy, to screen readers. */
|
|
20
|
+
export declare const SkeletonText: import("react").ForwardRefExoticComponent<SkeletonTextProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
21
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/components/Skeleton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpE,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,eAAe,CAAC;IACpE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,2GAkBnB,CAAC;AAEH,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACvE,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,kFAAkF;AAClF,eAAO,MAAM,YAAY,8GAoBxB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type HTMLAttributes } from "react";
|
|
2
|
+
export type SkeletonShape = "text" | "heading" | "block" | "circle";
|
|
3
|
+
export interface SkeletonProps extends HTMLAttributes<HTMLSpanElement> {
|
|
4
|
+
shape?: SkeletonShape;
|
|
5
|
+
/** Any CSS length or percentage. Defaults to filling its container. */
|
|
6
|
+
width?: string;
|
|
7
|
+
/** Only for `circle`, where width and height are the same value. */
|
|
8
|
+
size?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A placeholder with the shape of the thing that is loading. Never a spinner
|
|
12
|
+
* over a blank panel — the layout must not move when the content arrives.
|
|
13
|
+
*/
|
|
14
|
+
export declare const Skeleton: import("react").ForwardRefExoticComponent<SkeletonProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
15
|
+
export interface SkeletonTextProps extends HTMLAttributes<HTMLDivElement> {
|
|
16
|
+
/** Number of lines; the last one renders short. */
|
|
17
|
+
lines?: number;
|
|
18
|
+
}
|
|
19
|
+
/** A paragraph-shaped placeholder. Announced once, as busy, to screen readers. */
|
|
20
|
+
export declare const SkeletonText: import("react").ForwardRefExoticComponent<SkeletonTextProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Skeleton/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEpE,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,eAAe,CAAC;IACpE,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,2GAkBnB,CAAC;AAEH,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACvE,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,kFAAkF;AAClF,eAAO,MAAM,YAAY,8GAoBxB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { forwardRef as e } from "react";
|
|
2
|
+
import { jsx as t } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/Skeleton/index.tsx
|
|
4
|
+
var n = e(function({ shape: e = "text", width: n, size: r, className: i, style: a, ...o }, s) {
|
|
5
|
+
return /* @__PURE__ */ t("span", {
|
|
6
|
+
ref: s,
|
|
7
|
+
"aria-hidden": "true",
|
|
8
|
+
"data-shape": e,
|
|
9
|
+
className: ["ds-skeleton", i].filter(Boolean).join(" "),
|
|
10
|
+
style: {
|
|
11
|
+
inlineSize: e === "circle" ? r : n ?? "100%",
|
|
12
|
+
blockSize: e === "circle" ? r : void 0,
|
|
13
|
+
...a
|
|
14
|
+
},
|
|
15
|
+
...o
|
|
16
|
+
});
|
|
17
|
+
}), r = e(function({ lines: e = 3, className: r, ...i }, a) {
|
|
18
|
+
return /* @__PURE__ */ t("div", {
|
|
19
|
+
ref: a,
|
|
20
|
+
role: "status",
|
|
21
|
+
"aria-busy": "true",
|
|
22
|
+
"aria-label": "Loading",
|
|
23
|
+
className: ["ds-skeleton-lines", r].filter(Boolean).join(" "),
|
|
24
|
+
...i,
|
|
25
|
+
children: Array.from({ length: e }, (e, r) => /* @__PURE__ */ t(n, { style: { animationDelay: `calc(var(--skeleton-stagger) * ${r})` } }, r))
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
//#endregion
|
|
29
|
+
export { n as Skeleton, r as SkeletonText };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["Skeleton","forwardRef","rest","shape","className","size","width","style","SkeletonText","lines","i"],"sources":["../../../src/components/Skeleton/index.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from \"react\";\nimport \"./style.css\";\n\nexport type SkeletonShape = \"text\" | \"heading\" | \"block\" | \"circle\";\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLSpanElement> {\n shape?: SkeletonShape;\n /** Any CSS length or percentage. Defaults to filling its container. */\n width?: string;\n /** Only for `circle`, where width and height are the same value. */\n size?: string;\n}\n\n/**\n * A placeholder with the shape of the thing that is loading. Never a spinner\n * over a blank panel — the layout must not move when the content arrives.\n */\nexport const Skeleton = forwardRef<HTMLSpanElement, SkeletonProps>(function Skeleton(\n { shape = \"text\", width, size, className, style, ...rest },\n ref,\n) {\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n data-shape={shape}\n className={[\"ds-skeleton\", className].filter(Boolean).join(\" \")}\n style={{\n inlineSize: shape === \"circle\" ? size : (width ?? \"100%\"),\n blockSize: shape === \"circle\" ? size : undefined,\n ...style,\n }}\n {...rest}\n />\n );\n});\n\nexport interface SkeletonTextProps extends HTMLAttributes<HTMLDivElement> {\n /** Number of lines; the last one renders short. */\n lines?: number;\n}\n\n/** A paragraph-shaped placeholder. Announced once, as busy, to screen readers. */\nexport const SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n function SkeletonText({ lines = 3, className, ...rest }, ref) {\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-busy=\"true\"\n aria-label=\"Loading\"\n className={[\"ds-skeleton-lines\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {Array.from({ length: lines }, (_, i) => (\n <Skeleton\n key={i}\n style={{ animationDelay: `calc(var(--skeleton-stagger) * ${i})` }}\n />\n ))}\n </div>\n );\n },\n);\n"],"mappings":";;;AAiBA,IAAaA,IAAWC,EAA2C,SACjE,EAAE,WAAQ,QAAQ,UAAO,SAAM,cAAW,UAAO,GAAGC,KACpD,GACA;CACA,OACE,kBAAC,QAAD;EACO;EACL,eAAY;EACZ,cAAYC;EACZ,WAAW,CAAC,eAAeC,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAC9D,OAAO;GACL,YAAYD,MAAU,WAAWE,IAAQC,KAAS;GAClD,WAAWH,MAAU,WAAWE,IAAO,KAAA;GACvC,GAAGE;EACL;EACA,GAAIL;CACL,CAAA;AAEL,CAAC,GAQYM,IAAeP,EAC1B,SAAsB,EAAE,WAAQ,GAAG,cAAW,GAAGC,KAAQ,GAAK;CAC5D,OACE,kBAAC,OAAD;EACO;EACL,MAAK;EACL,aAAU;EACV,cAAW;EACX,WAAW,CAAC,qBAAqBE,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EACpE,GAAIF;EAEH,UAAA,MAAM,KAAK,EAAE,QAAQO,EAAM,IAAI,GAAG,MACjC,kBAACT,GAAD,EAEE,OAAO,EAAE,gBAAgB,kCAAkCU,EAAE,GAAG,EACjE,GAFMA,CAEN,CACF;CACE,CAAA;AAET,CACF"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.ds-skeleton {
|
|
3
|
+
display: block;
|
|
4
|
+
background: color-mix(in srgb, var(--color-text) 9%, var(--color-surface));
|
|
5
|
+
border-radius: var(--field-radius);
|
|
6
|
+
animation: ds-skeleton-pulse var(--skeleton-duration) var(--skeleton-easing) infinite;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.ds-skeleton[data-shape="text"] {
|
|
10
|
+
block-size: var(--space-4);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.ds-skeleton[data-shape="heading"] {
|
|
14
|
+
block-size: var(--space-6);
|
|
15
|
+
border-radius: var(--radius-sm);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.ds-skeleton[data-shape="block"] {
|
|
19
|
+
block-size: var(--space-12);
|
|
20
|
+
border-radius: var(--radius-md);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.ds-skeleton[data-shape="circle"] {
|
|
24
|
+
border-radius: var(--radius-pill);
|
|
25
|
+
aspect-ratio: 1;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.ds-skeleton-lines {
|
|
29
|
+
display: flex;
|
|
30
|
+
flex-direction: column;
|
|
31
|
+
gap: var(--space-2);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* Last line is short, the way real text ends. */
|
|
35
|
+
.ds-skeleton-lines > .ds-skeleton:last-child:not(:only-child) {
|
|
36
|
+
inline-size: 62%;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@keyframes ds-skeleton-pulse {
|
|
40
|
+
0%,
|
|
41
|
+
100% {
|
|
42
|
+
opacity: 100%;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
50% {
|
|
46
|
+
opacity: 45%;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
@media (prefers-reduced-motion: reduce) {
|
|
51
|
+
.ds-skeleton {
|
|
52
|
+
animation: none;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("react"),t=require("react/jsx-runtime");function n(...e){return e.filter(Boolean).join(` `)}function r(e,t,n){return n===t?0:(e-t)/(n-t)*100}var i=(0,e.forwardRef)(function({value:i,defaultValue:a=0,onValueChange:o,min:s=0,max:c=100,step:l=1,hasValueLabel:u=!0,suffix:d,isDisabled:f=!1,className:p,disabled:m,...h},g){let[_,v]=(0,e.useState)(a),y=i??_;return(0,t.jsxs)(`div`,{className:n(`ds-slider`,p),"data-disabled":f||m||void 0,children:[(0,t.jsxs)(`div`,{className:`ds-slider__track`,"data-thumbs":`1`,"data-disabled":f||m||void 0,"data-at-min":y<=s||void 0,"data-at-max":y>=c||void 0,style:{"--slider-from":`0%`,"--slider-to":`${r(y,s,c)}%`},children:[(0,t.jsx)(`span`,{className:`ds-slider__rail`}),(0,t.jsx)(`span`,{className:`ds-slider__fill`}),(0,t.jsx)(`input`,{ref:g,type:`range`,className:`ds-slider__input`,min:s,max:c,step:l,value:y,disabled:f||m,onChange:e=>{let t=Number(e.target.value);i===void 0&&v(t),o?.(t)},...h})]}),u&&(0,t.jsxs)(`output`,{className:`ds-slider__value`,children:[y,d]})]})});function a({value:i,defaultValue:a={min:20,max:80},onValueChange:o,min:s=0,max:c=100,step:l=1,hasValueLabel:u=!0,suffix:d,isDisabled:f=!1,minLabel:p=`Minimum`,maxLabel:m=`Maximum`,className:h}){let[g,_]=(0,e.useState)(a),v=i??g,y=e=>{i===void 0&&_(e),o?.(e)};return(0,t.jsxs)(`div`,{className:n(`ds-slider`,h),"data-disabled":f||void 0,children:[(0,t.jsxs)(`div`,{className:`ds-slider__track`,"data-thumbs":`2`,"data-disabled":f||void 0,"data-at-min":v.min<=s||void 0,"data-at-max":v.max>=c||void 0,style:{"--slider-from":`${r(v.min,s,c)}%`,"--slider-to":`${r(v.max,s,c)}%`},children:[(0,t.jsx)(`span`,{className:`ds-slider__rail`}),(0,t.jsx)(`span`,{className:`ds-slider__fill`}),(0,t.jsx)(`input`,{type:`range`,"aria-label":p,className:`ds-slider__input`,min:s,max:c,step:l,value:v.min,disabled:f,onChange:e=>y({...v,min:Math.min(Number(e.target.value),v.max-l)})}),(0,t.jsx)(`input`,{type:`range`,"aria-label":m,className:`ds-slider__input`,min:s,max:c,step:l,value:v.max,disabled:f,onChange:e=>y({...v,max:Math.max(Number(e.target.value),v.min+l)})})]}),u&&(0,t.jsxs)(`output`,{className:`ds-slider__value`,children:[v.min,d,` – `,v.max,d]})]})}exports.RangeSlider=a,exports.Slider=i;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["forwardRef","useState","react","react_jsx_runtime","cx","parts","percent","max","min","value","Slider","rest","internal","setInternal","defaultValue","current","className","isDisabled","disabled","next","event","onValueChange","hasValueLabel","suffix","RangeSlider","commit","minLabel","step","maxLabel"],"sources":["../../../src/components/Slider/index.tsx"],"sourcesContent":["import {\n forwardRef,\n useState,\n type InputHTMLAttributes,\n} from \"react\";\nimport \"./style.css\";\n\nfunction cx(...parts: (string | undefined | false)[]) {\n return parts.filter(Boolean).join(\" \");\n}\n\nfunction percent(value: number, min: number, max: number) {\n if (max === min) return 0;\n return ((value - min) / (max - min)) * 100;\n}\n\nexport interface SliderProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"type\" | \"value\" | \"defaultValue\" | \"onChange\"> {\n value?: number;\n defaultValue?: number;\n onValueChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n /** Print the current value, in the system's mono, beside the track. */\n hasValueLabel?: boolean;\n /** Appended to the printed value — \"%\", \"px\", \"s\". */\n suffix?: string;\n isDisabled?: boolean;\n}\n\n/** One value on a continuous scale. The filled part of the track is the value. */\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(function Slider(\n {\n value,\n defaultValue = 0,\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n hasValueLabel = true,\n suffix,\n isDisabled = false,\n className,\n disabled,\n ...rest\n },\n ref,\n) {\n const [internal, setInternal] = useState(defaultValue);\n const current = value ?? internal;\n\n return (\n <div className={cx(\"ds-slider\", className)} data-disabled={isDisabled || disabled || undefined}>\n <div\n className=\"ds-slider__track\"\n data-thumbs=\"1\"\n data-disabled={isDisabled || disabled || undefined}\n data-at-min={current <= min || undefined}\n data-at-max={current >= max || undefined}\n style={{\n [\"--slider-from\" as string]: \"0%\",\n [\"--slider-to\" as string]: `${percent(current, min, max)}%`,\n }}\n >\n <span className=\"ds-slider__rail\" />\n <span className=\"ds-slider__fill\" />\n <input\n ref={ref}\n type=\"range\"\n className=\"ds-slider__input\"\n min={min}\n max={max}\n step={step}\n value={current}\n disabled={isDisabled || disabled}\n onChange={(event) => {\n const next = Number(event.target.value);\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n }}\n {...rest}\n />\n </div>\n {hasValueLabel && (\n <output className=\"ds-slider__value\">\n {current}\n {suffix}\n </output>\n )}\n </div>\n );\n});\n\nexport interface RangeSliderValue {\n min: number;\n max: number;\n}\n\nexport interface RangeSliderProps {\n value?: RangeSliderValue;\n defaultValue?: RangeSliderValue;\n onValueChange?: (value: RangeSliderValue) => void;\n min?: number;\n max?: number;\n step?: number;\n hasValueLabel?: boolean;\n suffix?: string;\n isDisabled?: boolean;\n minLabel?: string;\n maxLabel?: string;\n className?: string;\n}\n\n/**\n * A span on a scale — two thumbs on one track. The thumbs cannot cross; each\n * one stops a `step` short of the other.\n */\nexport function RangeSlider({\n value,\n defaultValue = { min: 20, max: 80 },\n onValueChange,\n min = 0,\n max = 100,\n step = 1,\n hasValueLabel = true,\n suffix,\n isDisabled = false,\n minLabel = \"Minimum\",\n maxLabel = \"Maximum\",\n className,\n}: RangeSliderProps) {\n const [internal, setInternal] = useState<RangeSliderValue>(defaultValue);\n const current = value ?? internal;\n\n const commit = (next: RangeSliderValue) => {\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n };\n\n return (\n <div className={cx(\"ds-slider\", className)} data-disabled={isDisabled || undefined}>\n <div\n className=\"ds-slider__track\"\n data-thumbs=\"2\"\n data-disabled={isDisabled || undefined}\n data-at-min={current.min <= min || undefined}\n data-at-max={current.max >= max || undefined}\n style={{\n [\"--slider-from\" as string]: `${percent(current.min, min, max)}%`,\n [\"--slider-to\" as string]: `${percent(current.max, min, max)}%`,\n }}\n >\n <span className=\"ds-slider__rail\" />\n <span className=\"ds-slider__fill\" />\n <input\n type=\"range\"\n aria-label={minLabel}\n className=\"ds-slider__input\"\n min={min}\n max={max}\n step={step}\n value={current.min}\n disabled={isDisabled}\n onChange={(event) =>\n commit({ ...current, min: Math.min(Number(event.target.value), current.max - step) })\n }\n />\n <input\n type=\"range\"\n aria-label={maxLabel}\n className=\"ds-slider__input\"\n min={min}\n max={max}\n step={step}\n value={current.max}\n disabled={isDisabled}\n onChange={(event) =>\n commit({ ...current, max: Math.max(Number(event.target.value), current.min + step) })\n }\n />\n </div>\n {hasValueLabel && (\n <output className=\"ds-slider__value\">\n {current.min}\n {suffix} – {current.max}\n {suffix}\n </output>\n )}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type InputHTMLAttributes } from "react";
|
|
2
|
+
export interface SliderProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "value" | "defaultValue" | "onChange"> {
|
|
3
|
+
value?: number;
|
|
4
|
+
defaultValue?: number;
|
|
5
|
+
onValueChange?: (value: number) => void;
|
|
6
|
+
min?: number;
|
|
7
|
+
max?: number;
|
|
8
|
+
step?: number;
|
|
9
|
+
/** Print the current value, in the system's mono, beside the track. */
|
|
10
|
+
hasValueLabel?: boolean;
|
|
11
|
+
/** Appended to the printed value — "%", "px", "s". */
|
|
12
|
+
suffix?: string;
|
|
13
|
+
isDisabled?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** One value on a continuous scale. The filled part of the track is the value. */
|
|
16
|
+
export declare const Slider: import("react").ForwardRefExoticComponent<SliderProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
17
|
+
export interface RangeSliderValue {
|
|
18
|
+
min: number;
|
|
19
|
+
max: number;
|
|
20
|
+
}
|
|
21
|
+
export interface RangeSliderProps {
|
|
22
|
+
value?: RangeSliderValue;
|
|
23
|
+
defaultValue?: RangeSliderValue;
|
|
24
|
+
onValueChange?: (value: RangeSliderValue) => void;
|
|
25
|
+
min?: number;
|
|
26
|
+
max?: number;
|
|
27
|
+
step?: number;
|
|
28
|
+
hasValueLabel?: boolean;
|
|
29
|
+
suffix?: string;
|
|
30
|
+
isDisabled?: boolean;
|
|
31
|
+
minLabel?: string;
|
|
32
|
+
maxLabel?: string;
|
|
33
|
+
className?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A span on a scale — two thumbs on one track. The thumbs cannot cross; each
|
|
37
|
+
* one stops a `step` short of the other.
|
|
38
|
+
*/
|
|
39
|
+
export declare function RangeSlider({ value, defaultValue, onValueChange, min, max, step, hasValueLabel, suffix, isDisabled, minLabel, maxLabel, className, }: RangeSliderProps): import("react").JSX.Element;
|
|
40
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/components/Slider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,OAAO,CAAC;AACf,OAAO,aAAa,CAAC;AAWrB,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,cAAc,GAAG,UAAU,CAAC;IACnG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,kFAAkF;AAClF,eAAO,MAAM,MAAM,0GA4DjB,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,YAAmC,EACnC,aAAa,EACb,GAAO,EACP,GAAS,EACT,IAAQ,EACR,aAAoB,EACpB,MAAM,EACN,UAAkB,EAClB,QAAoB,EACpB,QAAoB,EACpB,SAAS,GACV,EAAE,gBAAgB,+BA4DlB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type InputHTMLAttributes } from "react";
|
|
2
|
+
export interface SliderProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "value" | "defaultValue" | "onChange"> {
|
|
3
|
+
value?: number;
|
|
4
|
+
defaultValue?: number;
|
|
5
|
+
onValueChange?: (value: number) => void;
|
|
6
|
+
min?: number;
|
|
7
|
+
max?: number;
|
|
8
|
+
step?: number;
|
|
9
|
+
/** Print the current value, in the system's mono, beside the track. */
|
|
10
|
+
hasValueLabel?: boolean;
|
|
11
|
+
/** Appended to the printed value — "%", "px", "s". */
|
|
12
|
+
suffix?: string;
|
|
13
|
+
isDisabled?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** One value on a continuous scale. The filled part of the track is the value. */
|
|
16
|
+
export declare const Slider: import("react").ForwardRefExoticComponent<SliderProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
17
|
+
export interface RangeSliderValue {
|
|
18
|
+
min: number;
|
|
19
|
+
max: number;
|
|
20
|
+
}
|
|
21
|
+
export interface RangeSliderProps {
|
|
22
|
+
value?: RangeSliderValue;
|
|
23
|
+
defaultValue?: RangeSliderValue;
|
|
24
|
+
onValueChange?: (value: RangeSliderValue) => void;
|
|
25
|
+
min?: number;
|
|
26
|
+
max?: number;
|
|
27
|
+
step?: number;
|
|
28
|
+
hasValueLabel?: boolean;
|
|
29
|
+
suffix?: string;
|
|
30
|
+
isDisabled?: boolean;
|
|
31
|
+
minLabel?: string;
|
|
32
|
+
maxLabel?: string;
|
|
33
|
+
className?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A span on a scale — two thumbs on one track. The thumbs cannot cross; each
|
|
37
|
+
* one stops a `step` short of the other.
|
|
38
|
+
*/
|
|
39
|
+
export declare function RangeSlider({ value, defaultValue, onValueChange, min, max, step, hasValueLabel, suffix, isDisabled, minLabel, maxLabel, className, }: RangeSliderProps): import("react").JSX.Element;
|
|
40
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Slider/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,OAAO,CAAC;AACf,OAAO,aAAa,CAAC;AAWrB,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,cAAc,GAAG,UAAU,CAAC;IACnG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,kFAAkF;AAClF,eAAO,MAAM,MAAM,0GA4DjB,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAClD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,YAAmC,EACnC,aAAa,EACb,GAAO,EACP,GAAS,EACT,IAAQ,EACR,aAAoB,EACpB,MAAM,EACN,UAAkB,EAClB,QAAoB,EACpB,QAAoB,EACpB,SAAS,GACV,EAAE,gBAAgB,+BA4DlB"}
|