@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,65 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.ds-switch {
|
|
3
|
+
display: inline-flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
gap: var(--space-3);
|
|
6
|
+
cursor: pointer;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.ds-switch__track {
|
|
10
|
+
position: relative;
|
|
11
|
+
flex: none;
|
|
12
|
+
inline-size: var(--switch-width);
|
|
13
|
+
block-size: var(--switch-height);
|
|
14
|
+
padding: 0;
|
|
15
|
+
border: var(--control-border-width) solid var(--control-border-color);
|
|
16
|
+
border-radius: var(--radius-pill);
|
|
17
|
+
background: var(--field-rest);
|
|
18
|
+
cursor: pointer;
|
|
19
|
+
transition: background-color var(--duration-fast) var(--ease-standard);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.ds-switch__track:hover:not(:disabled) {
|
|
23
|
+
background: var(--field-hover);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.ds-switch__track[aria-checked="true"] {
|
|
27
|
+
background: var(--color-primary);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
.ds-switch__track[aria-checked="true"]:hover:not(:disabled) {
|
|
31
|
+
background: var(--color-primary-hover);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.ds-switch__track:focus-visible {
|
|
35
|
+
outline: var(--control-border-width) solid var(--color-focus);
|
|
36
|
+
outline-offset: 2px;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.ds-switch__track:disabled {
|
|
40
|
+
opacity: 45%;
|
|
41
|
+
cursor: not-allowed;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.ds-switch__knob {
|
|
45
|
+
position: absolute;
|
|
46
|
+
inset-block-start: 50%;
|
|
47
|
+
inset-inline-start: 2px;
|
|
48
|
+
inline-size: var(--switch-knob-size);
|
|
49
|
+
block-size: var(--switch-knob-size);
|
|
50
|
+
border-radius: var(--radius-pill);
|
|
51
|
+
background: var(--control-border-color);
|
|
52
|
+
translate: 0 -50%;
|
|
53
|
+
transition: translate var(--duration-fast) var(--ease-standard),
|
|
54
|
+
background-color var(--duration-fast) var(--ease-standard);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.ds-switch__track[aria-checked="true"] .ds-switch__knob {
|
|
58
|
+
background: var(--color-text-on-solid);
|
|
59
|
+
translate: calc(var(--switch-width) - var(--switch-knob-size) - 8px) -50%;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.ds-switch__label {
|
|
63
|
+
font-size: var(--font-size-sm);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../chunks/Icon-CWsA1W83.cjs");let t=require("react"),n=require("react/jsx-runtime");function r(...e){return e.filter(Boolean).join(` `)}var i=(0,t.forwardRef)(function({className:e,children:t,...i},a){return(0,n.jsx)(`div`,{ref:a,className:r(`ds-table-frame`,e),...i,children:t})}),a=(0,t.forwardRef)(function({start:e,end:t,className:i,...a},o){return(0,n.jsxs)(`div`,{ref:o,className:r(`ds-table-toolbar`,i),...a,children:[(0,n.jsx)(`div`,{className:`ds-table-toolbar__group`,children:e}),(0,n.jsx)(`div`,{className:`ds-table-toolbar__group`,children:t})]})}),o=(0,t.forwardRef)(function({className:e,children:t,...i},a){return(0,n.jsx)(`div`,{className:`ds-table-frame__scroll`,children:(0,n.jsx)(`table`,{ref:a,className:r(`ds-table`,e),...i,children:t})})}),s=(0,t.forwardRef)(function({className:e,...t},r){return(0,n.jsx)(`thead`,{ref:r,className:e,...t})}),c=(0,t.forwardRef)(function({className:e,...t},r){return(0,n.jsx)(`tbody`,{ref:r,className:e,...t})}),l=(0,t.forwardRef)(function({isSelected:e=!1,isInteractive:t=!1,className:r,...i},a){return(0,n.jsx)(`tr`,{ref:a,"data-selected":e||void 0,"data-interactive":t||void 0,tabIndex:t?0:void 0,className:r,...i})}),u=(0,t.forwardRef)(function({align:e=`start`,width:t=`auto`,className:r,...i},a){return(0,n.jsx)(`th`,{ref:a,scope:`col`,"data-align":e,"data-width":t,className:r,...i})}),d=(0,t.forwardRef)(function({align:e=`start`,width:t=`auto`,emphasis:r=`default`,className:i,...a},o){return(0,n.jsx)(`td`,{ref:o,"data-align":e,"data-width":t,"data-emphasis":r==="default"?void 0:r,className:i,...a})}),f=(0,t.forwardRef)(function({icon:t=`info`,title:i,description:a,action:o,className:s,...c},l){return(0,n.jsxs)(`div`,{ref:l,className:r(`ds-table-empty`,s),...c,children:[(0,n.jsx)(e.t,{name:t,size:24}),(0,n.jsx)(`span`,{style:{color:`var(--color-text)`,fontWeight:`var(--font-weight-bold)`},children:i}),a&&(0,n.jsx)(`span`,{children:a}),o]})});exports.Table=o,exports.TableBody=c,exports.TableCell=d,exports.TableEmpty=f,exports.TableFrame=i,exports.TableHead=s,exports.TableHeaderCell=u,exports.TableRow=l,exports.TableToolbar=a;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["forwardRef","Icon","require_Icon","react","react_jsx_runtime","cx","parts","TableFrame","rest","className","TableToolbar","start","end","Table","TableHead","TableBody","TableRow","isSelected","isInteractive","TableHeaderCell","align","width","TableCell","emphasis","TableEmpty","icon","title","description","action"],"sources":["../../../src/components/Table/index.tsx"],"sourcesContent":["import {\n forwardRef,\n type HTMLAttributes,\n type ReactNode,\n type TableHTMLAttributes,\n type TdHTMLAttributes,\n type ThHTMLAttributes,\n} from \"react\";\nimport { Icon } from \"../Icon\";\nimport type { IconName } from \"../Icon/icons\";\nimport \"./style.css\";\n\nfunction cx(...parts: (string | undefined | false)[]) {\n return parts.filter(Boolean).join(\" \");\n}\n\nexport interface TableFrameProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\n/** The 3px collection frame every table, list and board sits inside. */\nexport const TableFrame = forwardRef<HTMLDivElement, TableFrameProps>(function TableFrame(\n { className, children, ...rest },\n ref,\n) {\n return (\n <div ref={ref} className={cx(\"ds-table-frame\", className)} {...rest}>\n {children}\n </div>\n );\n});\n\nexport interface TableToolbarProps extends HTMLAttributes<HTMLDivElement> {\n /** Left side — usually a select-all checkbox, a title and a count badge. */\n start?: ReactNode;\n /** Right side — filters and the one primary action. */\n end?: ReactNode;\n}\n\n/** The band above the rules: selection, title, count, filters, primary action. */\nexport const TableToolbar = forwardRef<HTMLDivElement, TableToolbarProps>(\n function TableToolbar({ start, end, className, ...rest }, ref) {\n return (\n <div ref={ref} className={cx(\"ds-table-toolbar\", className)} {...rest}>\n <div className=\"ds-table-toolbar__group\">{start}</div>\n <div className=\"ds-table-toolbar__group\">{end}</div>\n </div>\n );\n },\n);\n\nexport interface TableProps extends TableHTMLAttributes<HTMLTableElement> {\n children?: ReactNode;\n}\n\n/** The rules layer. Always render it inside a `TableFrame`. */\nexport const Table = forwardRef<HTMLTableElement, TableProps>(function Table(\n { className, children, ...rest },\n ref,\n) {\n return (\n <div className=\"ds-table-frame__scroll\">\n <table ref={ref} className={cx(\"ds-table\", className)} {...rest}>\n {children}\n </table>\n </div>\n );\n});\n\nexport const TableHead = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n function TableHead({ className, ...rest }, ref) {\n return <thead ref={ref} className={className} {...rest} />;\n },\n);\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n function TableBody({ className, ...rest }, ref) {\n return <tbody ref={ref} className={className} {...rest} />;\n },\n);\n\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n /** Paints the soft fill and the solid rail. Never changes the row's size. */\n isSelected?: boolean;\n /** Marks the row clickable: hover fill plus a pointer cursor. */\n isInteractive?: boolean;\n}\n\nexport const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(function TableRow(\n { isSelected = false, isInteractive = false, className, ...rest },\n ref,\n) {\n return (\n <tr\n ref={ref}\n data-selected={isSelected || undefined}\n data-interactive={isInteractive || undefined}\n tabIndex={isInteractive ? 0 : undefined}\n className={className}\n {...rest}\n />\n );\n});\n\nexport type TableAlign = \"start\" | \"end\";\nexport type TableCellWidth = \"auto\" | \"control\";\n\nexport interface TableHeaderCellProps\n extends Omit<ThHTMLAttributes<HTMLTableCellElement>, \"align\"> {\n align?: TableAlign;\n width?: TableCellWidth;\n}\n\nexport const TableHeaderCell = forwardRef<HTMLTableCellElement, TableHeaderCellProps>(\n function TableHeaderCell({ align = \"start\", width = \"auto\", className, ...rest }, ref) {\n return (\n <th\n ref={ref}\n scope=\"col\"\n data-align={align}\n data-width={width}\n className={className}\n {...rest}\n />\n );\n },\n);\n\nexport type TableCellEmphasis = \"default\" | \"primary\" | \"muted\";\n\nexport interface TableCellProps\n extends Omit<TdHTMLAttributes<HTMLTableCellElement>, \"align\"> {\n align?: TableAlign;\n width?: TableCellWidth;\n /** `primary` is the row's identity cell — one per row, never two. */\n emphasis?: TableCellEmphasis;\n}\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TableCellProps>(function TableCell(\n { align = \"start\", width = \"auto\", emphasis = \"default\", className, ...rest },\n ref,\n) {\n return (\n <td\n ref={ref}\n data-align={align}\n data-width={width}\n data-emphasis={emphasis === \"default\" ? undefined : emphasis}\n className={className}\n {...rest}\n />\n );\n});\n\nexport interface TableEmptyProps extends HTMLAttributes<HTMLDivElement> {\n icon?: IconName;\n title: string;\n description?: string;\n /** One action at most — the thing that ends the empty state. */\n action?: ReactNode;\n}\n\n/** What the frame shows when the collection has no rows. */\nexport const TableEmpty = forwardRef<HTMLDivElement, TableEmptyProps>(function TableEmpty(\n { icon = \"info\", title, description, action, className, ...rest },\n ref,\n) {\n return (\n <div ref={ref} className={cx(\"ds-table-empty\", className)} {...rest}>\n <Icon name={icon} size={24} />\n <span style={{ color: \"var(--color-text)\", fontWeight: \"var(--font-weight-bold)\" }}>\n {title}\n </span>\n {description && <span>{description}</span>}\n {action}\n </div>\n );\n});\n"],"mappings":"A,2KAYA,SAASK,EAAG,GAAGC,EAAuC,CACpD,OAAOA,EAAM,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,CACvC,CAOA,IAAaC,GAAA,EAAaP,EAAAA,WAAAA,CAA4C,SACpE,CAAE,YAAW,WAAU,GAAGQ,GAC1B,EACA,CACA,OACE,EAAAJ,EAAA,IAAA,CAAC,MAAD,CAAU,MAAK,UAAWC,EAAG,iBAAkBI,CAAS,EAAG,GAAID,EAC5D,UACE,CAAA,CAET,CAAC,EAUYE,GAAA,EAAeV,EAAAA,WAAAA,CAC1B,SAAsB,CAAE,QAAO,MAAK,YAAW,GAAGQ,GAAQ,EAAK,CAC7D,OACE,EAAAJ,EAAA,KAAA,CAAC,MAAD,CAAU,MAAK,UAAWC,EAAG,mBAAoBI,CAAS,EAAG,GAAID,EAAjE,SAAA,EACE,EAAAJ,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,0BAA2B,SAAAO,CAAW,CAAA,GACrD,EAAAP,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,0BAA2B,SAAAQ,CAAS,CAAA,CAChD,C,EAET,CACF,EAOaC,GAAA,EAAQb,EAAAA,WAAAA,CAAyC,SAC5D,CAAE,YAAW,WAAU,GAAGQ,GAC1B,EACA,CACA,OACE,EAAAJ,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,yBACb,UAAA,EAAAA,EAAA,IAAA,CAAC,QAAD,CAAY,MAAK,UAAWC,EAAG,WAAYI,CAAS,EAAG,GAAID,EACxD,UACI,CAAA,CACJ,CAAA,CAET,CAAC,EAEYM,GAAA,EAAYd,EAAAA,WAAAA,CACvB,SAAmB,CAAE,YAAW,GAAGQ,GAAQ,EAAK,CAC9C,OAAO,EAAAJ,EAAA,IAAA,CAAC,QAAD,CAAY,MAAgB,YAAW,GAAII,CAAO,CAAA,CAC3D,CACF,EAEaO,GAAA,EAAYf,EAAAA,WAAAA,CACvB,SAAmB,CAAE,YAAW,GAAGQ,GAAQ,EAAK,CAC9C,OAAO,EAAAJ,EAAA,IAAA,CAAC,QAAD,CAAY,MAAgB,YAAW,GAAII,CAAO,CAAA,CAC3D,CACF,EASaQ,GAAA,EAAWhB,EAAAA,WAAAA,CAA+C,SACrE,CAAE,aAAa,GAAO,gBAAgB,GAAO,YAAW,GAAGQ,GAC3D,EACA,CACA,OACE,EAAAJ,EAAA,IAAA,CAAC,KAAD,CACO,MACL,gBAAea,GAAc,IAAA,GAC7B,mBAAkBC,GAAiB,IAAA,GACnC,SAAUA,EAAgB,EAAI,IAAA,GACnB,YACX,GAAIV,CACL,CAAA,CAEL,CAAC,EAWYW,GAAA,EAAkBnB,EAAAA,WAAAA,CAC7B,SAAyB,CAAE,QAAQ,QAAS,QAAQ,OAAQ,YAAW,GAAGQ,GAAQ,EAAK,CACrF,OACE,EAAAJ,EAAA,IAAA,CAAC,KAAD,CACO,MACL,MAAM,MACN,aAAYgB,EACZ,aAAYC,EACD,YACX,GAAIb,CACL,CAAA,CAEL,CACF,EAYac,GAAA,EAAYtB,EAAAA,WAAAA,CAAiD,SACxE,CAAE,QAAQ,QAAS,QAAQ,OAAQ,WAAW,UAAW,YAAW,GAAGQ,GACvE,EACA,CACA,OACE,EAAAJ,EAAA,IAAA,CAAC,KAAD,CACO,MACL,aAAYgB,EACZ,aAAYC,EACZ,gBAAeE,IAAa,UAAY,IAAA,GAAYA,EACzC,YACX,GAAIf,CACL,CAAA,CAEL,CAAC,EAWYgB,GAAA,EAAaxB,EAAAA,WAAAA,CAA4C,SACpE,CAAE,OAAO,OAAQ,QAAO,cAAa,SAAQ,YAAW,GAAGQ,GAC3D,EACA,CACA,OACE,EAAAJ,EAAA,KAAA,CAAC,MAAD,CAAU,MAAK,UAAWC,EAAG,iBAAkBI,CAAS,EAAG,GAAID,EAA/D,SAAA,EACE,EAAAJ,EAAA,IAAA,CAACH,EAAAA,EAAD,CAAM,KAAMwB,EAAM,KAAM,EAAK,CAAA,GAC7B,EAAArB,EAAA,IAAA,CAAC,OAAD,CAAM,MAAO,CAAE,MAAO,oBAAqB,WAAY,yBAA0B,EAC9E,SAAAsB,CACG,CAAA,EACLC,IAAe,EAAAvB,EAAA,IAAA,CAAC,OAAD,CAAA,SAAOuB,CAAkB,CAAA,EACxCC,CACE,C,EAET,CAAC,E"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode, type TableHTMLAttributes, type TdHTMLAttributes, type ThHTMLAttributes } from "react";
|
|
2
|
+
import type { IconName } from "../Icon/icons.cjs";
|
|
3
|
+
export interface TableFrameProps extends HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
}
|
|
6
|
+
/** The 3px collection frame every table, list and board sits inside. */
|
|
7
|
+
export declare const TableFrame: import("react").ForwardRefExoticComponent<TableFrameProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
8
|
+
export interface TableToolbarProps extends HTMLAttributes<HTMLDivElement> {
|
|
9
|
+
/** Left side — usually a select-all checkbox, a title and a count badge. */
|
|
10
|
+
start?: ReactNode;
|
|
11
|
+
/** Right side — filters and the one primary action. */
|
|
12
|
+
end?: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
/** The band above the rules: selection, title, count, filters, primary action. */
|
|
15
|
+
export declare const TableToolbar: import("react").ForwardRefExoticComponent<TableToolbarProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
16
|
+
export interface TableProps extends TableHTMLAttributes<HTMLTableElement> {
|
|
17
|
+
children?: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/** The rules layer. Always render it inside a `TableFrame`. */
|
|
20
|
+
export declare const Table: import("react").ForwardRefExoticComponent<TableProps & import("react").RefAttributes<HTMLTableElement>>;
|
|
21
|
+
export declare const TableHead: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & import("react").RefAttributes<HTMLTableSectionElement>>;
|
|
22
|
+
export declare const TableBody: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & import("react").RefAttributes<HTMLTableSectionElement>>;
|
|
23
|
+
export interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {
|
|
24
|
+
/** Paints the soft fill and the solid rail. Never changes the row's size. */
|
|
25
|
+
isSelected?: boolean;
|
|
26
|
+
/** Marks the row clickable: hover fill plus a pointer cursor. */
|
|
27
|
+
isInteractive?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare const TableRow: import("react").ForwardRefExoticComponent<TableRowProps & import("react").RefAttributes<HTMLTableRowElement>>;
|
|
30
|
+
export type TableAlign = "start" | "end";
|
|
31
|
+
export type TableCellWidth = "auto" | "control";
|
|
32
|
+
export interface TableHeaderCellProps extends Omit<ThHTMLAttributes<HTMLTableCellElement>, "align"> {
|
|
33
|
+
align?: TableAlign;
|
|
34
|
+
width?: TableCellWidth;
|
|
35
|
+
}
|
|
36
|
+
export declare const TableHeaderCell: import("react").ForwardRefExoticComponent<TableHeaderCellProps & import("react").RefAttributes<HTMLTableCellElement>>;
|
|
37
|
+
export type TableCellEmphasis = "default" | "primary" | "muted";
|
|
38
|
+
export interface TableCellProps extends Omit<TdHTMLAttributes<HTMLTableCellElement>, "align"> {
|
|
39
|
+
align?: TableAlign;
|
|
40
|
+
width?: TableCellWidth;
|
|
41
|
+
/** `primary` is the row's identity cell — one per row, never two. */
|
|
42
|
+
emphasis?: TableCellEmphasis;
|
|
43
|
+
}
|
|
44
|
+
export declare const TableCell: import("react").ForwardRefExoticComponent<TableCellProps & import("react").RefAttributes<HTMLTableCellElement>>;
|
|
45
|
+
export interface TableEmptyProps extends HTMLAttributes<HTMLDivElement> {
|
|
46
|
+
icon?: IconName;
|
|
47
|
+
title: string;
|
|
48
|
+
description?: string;
|
|
49
|
+
/** One action at most — the thing that ends the empty state. */
|
|
50
|
+
action?: ReactNode;
|
|
51
|
+
}
|
|
52
|
+
/** What the frame shows when the collection has no rows. */
|
|
53
|
+
export declare const TableEmpty: import("react").ForwardRefExoticComponent<TableEmptyProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
54
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/components/Table/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,aAAa,CAAC;AAMrB,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACrE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wEAAwE;AACxE,eAAO,MAAM,UAAU,4GASrB,CAAC;AAEH,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACvE,4EAA4E;IAC5E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,uDAAuD;IACvD,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,kFAAkF;AAClF,eAAO,MAAM,YAAY,8GASxB,CAAC;AAEF,MAAM,WAAW,UAAW,SAAQ,mBAAmB,CAAC,gBAAgB,CAAC;IACvE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,+DAA+D;AAC/D,eAAO,MAAM,KAAK,yGAWhB,CAAC;AAEH,eAAO,MAAM,SAAS,6IAIrB,CAAC;AAEF,eAAO,MAAM,SAAS,6IAIrB,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,mBAAmB,CAAC;IACxE,6EAA6E;IAC7E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,QAAQ,+GAcnB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;AACzC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhD,MAAM,WAAW,oBACf,SAAQ,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC7D,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,uHAa3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhE,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC7D,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,eAAO,MAAM,SAAS,iHAcpB,CAAC;AAEH,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACrE,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,4DAA4D;AAC5D,eAAO,MAAM,UAAU,4GAcrB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode, type TableHTMLAttributes, type TdHTMLAttributes, type ThHTMLAttributes } from "react";
|
|
2
|
+
import type { IconName } from "../Icon/icons.js";
|
|
3
|
+
export interface TableFrameProps extends HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
children?: ReactNode;
|
|
5
|
+
}
|
|
6
|
+
/** The 3px collection frame every table, list and board sits inside. */
|
|
7
|
+
export declare const TableFrame: import("react").ForwardRefExoticComponent<TableFrameProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
8
|
+
export interface TableToolbarProps extends HTMLAttributes<HTMLDivElement> {
|
|
9
|
+
/** Left side — usually a select-all checkbox, a title and a count badge. */
|
|
10
|
+
start?: ReactNode;
|
|
11
|
+
/** Right side — filters and the one primary action. */
|
|
12
|
+
end?: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
/** The band above the rules: selection, title, count, filters, primary action. */
|
|
15
|
+
export declare const TableToolbar: import("react").ForwardRefExoticComponent<TableToolbarProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
16
|
+
export interface TableProps extends TableHTMLAttributes<HTMLTableElement> {
|
|
17
|
+
children?: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/** The rules layer. Always render it inside a `TableFrame`. */
|
|
20
|
+
export declare const Table: import("react").ForwardRefExoticComponent<TableProps & import("react").RefAttributes<HTMLTableElement>>;
|
|
21
|
+
export declare const TableHead: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & import("react").RefAttributes<HTMLTableSectionElement>>;
|
|
22
|
+
export declare const TableBody: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & import("react").RefAttributes<HTMLTableSectionElement>>;
|
|
23
|
+
export interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {
|
|
24
|
+
/** Paints the soft fill and the solid rail. Never changes the row's size. */
|
|
25
|
+
isSelected?: boolean;
|
|
26
|
+
/** Marks the row clickable: hover fill plus a pointer cursor. */
|
|
27
|
+
isInteractive?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare const TableRow: import("react").ForwardRefExoticComponent<TableRowProps & import("react").RefAttributes<HTMLTableRowElement>>;
|
|
30
|
+
export type TableAlign = "start" | "end";
|
|
31
|
+
export type TableCellWidth = "auto" | "control";
|
|
32
|
+
export interface TableHeaderCellProps extends Omit<ThHTMLAttributes<HTMLTableCellElement>, "align"> {
|
|
33
|
+
align?: TableAlign;
|
|
34
|
+
width?: TableCellWidth;
|
|
35
|
+
}
|
|
36
|
+
export declare const TableHeaderCell: import("react").ForwardRefExoticComponent<TableHeaderCellProps & import("react").RefAttributes<HTMLTableCellElement>>;
|
|
37
|
+
export type TableCellEmphasis = "default" | "primary" | "muted";
|
|
38
|
+
export interface TableCellProps extends Omit<TdHTMLAttributes<HTMLTableCellElement>, "align"> {
|
|
39
|
+
align?: TableAlign;
|
|
40
|
+
width?: TableCellWidth;
|
|
41
|
+
/** `primary` is the row's identity cell — one per row, never two. */
|
|
42
|
+
emphasis?: TableCellEmphasis;
|
|
43
|
+
}
|
|
44
|
+
export declare const TableCell: import("react").ForwardRefExoticComponent<TableCellProps & import("react").RefAttributes<HTMLTableCellElement>>;
|
|
45
|
+
export interface TableEmptyProps extends HTMLAttributes<HTMLDivElement> {
|
|
46
|
+
icon?: IconName;
|
|
47
|
+
title: string;
|
|
48
|
+
description?: string;
|
|
49
|
+
/** One action at most — the thing that ends the empty state. */
|
|
50
|
+
action?: ReactNode;
|
|
51
|
+
}
|
|
52
|
+
/** What the frame shows when the collection has no rows. */
|
|
53
|
+
export declare const TableEmpty: import("react").ForwardRefExoticComponent<TableEmptyProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
54
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Table/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,aAAa,CAAC;AAMrB,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACrE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wEAAwE;AACxE,eAAO,MAAM,UAAU,4GASrB,CAAC;AAEH,MAAM,WAAW,iBAAkB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACvE,4EAA4E;IAC5E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,uDAAuD;IACvD,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,kFAAkF;AAClF,eAAO,MAAM,YAAY,8GASxB,CAAC;AAEF,MAAM,WAAW,UAAW,SAAQ,mBAAmB,CAAC,gBAAgB,CAAC;IACvE,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,+DAA+D;AAC/D,eAAO,MAAM,KAAK,yGAWhB,CAAC;AAEH,eAAO,MAAM,SAAS,6IAIrB,CAAC;AAEF,eAAO,MAAM,SAAS,6IAIrB,CAAC;AAEF,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,mBAAmB,CAAC;IACxE,6EAA6E;IAC7E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,QAAQ,+GAcnB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,KAAK,CAAC;AACzC,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhD,MAAM,WAAW,oBACf,SAAQ,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC7D,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,cAAc,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,uHAa3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEhE,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC7D,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAED,eAAO,MAAM,SAAS,iHAcpB,CAAC;AAEH,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACrE,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gEAAgE;IAChE,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,4DAA4D;AAC5D,eAAO,MAAM,UAAU,4GAcrB,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { t as e } from "../../chunks/Icon-CGY1FNXT.js";
|
|
2
|
+
import { forwardRef as t } from "react";
|
|
3
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
|
+
//#region src/components/Table/index.tsx
|
|
5
|
+
function i(...e) {
|
|
6
|
+
return e.filter(Boolean).join(" ");
|
|
7
|
+
}
|
|
8
|
+
var a = t(function({ className: e, children: t, ...r }, a) {
|
|
9
|
+
return /* @__PURE__ */ n("div", {
|
|
10
|
+
ref: a,
|
|
11
|
+
className: i("ds-table-frame", e),
|
|
12
|
+
...r,
|
|
13
|
+
children: t
|
|
14
|
+
});
|
|
15
|
+
}), o = t(function({ start: e, end: t, className: a, ...o }, s) {
|
|
16
|
+
return /* @__PURE__ */ r("div", {
|
|
17
|
+
ref: s,
|
|
18
|
+
className: i("ds-table-toolbar", a),
|
|
19
|
+
...o,
|
|
20
|
+
children: [/* @__PURE__ */ n("div", {
|
|
21
|
+
className: "ds-table-toolbar__group",
|
|
22
|
+
children: e
|
|
23
|
+
}), /* @__PURE__ */ n("div", {
|
|
24
|
+
className: "ds-table-toolbar__group",
|
|
25
|
+
children: t
|
|
26
|
+
})]
|
|
27
|
+
});
|
|
28
|
+
}), s = t(function({ className: e, children: t, ...r }, a) {
|
|
29
|
+
return /* @__PURE__ */ n("div", {
|
|
30
|
+
className: "ds-table-frame__scroll",
|
|
31
|
+
children: /* @__PURE__ */ n("table", {
|
|
32
|
+
ref: a,
|
|
33
|
+
className: i("ds-table", e),
|
|
34
|
+
...r,
|
|
35
|
+
children: t
|
|
36
|
+
})
|
|
37
|
+
});
|
|
38
|
+
}), c = t(function({ className: e, ...t }, r) {
|
|
39
|
+
return /* @__PURE__ */ n("thead", {
|
|
40
|
+
ref: r,
|
|
41
|
+
className: e,
|
|
42
|
+
...t
|
|
43
|
+
});
|
|
44
|
+
}), l = t(function({ className: e, ...t }, r) {
|
|
45
|
+
return /* @__PURE__ */ n("tbody", {
|
|
46
|
+
ref: r,
|
|
47
|
+
className: e,
|
|
48
|
+
...t
|
|
49
|
+
});
|
|
50
|
+
}), u = t(function({ isSelected: e = !1, isInteractive: t = !1, className: r, ...i }, a) {
|
|
51
|
+
return /* @__PURE__ */ n("tr", {
|
|
52
|
+
ref: a,
|
|
53
|
+
"data-selected": e || void 0,
|
|
54
|
+
"data-interactive": t || void 0,
|
|
55
|
+
tabIndex: t ? 0 : void 0,
|
|
56
|
+
className: r,
|
|
57
|
+
...i
|
|
58
|
+
});
|
|
59
|
+
}), d = t(function({ align: e = "start", width: t = "auto", className: r, ...i }, a) {
|
|
60
|
+
return /* @__PURE__ */ n("th", {
|
|
61
|
+
ref: a,
|
|
62
|
+
scope: "col",
|
|
63
|
+
"data-align": e,
|
|
64
|
+
"data-width": t,
|
|
65
|
+
className: r,
|
|
66
|
+
...i
|
|
67
|
+
});
|
|
68
|
+
}), f = t(function({ align: e = "start", width: t = "auto", emphasis: r = "default", className: i, ...a }, o) {
|
|
69
|
+
return /* @__PURE__ */ n("td", {
|
|
70
|
+
ref: o,
|
|
71
|
+
"data-align": e,
|
|
72
|
+
"data-width": t,
|
|
73
|
+
"data-emphasis": r === "default" ? void 0 : r,
|
|
74
|
+
className: i,
|
|
75
|
+
...a
|
|
76
|
+
});
|
|
77
|
+
}), p = t(function({ icon: t = "info", title: a, description: o, action: s, className: c, ...l }, u) {
|
|
78
|
+
return /* @__PURE__ */ r("div", {
|
|
79
|
+
ref: u,
|
|
80
|
+
className: i("ds-table-empty", c),
|
|
81
|
+
...l,
|
|
82
|
+
children: [
|
|
83
|
+
/* @__PURE__ */ n(e, {
|
|
84
|
+
name: t,
|
|
85
|
+
size: 24
|
|
86
|
+
}),
|
|
87
|
+
/* @__PURE__ */ n("span", {
|
|
88
|
+
style: {
|
|
89
|
+
color: "var(--color-text)",
|
|
90
|
+
fontWeight: "var(--font-weight-bold)"
|
|
91
|
+
},
|
|
92
|
+
children: a
|
|
93
|
+
}),
|
|
94
|
+
o && /* @__PURE__ */ n("span", { children: o }),
|
|
95
|
+
s
|
|
96
|
+
]
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
//#endregion
|
|
100
|
+
export { s as Table, l as TableBody, f as TableCell, p as TableEmpty, a as TableFrame, c as TableHead, d as TableHeaderCell, u as TableRow, o as TableToolbar };
|
|
101
|
+
|
|
102
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["Icon","cx","parts","TableFrame","forwardRef","rest","className","TableToolbar","start","end","Table","TableHead","TableBody","TableRow","isSelected","isInteractive","TableHeaderCell","align","width","TableCell","emphasis","TableEmpty","icon","title","description","action"],"sources":["../../../src/components/Table/index.tsx"],"sourcesContent":["import {\n forwardRef,\n type HTMLAttributes,\n type ReactNode,\n type TableHTMLAttributes,\n type TdHTMLAttributes,\n type ThHTMLAttributes,\n} from \"react\";\nimport { Icon } from \"../Icon\";\nimport type { IconName } from \"../Icon/icons\";\nimport \"./style.css\";\n\nfunction cx(...parts: (string | undefined | false)[]) {\n return parts.filter(Boolean).join(\" \");\n}\n\nexport interface TableFrameProps extends HTMLAttributes<HTMLDivElement> {\n children?: ReactNode;\n}\n\n/** The 3px collection frame every table, list and board sits inside. */\nexport const TableFrame = forwardRef<HTMLDivElement, TableFrameProps>(function TableFrame(\n { className, children, ...rest },\n ref,\n) {\n return (\n <div ref={ref} className={cx(\"ds-table-frame\", className)} {...rest}>\n {children}\n </div>\n );\n});\n\nexport interface TableToolbarProps extends HTMLAttributes<HTMLDivElement> {\n /** Left side — usually a select-all checkbox, a title and a count badge. */\n start?: ReactNode;\n /** Right side — filters and the one primary action. */\n end?: ReactNode;\n}\n\n/** The band above the rules: selection, title, count, filters, primary action. */\nexport const TableToolbar = forwardRef<HTMLDivElement, TableToolbarProps>(\n function TableToolbar({ start, end, className, ...rest }, ref) {\n return (\n <div ref={ref} className={cx(\"ds-table-toolbar\", className)} {...rest}>\n <div className=\"ds-table-toolbar__group\">{start}</div>\n <div className=\"ds-table-toolbar__group\">{end}</div>\n </div>\n );\n },\n);\n\nexport interface TableProps extends TableHTMLAttributes<HTMLTableElement> {\n children?: ReactNode;\n}\n\n/** The rules layer. Always render it inside a `TableFrame`. */\nexport const Table = forwardRef<HTMLTableElement, TableProps>(function Table(\n { className, children, ...rest },\n ref,\n) {\n return (\n <div className=\"ds-table-frame__scroll\">\n <table ref={ref} className={cx(\"ds-table\", className)} {...rest}>\n {children}\n </table>\n </div>\n );\n});\n\nexport const TableHead = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n function TableHead({ className, ...rest }, ref) {\n return <thead ref={ref} className={className} {...rest} />;\n },\n);\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, HTMLAttributes<HTMLTableSectionElement>>(\n function TableBody({ className, ...rest }, ref) {\n return <tbody ref={ref} className={className} {...rest} />;\n },\n);\n\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n /** Paints the soft fill and the solid rail. Never changes the row's size. */\n isSelected?: boolean;\n /** Marks the row clickable: hover fill plus a pointer cursor. */\n isInteractive?: boolean;\n}\n\nexport const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(function TableRow(\n { isSelected = false, isInteractive = false, className, ...rest },\n ref,\n) {\n return (\n <tr\n ref={ref}\n data-selected={isSelected || undefined}\n data-interactive={isInteractive || undefined}\n tabIndex={isInteractive ? 0 : undefined}\n className={className}\n {...rest}\n />\n );\n});\n\nexport type TableAlign = \"start\" | \"end\";\nexport type TableCellWidth = \"auto\" | \"control\";\n\nexport interface TableHeaderCellProps\n extends Omit<ThHTMLAttributes<HTMLTableCellElement>, \"align\"> {\n align?: TableAlign;\n width?: TableCellWidth;\n}\n\nexport const TableHeaderCell = forwardRef<HTMLTableCellElement, TableHeaderCellProps>(\n function TableHeaderCell({ align = \"start\", width = \"auto\", className, ...rest }, ref) {\n return (\n <th\n ref={ref}\n scope=\"col\"\n data-align={align}\n data-width={width}\n className={className}\n {...rest}\n />\n );\n },\n);\n\nexport type TableCellEmphasis = \"default\" | \"primary\" | \"muted\";\n\nexport interface TableCellProps\n extends Omit<TdHTMLAttributes<HTMLTableCellElement>, \"align\"> {\n align?: TableAlign;\n width?: TableCellWidth;\n /** `primary` is the row's identity cell — one per row, never two. */\n emphasis?: TableCellEmphasis;\n}\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TableCellProps>(function TableCell(\n { align = \"start\", width = \"auto\", emphasis = \"default\", className, ...rest },\n ref,\n) {\n return (\n <td\n ref={ref}\n data-align={align}\n data-width={width}\n data-emphasis={emphasis === \"default\" ? undefined : emphasis}\n className={className}\n {...rest}\n />\n );\n});\n\nexport interface TableEmptyProps extends HTMLAttributes<HTMLDivElement> {\n icon?: IconName;\n title: string;\n description?: string;\n /** One action at most — the thing that ends the empty state. */\n action?: ReactNode;\n}\n\n/** What the frame shows when the collection has no rows. */\nexport const TableEmpty = forwardRef<HTMLDivElement, TableEmptyProps>(function TableEmpty(\n { icon = \"info\", title, description, action, className, ...rest },\n ref,\n) {\n return (\n <div ref={ref} className={cx(\"ds-table-empty\", className)} {...rest}>\n <Icon name={icon} size={24} />\n <span style={{ color: \"var(--color-text)\", fontWeight: \"var(--font-weight-bold)\" }}>\n {title}\n </span>\n {description && <span>{description}</span>}\n {action}\n </div>\n );\n});\n"],"mappings":";;;;AAYA,SAASC,EAAG,GAAGC,GAAuC;CACpD,OAAOA,EAAM,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AACvC;AAOA,IAAaC,IAAaC,EAA4C,SACpE,EAAE,cAAW,aAAU,GAAGC,KAC1B,GACA;CACA,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWJ,EAAG,kBAAkBK,CAAS;EAAG,GAAID;EAC5D;CACE,CAAA;AAET,CAAC,GAUYE,IAAeH,EAC1B,SAAsB,EAAE,UAAO,QAAK,cAAW,GAAGC,KAAQ,GAAK;CAC7D,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWJ,EAAG,oBAAoBK,CAAS;EAAG,GAAID;EAAjE,UAAA,CACE,kBAAC,OAAD;GAAK,WAAU;GAA2B,UAAAG;EAAW,CAAA,GACrD,kBAAC,OAAD;GAAK,WAAU;GAA2B,UAAAC;EAAS,CAAA,CAChD;;AAET,CACF,GAOaC,IAAQN,EAAyC,SAC5D,EAAE,cAAW,aAAU,GAAGC,KAC1B,GACA;CACA,OACE,kBAAC,OAAD;EAAK,WAAU;EACb,UAAA,kBAAC,SAAD;GAAY;GAAK,WAAWJ,EAAG,YAAYK,CAAS;GAAG,GAAID;GACxD;EACI,CAAA;CACJ,CAAA;AAET,CAAC,GAEYM,IAAYP,EACvB,SAAmB,EAAE,cAAW,GAAGC,KAAQ,GAAK;CAC9C,OAAO,kBAAC,SAAD;EAAY;EAAgB;EAAW,GAAIA;CAAO,CAAA;AAC3D,CACF,GAEaO,IAAYR,EACvB,SAAmB,EAAE,cAAW,GAAGC,KAAQ,GAAK;CAC9C,OAAO,kBAAC,SAAD;EAAY;EAAgB;EAAW,GAAIA;CAAO,CAAA;AAC3D,CACF,GASaQ,IAAWT,EAA+C,SACrE,EAAE,gBAAa,IAAO,mBAAgB,IAAO,cAAW,GAAGC,KAC3D,GACA;CACA,OACE,kBAAC,MAAD;EACO;EACL,iBAAeS,KAAc,KAAA;EAC7B,oBAAkBC,KAAiB,KAAA;EACnC,UAAUA,IAAgB,IAAI,KAAA;EACnB;EACX,GAAIV;CACL,CAAA;AAEL,CAAC,GAWYW,IAAkBZ,EAC7B,SAAyB,EAAE,WAAQ,SAAS,WAAQ,QAAQ,cAAW,GAAGC,KAAQ,GAAK;CACrF,OACE,kBAAC,MAAD;EACO;EACL,OAAM;EACN,cAAYY;EACZ,cAAYC;EACD;EACX,GAAIb;CACL,CAAA;AAEL,CACF,GAYac,IAAYf,EAAiD,SACxE,EAAE,WAAQ,SAAS,WAAQ,QAAQ,cAAW,WAAW,cAAW,GAAGC,KACvE,GACA;CACA,OACE,kBAAC,MAAD;EACO;EACL,cAAYY;EACZ,cAAYC;EACZ,iBAAeE,MAAa,YAAY,KAAA,IAAYA;EACzC;EACX,GAAIf;CACL,CAAA;AAEL,CAAC,GAWYgB,IAAajB,EAA4C,SACpE,EAAE,UAAO,QAAQ,UAAO,gBAAa,WAAQ,cAAW,GAAGC,KAC3D,GACA;CACA,OACE,kBAAC,OAAD;EAAU;EAAK,WAAWJ,EAAG,kBAAkBK,CAAS;EAAG,GAAID;EAA/D,UAAA;GACE,kBAACL,GAAD;IAAM,MAAMsB;IAAM,MAAM;GAAK,CAAA;GAC7B,kBAAC,QAAD;IAAM,OAAO;KAAE,OAAO;KAAqB,YAAY;IAA0B;IAC9E,UAAAC;GACG,CAAA;GACLC,KAAe,kBAAC,QAAD,EAAA,UAAOA,EAAkB,CAAA;GACxCC;EACE;;AAET,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
/* The collection frame. Heavy outer stroke, hairline inner rules, a solid
|
|
3
|
+
* rail on the selected row — the house idea, in one component. */
|
|
4
|
+
.ds-table-frame {
|
|
5
|
+
--field-bg: var(--color-surface);
|
|
6
|
+
|
|
7
|
+
border: var(--frame-width) solid var(--frame-color);
|
|
8
|
+
border-radius: var(--radius-lg);
|
|
9
|
+
background: var(--color-surface);
|
|
10
|
+
overflow: hidden;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.ds-table-frame__scroll {
|
|
14
|
+
overflow-x: auto;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.ds-table-toolbar {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
justify-content: space-between;
|
|
21
|
+
gap: var(--space-4);
|
|
22
|
+
padding: var(--space-4) var(--table-row-pad-inline);
|
|
23
|
+
background: var(--color-surface-subtle);
|
|
24
|
+
border-block-end: var(--rule-width) solid var(--rule-color);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.ds-table-toolbar__group {
|
|
28
|
+
display: flex;
|
|
29
|
+
align-items: center;
|
|
30
|
+
gap: var(--space-3);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.ds-table-toolbar__title {
|
|
34
|
+
font-size: var(--font-size-md);
|
|
35
|
+
font-weight: var(--font-weight-bold);
|
|
36
|
+
line-height: var(--line-height-tight);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.ds-table {
|
|
40
|
+
inline-size: 100%;
|
|
41
|
+
border-collapse: collapse;
|
|
42
|
+
font-size: var(--table-cell-size);
|
|
43
|
+
color: var(--color-text);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.ds-table th {
|
|
47
|
+
text-align: start;
|
|
48
|
+
font-size: var(--table-head-size);
|
|
49
|
+
font-weight: var(--table-head-weight);
|
|
50
|
+
letter-spacing: var(--table-head-tracking);
|
|
51
|
+
text-transform: uppercase;
|
|
52
|
+
color: var(--color-text-muted);
|
|
53
|
+
padding: var(--space-3) var(--table-row-pad-inline);
|
|
54
|
+
border-block-end: var(--rule-width) solid var(--rule-color);
|
|
55
|
+
white-space: nowrap;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.ds-table th[data-align="end"],
|
|
59
|
+
.ds-table td[data-align="end"] {
|
|
60
|
+
text-align: end;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.ds-table th[data-width="control"],
|
|
64
|
+
.ds-table td[data-width="control"] {
|
|
65
|
+
inline-size: var(--space-12);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.ds-table td {
|
|
69
|
+
padding: var(--table-row-pad-block) var(--table-row-pad-inline);
|
|
70
|
+
vertical-align: middle;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.ds-table td[data-emphasis="primary"] {
|
|
74
|
+
font-size: var(--table-cell-primary-size);
|
|
75
|
+
font-weight: var(--font-weight-medium);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.ds-table td[data-emphasis="muted"] {
|
|
79
|
+
color: var(--color-text-muted);
|
|
80
|
+
font-size: var(--font-size-sm);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.ds-table tbody tr {
|
|
84
|
+
border-block-end: var(--rule-width) solid var(--rule-color);
|
|
85
|
+
/* The rail exists at every row so selection never shifts the layout. */
|
|
86
|
+
box-shadow: inset var(--rail-width) 0 0 0 transparent;
|
|
87
|
+
transition: background-color var(--duration-fast) var(--ease-standard);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.ds-table tbody tr:last-child {
|
|
91
|
+
border-block-end: none;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.ds-table tbody tr[data-interactive]:hover {
|
|
95
|
+
background: var(--field-hover);
|
|
96
|
+
cursor: pointer;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.ds-table tbody tr[data-selected] {
|
|
100
|
+
background: var(--color-primary-soft);
|
|
101
|
+
box-shadow: inset var(--rail-width) 0 0 0 var(--rail-color);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.ds-table tbody tr[data-selected]:hover {
|
|
105
|
+
background: var(--color-primary-soft-hover);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.ds-table tbody tr:focus-visible {
|
|
109
|
+
outline: var(--control-border-width) solid var(--color-focus);
|
|
110
|
+
outline-offset: -2px;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.ds-table-empty {
|
|
114
|
+
display: flex;
|
|
115
|
+
flex-direction: column;
|
|
116
|
+
align-items: center;
|
|
117
|
+
gap: var(--space-3);
|
|
118
|
+
padding: var(--space-12) var(--space-6);
|
|
119
|
+
color: var(--color-text-muted);
|
|
120
|
+
text-align: center;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../../chunks/Icon-CWsA1W83.cjs");;/* empty css */let t=require("react"),n=require("react/jsx-runtime");function r(...e){return e.filter(Boolean).join(` `)}var i=(0,t.forwardRef)(function({value:i,defaultValue:a=[],onValueChange:o,placeholder:s=`Add a tag`,size:c=`md`,max:l,isDisabled:u=!1,isInvalid:d=!1,className:f,...p},m){let[h,g]=(0,t.useState)(a),_=i??h,[v,y]=(0,t.useState)(``),b=(0,t.useRef)(null),x=e=>{i===void 0&&g(e),o?.(e)},S=e=>{let t=e.trim();t&&!_.includes(t)&&(l!==void 0&&_.length>=l||x([..._,t]))};return(0,n.jsxs)(`div`,{className:r(`ds-field-skin`,`ds-tags`,f),"data-size":c,"data-disabled":u||void 0,"aria-invalid":d||void 0,onClick:()=>b.current?.focus(),children:[_.map(t=>(0,n.jsxs)(`span`,{className:`ds-tags__tag`,children:[t,(0,n.jsx)(`button`,{type:`button`,className:`ds-tags__remove`,"aria-label":`Remove ${t}`,disabled:u,onClick:e=>{e.stopPropagation(),x(_.filter(e=>e!==t))},children:(0,n.jsx)(e.t,{name:`x`,size:16})})]},t)),(0,n.jsx)(`input`,{ref:e=>{b.current=e,typeof m==`function`?m(e):m&&(m.current=e)},type:`text`,className:`ds-tags__input`,value:v,placeholder:_.length===0?s:``,disabled:u,onChange:e=>y(e.target.value),onKeyDown:e=>{e.key===`Enter`||e.key===`,`?(e.preventDefault(),S(v),y(``)):e.key===`Backspace`&&v===``&&_.length>0&&x(_.slice(0,-1))},onBlur:()=>{S(v),y(``)},...p})]})});exports.TagsInput=i;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["forwardRef","useState","useRef","Icon","require_Icon","react","react_jsx_runtime","cx","parts","TagsInput","rest","internal","setInternal","defaultValue","current","value","draft","setDraft","inputRef","commit","next","onValueChange","add","tag","raw","max","className","size","isDisabled","isInvalid","event","item","node","ref","placeholder"],"sources":["../../../src/components/TagsInput/index.tsx"],"sourcesContent":["import { forwardRef, useRef, useState, type KeyboardEvent } from \"react\";\nimport { Icon } from \"../Icon\";\nimport type { FieldSize } from \"../Field\";\nimport \"../Field/style.css\";\nimport \"./style.css\";\n\nfunction cx(...parts: (string | undefined | false)[]) {\n return parts.filter(Boolean).join(\" \");\n}\n\nexport interface TagsInputProps {\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n placeholder?: string;\n size?: FieldSize;\n /** Stop accepting new tags past this count. */\n max?: number;\n isDisabled?: boolean;\n isInvalid?: boolean;\n id?: string;\n className?: string;\n \"aria-label\"?: string;\n \"aria-describedby\"?: string;\n}\n\n/**\n * Free-text keywords. Enter or comma commits a tag, Backspace on an empty\n * input removes the last one. Tags are plain strings — never status tones.\n */\nexport const TagsInput = forwardRef<HTMLInputElement, TagsInputProps>(function TagsInput(\n {\n value,\n defaultValue = [],\n onValueChange,\n placeholder = \"Add a tag\",\n size = \"md\",\n max,\n isDisabled = false,\n isInvalid = false,\n className,\n ...rest\n },\n ref,\n) {\n const [internal, setInternal] = useState<string[]>(defaultValue);\n const current = value ?? internal;\n const [draft, setDraft] = useState(\"\");\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const commit = (next: string[]) => {\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n };\n\n const add = (raw: string) => {\n const tag = raw.trim();\n if (!tag || current.includes(tag)) return;\n if (max !== undefined && current.length >= max) return;\n commit([...current, tag]);\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\" || event.key === \",\") {\n event.preventDefault();\n add(draft);\n setDraft(\"\");\n } else if (event.key === \"Backspace\" && draft === \"\" && current.length > 0) {\n commit(current.slice(0, -1));\n }\n };\n\n return (\n <div\n className={cx(\"ds-field-skin\", \"ds-tags\", className)}\n data-size={size}\n data-disabled={isDisabled || undefined}\n aria-invalid={isInvalid || undefined}\n onClick={() => inputRef.current?.focus()}\n >\n {current.map((tag) => (\n <span key={tag} className=\"ds-tags__tag\">\n {tag}\n <button\n type=\"button\"\n className=\"ds-tags__remove\"\n aria-label={`Remove ${tag}`}\n disabled={isDisabled}\n onClick={(event) => {\n event.stopPropagation();\n commit(current.filter((item) => item !== tag));\n }}\n >\n <Icon name=\"x\" size={16} />\n </button>\n </span>\n ))}\n <input\n ref={(node) => {\n inputRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n }}\n type=\"text\"\n className=\"ds-tags__input\"\n value={draft}\n placeholder={current.length === 0 ? placeholder : \"\"}\n disabled={isDisabled}\n onChange={(event) => setDraft(event.target.value)}\n onKeyDown={onKeyDown}\n onBlur={() => {\n add(draft);\n setDraft(\"\");\n }}\n {...rest}\n />\n </div>\n );\n});\n"],"mappings":"A,sNAMA,SAASO,EAAG,GAAGC,EAAuC,CACpD,OAAOA,EAAM,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,CACvC,CAsBA,IAAaC,GAAA,EAAYT,EAAAA,WAAAA,CAA6C,SACpE,CACE,QACA,eAAe,CAAC,EAChB,gBACA,cAAc,YACd,OAAO,KACP,MACA,aAAa,GACb,YAAY,GACZ,YACA,GAAGU,GAEL,EACA,CACA,GAAM,CAACC,EAAUC,IAAA,EAAeX,EAAAA,SAAAA,CAAmBY,CAAY,EACzDC,EAAUC,GAASJ,EACnB,CAACK,EAAOC,IAAA,EAAYhB,EAAAA,SAAAA,CAAS,EAAE,EAC/BiB,GAAA,EAAWhB,EAAAA,OAAAA,CAAgC,IAAI,EAE/CiB,EAAU,GAAmB,CAC7BJ,IAAU,IAAA,IAAWH,EAAYQ,CAAI,EACzCC,IAAgBD,CAAI,CACtB,EAEME,EAAO,GAAgB,CAC3B,IAAMC,EAAMC,EAAI,KAAK,EAChBD,GAAO,GAAQ,SAASA,CAAG,IAC5BE,IAAQ,IAAA,IAAaX,EAAQ,QAAUW,GAC3CN,EAAO,CAAC,GAAGL,EAASS,CAAG,CAAC,EAC1B,EAYA,OACE,EAAAjB,EAAA,KAAA,CAAC,MAAD,CACE,UAAWC,EAAG,gBAAiB,UAAWmB,CAAS,EACnD,YAAWC,EACX,gBAAeC,GAAc,IAAA,GAC7B,eAAcC,GAAa,IAAA,GAC3B,YAAeX,EAAS,SAAS,MAAM,EALzC,SAAA,CAOGJ,EAAQ,IAAK,IACZ,EAAAR,EAAA,KAAA,CAAC,OAAD,CAAgB,UAAU,eAA1B,SAAA,CACGiB,GACD,EAAAjB,EAAA,IAAA,CAAC,SAAD,CACE,KAAK,SACL,UAAU,kBACV,aAAY,UAAUiB,IACtB,SAAUK,EACV,QAAU,GAAU,CAClBE,EAAM,gBAAgB,EACtBX,EAAOL,EAAQ,OAAQ,GAASiB,IAASR,CAAG,CAAC,CAC/C,EAEA,UAAA,EAAAjB,EAAA,IAAA,CAACH,EAAAA,EAAD,CAAM,KAAK,IAAI,KAAM,EAAK,CAAA,CACpB,CAAA,CACJ,CAdK,EAAAoB,CAcL,CACP,GACD,EAAAjB,EAAA,IAAA,CAAC,QAAD,CACE,IAAM,GAAS,CACb,EAAS,QAAU0B,EACf,OAAOC,GAAQ,WAAYA,EAAID,CAAI,EAC9BC,IAAK,EAAI,QAAUD,EAC9B,EACA,KAAK,OACL,UAAU,iBACV,MAAOhB,EACP,YAAaF,EAAQ,SAAW,EAAIoB,EAAc,GAClD,SAAUN,EACV,SAAW,GAAUX,EAASa,EAAM,OAAO,KAAK,EACrC,UA/CE,GAA2C,CACxDA,EAAM,MAAQ,SAAWA,EAAM,MAAQ,KACzCA,EAAM,eAAe,EACrBR,EAAIN,CAAK,EACTC,EAAS,EAAE,GACFa,EAAM,MAAQ,aAAed,IAAU,IAAMF,EAAQ,OAAS,GACvEK,EAAOL,EAAQ,MAAM,EAAG,EAAE,CAAC,CAE/B,EAwCM,WAAc,CACZQ,EAAIN,CAAK,EACTC,EAAS,EAAE,CACb,EACA,GAAIP,CACL,CAAA,CACE,C,EAET,CAAC,E"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { FieldSize } from "../Field/index.cjs";
|
|
2
|
+
export interface TagsInputProps {
|
|
3
|
+
value?: string[];
|
|
4
|
+
defaultValue?: string[];
|
|
5
|
+
onValueChange?: (value: string[]) => void;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
size?: FieldSize;
|
|
8
|
+
/** Stop accepting new tags past this count. */
|
|
9
|
+
max?: number;
|
|
10
|
+
isDisabled?: boolean;
|
|
11
|
+
isInvalid?: boolean;
|
|
12
|
+
id?: string;
|
|
13
|
+
className?: string;
|
|
14
|
+
"aria-label"?: string;
|
|
15
|
+
"aria-describedby"?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Free-text keywords. Enter or comma commits a tag, Backspace on an empty
|
|
19
|
+
* input removes the last one. Tags are plain strings — never status tones.
|
|
20
|
+
*/
|
|
21
|
+
export declare const TagsInput: import("react").ForwardRefExoticComponent<TagsInputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
22
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/components/TagsInput/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,oBAAoB,CAAC;AAC5B,OAAO,aAAa,CAAC;AAMrB,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,6GAwFpB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { FieldSize } from "../Field/index.js";
|
|
2
|
+
export interface TagsInputProps {
|
|
3
|
+
value?: string[];
|
|
4
|
+
defaultValue?: string[];
|
|
5
|
+
onValueChange?: (value: string[]) => void;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
size?: FieldSize;
|
|
8
|
+
/** Stop accepting new tags past this count. */
|
|
9
|
+
max?: number;
|
|
10
|
+
isDisabled?: boolean;
|
|
11
|
+
isInvalid?: boolean;
|
|
12
|
+
id?: string;
|
|
13
|
+
className?: string;
|
|
14
|
+
"aria-label"?: string;
|
|
15
|
+
"aria-describedby"?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Free-text keywords. Enter or comma commits a tag, Backspace on an empty
|
|
19
|
+
* input removes the last one. Tags are plain strings — never status tones.
|
|
20
|
+
*/
|
|
21
|
+
export declare const TagsInput: import("react").ForwardRefExoticComponent<TagsInputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/TagsInput/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,oBAAoB,CAAC;AAC5B,OAAO,aAAa,CAAC;AAMrB,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,6GAwFpB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { t as e } from "../../chunks/Icon-CGY1FNXT.js";
|
|
2
|
+
/* empty css */
|
|
3
|
+
import { forwardRef as t, useRef as n, useState as r } from "react";
|
|
4
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
5
|
+
//#region src/components/TagsInput/index.tsx
|
|
6
|
+
function o(...e) {
|
|
7
|
+
return e.filter(Boolean).join(" ");
|
|
8
|
+
}
|
|
9
|
+
var s = t(function({ value: t, defaultValue: s = [], onValueChange: c, placeholder: l = "Add a tag", size: u = "md", max: d, isDisabled: f = !1, isInvalid: p = !1, className: m, ...h }, g) {
|
|
10
|
+
let [_, v] = r(s), y = t ?? _, [b, x] = r(""), S = n(null), C = (e) => {
|
|
11
|
+
t === void 0 && v(e), c?.(e);
|
|
12
|
+
}, w = (e) => {
|
|
13
|
+
let t = e.trim();
|
|
14
|
+
t && !y.includes(t) && (d !== void 0 && y.length >= d || C([...y, t]));
|
|
15
|
+
};
|
|
16
|
+
return /* @__PURE__ */ a("div", {
|
|
17
|
+
className: o("ds-field-skin", "ds-tags", m),
|
|
18
|
+
"data-size": u,
|
|
19
|
+
"data-disabled": f || void 0,
|
|
20
|
+
"aria-invalid": p || void 0,
|
|
21
|
+
onClick: () => S.current?.focus(),
|
|
22
|
+
children: [y.map((t) => /* @__PURE__ */ a("span", {
|
|
23
|
+
className: "ds-tags__tag",
|
|
24
|
+
children: [t, /* @__PURE__ */ i("button", {
|
|
25
|
+
type: "button",
|
|
26
|
+
className: "ds-tags__remove",
|
|
27
|
+
"aria-label": `Remove ${t}`,
|
|
28
|
+
disabled: f,
|
|
29
|
+
onClick: (e) => {
|
|
30
|
+
e.stopPropagation(), C(y.filter((e) => e !== t));
|
|
31
|
+
},
|
|
32
|
+
children: /* @__PURE__ */ i(e, {
|
|
33
|
+
name: "x",
|
|
34
|
+
size: 16
|
|
35
|
+
})
|
|
36
|
+
})]
|
|
37
|
+
}, t)), /* @__PURE__ */ i("input", {
|
|
38
|
+
ref: (e) => {
|
|
39
|
+
S.current = e, typeof g == "function" ? g(e) : g && (g.current = e);
|
|
40
|
+
},
|
|
41
|
+
type: "text",
|
|
42
|
+
className: "ds-tags__input",
|
|
43
|
+
value: b,
|
|
44
|
+
placeholder: y.length === 0 ? l : "",
|
|
45
|
+
disabled: f,
|
|
46
|
+
onChange: (e) => x(e.target.value),
|
|
47
|
+
onKeyDown: (e) => {
|
|
48
|
+
e.key === "Enter" || e.key === "," ? (e.preventDefault(), w(b), x("")) : e.key === "Backspace" && b === "" && y.length > 0 && C(y.slice(0, -1));
|
|
49
|
+
},
|
|
50
|
+
onBlur: () => {
|
|
51
|
+
w(b), x("");
|
|
52
|
+
},
|
|
53
|
+
...h
|
|
54
|
+
})]
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
//#endregion
|
|
58
|
+
export { s as TagsInput };
|
|
59
|
+
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["Icon","cx","parts","TagsInput","forwardRef","rest","internal","setInternal","useState","defaultValue","current","value","draft","setDraft","inputRef","useRef","commit","next","onValueChange","add","tag","raw","max","className","size","isDisabled","isInvalid","event","item","node","ref","placeholder"],"sources":["../../../src/components/TagsInput/index.tsx"],"sourcesContent":["import { forwardRef, useRef, useState, type KeyboardEvent } from \"react\";\nimport { Icon } from \"../Icon\";\nimport type { FieldSize } from \"../Field\";\nimport \"../Field/style.css\";\nimport \"./style.css\";\n\nfunction cx(...parts: (string | undefined | false)[]) {\n return parts.filter(Boolean).join(\" \");\n}\n\nexport interface TagsInputProps {\n value?: string[];\n defaultValue?: string[];\n onValueChange?: (value: string[]) => void;\n placeholder?: string;\n size?: FieldSize;\n /** Stop accepting new tags past this count. */\n max?: number;\n isDisabled?: boolean;\n isInvalid?: boolean;\n id?: string;\n className?: string;\n \"aria-label\"?: string;\n \"aria-describedby\"?: string;\n}\n\n/**\n * Free-text keywords. Enter or comma commits a tag, Backspace on an empty\n * input removes the last one. Tags are plain strings — never status tones.\n */\nexport const TagsInput = forwardRef<HTMLInputElement, TagsInputProps>(function TagsInput(\n {\n value,\n defaultValue = [],\n onValueChange,\n placeholder = \"Add a tag\",\n size = \"md\",\n max,\n isDisabled = false,\n isInvalid = false,\n className,\n ...rest\n },\n ref,\n) {\n const [internal, setInternal] = useState<string[]>(defaultValue);\n const current = value ?? internal;\n const [draft, setDraft] = useState(\"\");\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const commit = (next: string[]) => {\n if (value === undefined) setInternal(next);\n onValueChange?.(next);\n };\n\n const add = (raw: string) => {\n const tag = raw.trim();\n if (!tag || current.includes(tag)) return;\n if (max !== undefined && current.length >= max) return;\n commit([...current, tag]);\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\" || event.key === \",\") {\n event.preventDefault();\n add(draft);\n setDraft(\"\");\n } else if (event.key === \"Backspace\" && draft === \"\" && current.length > 0) {\n commit(current.slice(0, -1));\n }\n };\n\n return (\n <div\n className={cx(\"ds-field-skin\", \"ds-tags\", className)}\n data-size={size}\n data-disabled={isDisabled || undefined}\n aria-invalid={isInvalid || undefined}\n onClick={() => inputRef.current?.focus()}\n >\n {current.map((tag) => (\n <span key={tag} className=\"ds-tags__tag\">\n {tag}\n <button\n type=\"button\"\n className=\"ds-tags__remove\"\n aria-label={`Remove ${tag}`}\n disabled={isDisabled}\n onClick={(event) => {\n event.stopPropagation();\n commit(current.filter((item) => item !== tag));\n }}\n >\n <Icon name=\"x\" size={16} />\n </button>\n </span>\n ))}\n <input\n ref={(node) => {\n inputRef.current = node;\n if (typeof ref === \"function\") ref(node);\n else if (ref) ref.current = node;\n }}\n type=\"text\"\n className=\"ds-tags__input\"\n value={draft}\n placeholder={current.length === 0 ? placeholder : \"\"}\n disabled={isDisabled}\n onChange={(event) => setDraft(event.target.value)}\n onKeyDown={onKeyDown}\n onBlur={() => {\n add(draft);\n setDraft(\"\");\n }}\n {...rest}\n />\n </div>\n );\n});\n"],"mappings":";;;;;AAMA,SAASC,EAAG,GAAGC,GAAuC;CACpD,OAAOA,EAAM,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;AACvC;AAsBA,IAAaC,IAAYC,EAA6C,SACpE,EACE,UACA,kBAAe,CAAC,GAChB,kBACA,iBAAc,aACd,UAAO,MACP,QACA,gBAAa,IACb,eAAY,IACZ,cACA,GAAGC,KAEL,GACA;CACA,IAAM,CAACC,GAAUC,KAAeC,EAAmBC,CAAY,GACzDC,IAAUC,KAASL,GACnB,CAACM,GAAOC,KAAYL,EAAS,EAAE,GAC/BM,IAAWC,EAAgC,IAAI,GAE/CC,KAAU,MAAmB;EAEjC,AADIL,MAAU,KAAA,KAAWJ,EAAYU,CAAI,GACzCC,IAAgBD,CAAI;CACtB,GAEME,KAAO,MAAgB;EAC3B,IAAMC,IAAMC,EAAI,KAAK;EACrB,AAAKD,KAAO,GAAQ,SAASA,CAAG,MAC5BE,MAAQ,KAAA,KAAaZ,EAAQ,UAAUY,KAC3CN,EAAO,CAAC,GAAGN,GAASU,CAAG,CAAC;CAC1B;CAYA,OACE,kBAAC,OAAD;EACE,WAAWnB,EAAG,iBAAiB,WAAWsB,CAAS;EACnD,aAAWC;EACX,iBAAeC,KAAc,KAAA;EAC7B,gBAAcC,KAAa,KAAA;EAC3B,eAAeZ,EAAS,SAAS,MAAM;EALzC,UAAA,CAOGJ,EAAQ,KAAK,MACZ,kBAAC,QAAD;GAAgB,WAAU;GAA1B,UAAA,CACGU,GACD,kBAAC,UAAD;IACE,MAAK;IACL,WAAU;IACV,cAAY,UAAUA;IACtB,UAAUK;IACV,UAAU,MAAU;KAElB,AADAE,EAAM,gBAAgB,GACtBX,EAAON,EAAQ,QAAQ,MAASkB,MAASR,CAAG,CAAC;IAC/C;IAEA,UAAA,kBAACpB,GAAD;KAAM,MAAK;KAAI,MAAM;IAAK,CAAA;GACpB,CAAA,CACJ;EAdK,GAAAoB,CAcL,CACP,GACD,kBAAC,SAAD;GACE,MAAM,MAAS;IAEb,AADA,EAAS,UAAUS,GACf,OAAOC,KAAQ,aAAYA,EAAID,CAAI,IAC9BC,MAAK,EAAI,UAAUD;GAC9B;GACA,MAAK;GACL,WAAU;GACV,OAAOjB;GACP,aAAaF,EAAQ,WAAW,IAAIqB,IAAc;GAClD,UAAUN;GACV,WAAW,MAAUZ,EAASc,EAAM,OAAO,KAAK;GACrC,YA/CE,MAA2C;IAC5D,AAAIA,EAAM,QAAQ,WAAWA,EAAM,QAAQ,OACzCA,EAAM,eAAe,GACrBR,EAAIP,CAAK,GACTC,EAAS,EAAE,KACFc,EAAM,QAAQ,eAAef,MAAU,MAAMF,EAAQ,SAAS,KACvEM,EAAON,EAAQ,MAAM,GAAG,EAAE,CAAC;GAE/B;GAwCM,cAAc;IAEZ,AADAS,EAAIP,CAAK,GACTC,EAAS,EAAE;GACb;GACA,GAAIR;EACL,CAAA,CACE;;AAET,CAAC"}
|