@namroodinc/liquid-editorial 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +67 -2
- 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/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/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 +178 -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 +19 -0
- package/dist/components/Field/index.d.cts.map +1 -0
- package/dist/components/Field/index.d.ts +19 -0
- package/dist/components/Field/index.d.ts.map +1 -0
- package/dist/components/Field/index.js +41 -0
- package/dist/components/Field/index.js.map +1 -0
- package/dist/components/Field/style.css +100 -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/index.cjs +2 -0
- package/dist/components/RichTextEditor/index.cjs.map +1 -0
- package/dist/components/RichTextEditor/index.d.cts +23 -0
- package/dist/components/RichTextEditor/index.d.cts.map +1 -0
- package/dist/components/RichTextEditor/index.d.ts +23 -0
- package/dist/components/RichTextEditor/index.d.ts.map +1 -0
- package/dist/components/RichTextEditor/index.js +175 -0
- package/dist/components/RichTextEditor/index.js.map +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 +77 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +77 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/reset.css +15 -0
- package/dist/reset.css.d.ts +2 -0
- package/dist/styles.css +39 -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 +130 -4
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
/* Columns and gap come from Grid; the grid only adds its own inset. */
|
|
3
|
+
.ds-asset-grid {
|
|
4
|
+
padding: var(--space-4);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.ds-asset-tile {
|
|
8
|
+
position: relative;
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
gap: var(--space-3);
|
|
12
|
+
padding: var(--space-3);
|
|
13
|
+
background: var(--color-surface);
|
|
14
|
+
border: var(--control-border-width) solid var(--control-border-color);
|
|
15
|
+
border-radius: var(--radius-md);
|
|
16
|
+
/* The rail exists on every tile, so selecting one never shifts the grid. */
|
|
17
|
+
box-shadow: inset var(--rail-width) 0 0 0 transparent;
|
|
18
|
+
transition:
|
|
19
|
+
background-color var(--duration-fast) var(--ease-standard),
|
|
20
|
+
box-shadow var(--duration-fast) var(--ease-standard);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.ds-asset-tile:hover:not([data-pending]) {
|
|
24
|
+
background: var(--field-hover);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.ds-asset-tile[data-selected] {
|
|
28
|
+
background: var(--color-primary-soft);
|
|
29
|
+
box-shadow: inset var(--rail-width) 0 0 0 var(--rail-color);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.ds-asset-tile[data-pending] {
|
|
33
|
+
opacity: 70%;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.ds-asset-tile[data-loading="true"] {
|
|
37
|
+
background: var(--color-surface);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.ds-asset-tile__thumb {
|
|
41
|
+
position: relative;
|
|
42
|
+
aspect-ratio: var(--asset-thumb-aspect);
|
|
43
|
+
overflow: hidden;
|
|
44
|
+
border-radius: var(--field-radius);
|
|
45
|
+
background: var(--field-rest);
|
|
46
|
+
display: grid;
|
|
47
|
+
place-content: center;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.ds-asset-tile__thumb img {
|
|
51
|
+
position: absolute;
|
|
52
|
+
inset: 0;
|
|
53
|
+
inline-size: 100%;
|
|
54
|
+
block-size: 100%;
|
|
55
|
+
object-fit: cover;
|
|
56
|
+
opacity: 0;
|
|
57
|
+
transition: opacity var(--duration-base) var(--ease-standard);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.ds-asset-tile__thumb img[data-loaded] {
|
|
61
|
+
opacity: 100%;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.ds-asset-tile__thumb-skeleton {
|
|
65
|
+
position: absolute;
|
|
66
|
+
inset: 0;
|
|
67
|
+
block-size: 100%;
|
|
68
|
+
border-radius: 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.ds-asset-tile__placeholder {
|
|
72
|
+
display: grid;
|
|
73
|
+
place-content: center;
|
|
74
|
+
color: var(--color-text-muted);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.ds-asset-tile__pending {
|
|
78
|
+
position: absolute;
|
|
79
|
+
inset: 0;
|
|
80
|
+
display: flex;
|
|
81
|
+
flex-direction: column;
|
|
82
|
+
align-items: center;
|
|
83
|
+
justify-content: center;
|
|
84
|
+
gap: var(--space-2);
|
|
85
|
+
background: color-mix(in srgb, var(--color-surface) 72%, transparent);
|
|
86
|
+
color: var(--color-text-muted);
|
|
87
|
+
font-size: var(--font-size-xs);
|
|
88
|
+
font-weight: var(--font-weight-bold);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.ds-asset-tile__spinner {
|
|
92
|
+
animation: ds-asset-spin 900ms linear infinite;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@keyframes ds-asset-spin {
|
|
96
|
+
to {
|
|
97
|
+
transform: rotate(360deg);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.ds-asset-tile__actions {
|
|
102
|
+
position: absolute;
|
|
103
|
+
inset-block-start: var(--space-2);
|
|
104
|
+
inset-inline: var(--space-2);
|
|
105
|
+
z-index: 1;
|
|
106
|
+
display: flex;
|
|
107
|
+
justify-content: space-between;
|
|
108
|
+
gap: var(--space-2);
|
|
109
|
+
pointer-events: none;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.ds-asset-tile__actions > * {
|
|
113
|
+
pointer-events: auto;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* The whole thumbnail is the selection target; the name stays readable text
|
|
117
|
+
* underneath rather than being swallowed by the button. */
|
|
118
|
+
.ds-asset-tile__hit {
|
|
119
|
+
position: absolute;
|
|
120
|
+
inset: 0;
|
|
121
|
+
padding: 0;
|
|
122
|
+
border: 0;
|
|
123
|
+
background: transparent;
|
|
124
|
+
cursor: pointer;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.ds-asset-tile__hit:focus-visible {
|
|
128
|
+
outline: var(--control-border-width) solid var(--color-focus);
|
|
129
|
+
outline-offset: -2px;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
.ds-asset-tile__hit:disabled {
|
|
133
|
+
cursor: not-allowed;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.ds-asset-tile__hit-label {
|
|
137
|
+
position: absolute;
|
|
138
|
+
inline-size: 1px;
|
|
139
|
+
block-size: 1px;
|
|
140
|
+
overflow: hidden;
|
|
141
|
+
clip-path: inset(50%);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.ds-asset-tile__text {
|
|
145
|
+
display: flex;
|
|
146
|
+
flex-direction: column;
|
|
147
|
+
gap: var(--space-1);
|
|
148
|
+
min-inline-size: 0;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.ds-asset-tile__name {
|
|
152
|
+
font-size: var(--font-size-sm);
|
|
153
|
+
font-weight: var(--font-weight-bold);
|
|
154
|
+
line-height: var(--line-height-body);
|
|
155
|
+
overflow-wrap: anywhere;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.ds-asset-tile__meta {
|
|
159
|
+
font-family: var(--font-mono);
|
|
160
|
+
font-size: var(--font-size-xs);
|
|
161
|
+
line-height: var(--line-height-body);
|
|
162
|
+
color: var(--color-text-muted);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.ds-asset-empty {
|
|
166
|
+
display: flex;
|
|
167
|
+
flex-direction: column;
|
|
168
|
+
align-items: center;
|
|
169
|
+
gap: var(--space-3);
|
|
170
|
+
padding: var(--space-12) var(--space-6);
|
|
171
|
+
text-align: center;
|
|
172
|
+
color: var(--color-text-muted);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.ds-asset-empty__title {
|
|
176
|
+
font-size: var(--font-size-lead);
|
|
177
|
+
font-weight: var(--font-weight-bold);
|
|
178
|
+
color: var(--color-text);
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.ds-asset-empty__description {
|
|
182
|
+
max-inline-size: 34rem;
|
|
183
|
+
line-height: var(--line-height-body);
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
@media (prefers-reduced-motion: reduce) {
|
|
187
|
+
.ds-asset-tile,
|
|
188
|
+
.ds-asset-tile__thumb img {
|
|
189
|
+
transition: none;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
.ds-asset-tile__spinner {
|
|
193
|
+
animation: none;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("react"),t=require("react/jsx-runtime");function n(e){let t=e.trim().split(/\s+/);return((t[0]?.[0]??``)+(t.length>1?t[t.length-1][0]:``)).toUpperCase()}var r=(0,e.forwardRef)(function({name:e,src:r,size:i=24,className:a,...o},s){return(0,t.jsx)(`span`,{ref:s,role:`img`,"aria-label":e,title:e,"data-size":i,className:[`ds-avatar`,a].filter(Boolean).join(` `),...o,children:r?(0,t.jsx)(`img`,{src:r,alt:``}):n(e)})}),i=(0,e.forwardRef)(function({people:e,size:n=24,className:i,...a},o){let s=e.slice(0,3),c=e.length-s.length;return(0,t.jsxs)(`span`,{ref:o,role:`group`,"aria-label":e.map(e=>e.name).join(`, `),className:[`ds-avatar-group`,i].filter(Boolean).join(` `),...a,children:[s.map(e=>(0,t.jsx)(r,{name:e.name,src:e.src,size:n},e.name)),c>0&&(0,t.jsxs)(`span`,{className:`ds-avatar-group__count`,children:[`+`,c]})]})});exports.Avatar=r,exports.AvatarGroup=i;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["forwardRef","react","react_jsx_runtime","initialsOf","words","name","Avatar","rest","size","className","src","AvatarGroup","shown","people","overflow","p","person"],"sources":["../../../src/components/Avatar/index.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from \"react\";\nimport \"./style.css\";\n\nexport type AvatarSize = 24 | 32 | 40;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {\n /** Required — drives the initials and the accessible name. */\n name: string;\n src?: string;\n size?: AvatarSize;\n}\n\nfunction initialsOf(name: string) {\n const words = name.trim().split(/\\s+/);\n const first = words[0]?.[0] ?? \"\";\n const last = words.length > 1 ? words[words.length - 1][0] : \"\";\n return (first + last).toUpperCase();\n}\n\n/**\n * Identifies a person at a glance in a dense surface. An identifier, not a\n * control — never colour-generated, never carrying a status dot.\n */\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(\n { name, src, size = 24, className, ...rest },\n ref,\n) {\n return (\n <span\n ref={ref}\n role=\"img\"\n aria-label={name}\n title={name}\n data-size={size}\n className={[\"ds-avatar\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {src ? <img src={src} alt=\"\" /> : initialsOf(name)}\n </span>\n );\n});\n\nexport interface AvatarGroupProps extends HTMLAttributes<HTMLSpanElement> {\n /** Up to three render; the rest become a `+n` count. */\n people: { name: string; src?: string }[];\n size?: AvatarSize;\n}\n\n/** Overlapping stack of at most three avatars, then a `+n` chip. */\nexport const AvatarGroup = forwardRef<HTMLSpanElement, AvatarGroupProps>(\n function AvatarGroup({ people, size = 24, className, ...rest }, ref) {\n const shown = people.slice(0, 3);\n const overflow = people.length - shown.length;\n return (\n <span\n ref={ref}\n role=\"group\"\n aria-label={people.map((p) => p.name).join(\", \")}\n className={[\"ds-avatar-group\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {shown.map((person) => (\n <Avatar key={person.name} name={person.name} src={person.src} size={size} />\n ))}\n {overflow > 0 && <span className=\"ds-avatar-group__count\">+{overflow}</span>}\n </span>\n );\n },\n);\n"],"mappings":"A,yHAYA,SAASG,EAAW,EAAc,CAChC,IAAMC,EAAQC,EAAK,KAAK,CAAC,CAAC,MAAM,KAAK,EAGrC,QAFcD,EAAM,EAAE,GAAG,IAAM,KAClBA,EAAM,OAAS,EAAIA,EAAMA,EAAM,OAAS,EAAE,CAAC,GAAK,IAAA,CACvC,YAAY,CACpC,CAMA,IAAaE,GAAA,EAASN,EAAAA,WAAAA,CAAyC,SAC7D,CAAE,OAAM,MAAK,OAAO,GAAI,YAAW,GAAGO,GACtC,EACA,CACA,OACE,EAAAL,EAAA,IAAA,CAAC,OAAD,CACO,MACL,KAAK,MACL,aAAYG,EACZ,MAAOA,EACP,YAAWG,EACX,UAAW,CAAC,YAAaC,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,EAC5D,GAAIF,EAEH,SAAAG,GAAM,EAAAR,EAAA,IAAA,CAAC,MAAD,CAAU,MAAK,IAAI,EAAI,CAAA,EAAIC,EAAWE,CAAI,CAC7C,CAAA,CAEV,CAAC,EASYM,GAAA,EAAcX,EAAAA,WAAAA,CACzB,SAAqB,CAAE,SAAQ,OAAO,GAAI,YAAW,GAAGO,GAAQ,EAAK,CACnE,IAAMK,EAAQC,EAAO,MAAM,EAAG,CAAC,EACzBC,EAAWD,EAAO,OAASD,EAAM,OACvC,OACE,EAAAV,EAAA,KAAA,CAAC,OAAD,CACO,MACL,KAAK,QACL,aAAYW,EAAO,IAAK,GAAME,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI,EAC/C,UAAW,CAAC,kBAAmBN,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,EAClE,GAAIF,EALN,SAAA,CAOGK,EAAM,IAAK,IACV,EAAAV,EAAA,IAAA,CAACI,EAAD,CAA0B,KAAMU,EAAO,KAAM,IAAKA,EAAO,IAAW,MAAO,EAA9DA,EAAO,IAAuD,CAC5E,EACAF,EAAW,IAAK,EAAAZ,EAAA,KAAA,CAAC,OAAD,CAAM,UAAU,yBAAhB,SAAA,CAAyC,IAAEY,CAAe,CACvE,CAAA,CAAA,C,EAEV,CACF,E"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type HTMLAttributes } from "react";
|
|
2
|
+
export type AvatarSize = 24 | 32 | 40;
|
|
3
|
+
export interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {
|
|
4
|
+
/** Required — drives the initials and the accessible name. */
|
|
5
|
+
name: string;
|
|
6
|
+
src?: string;
|
|
7
|
+
size?: AvatarSize;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Identifies a person at a glance in a dense surface. An identifier, not a
|
|
11
|
+
* control — never colour-generated, never carrying a status dot.
|
|
12
|
+
*/
|
|
13
|
+
export declare const Avatar: import("react").ForwardRefExoticComponent<AvatarProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
14
|
+
export interface AvatarGroupProps extends HTMLAttributes<HTMLSpanElement> {
|
|
15
|
+
/** Up to three render; the rest become a `+n` count. */
|
|
16
|
+
people: {
|
|
17
|
+
name: string;
|
|
18
|
+
src?: string;
|
|
19
|
+
}[];
|
|
20
|
+
size?: AvatarSize;
|
|
21
|
+
}
|
|
22
|
+
/** Overlapping stack of at most three avatars, then a `+n` chip. */
|
|
23
|
+
export declare const AvatarGroup: import("react").ForwardRefExoticComponent<AvatarGroupProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
24
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/components/Avatar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEtC,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,eAAe,CAAC;IAClE,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AASD;;;GAGG;AACH,eAAO,MAAM,MAAM,yGAiBjB,CAAC;AAEH,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,eAAe,CAAC;IACvE,wDAAwD;IACxD,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzC,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,oEAAoE;AACpE,eAAO,MAAM,WAAW,8GAmBvB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type HTMLAttributes } from "react";
|
|
2
|
+
export type AvatarSize = 24 | 32 | 40;
|
|
3
|
+
export interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {
|
|
4
|
+
/** Required — drives the initials and the accessible name. */
|
|
5
|
+
name: string;
|
|
6
|
+
src?: string;
|
|
7
|
+
size?: AvatarSize;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Identifies a person at a glance in a dense surface. An identifier, not a
|
|
11
|
+
* control — never colour-generated, never carrying a status dot.
|
|
12
|
+
*/
|
|
13
|
+
export declare const Avatar: import("react").ForwardRefExoticComponent<AvatarProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
14
|
+
export interface AvatarGroupProps extends HTMLAttributes<HTMLSpanElement> {
|
|
15
|
+
/** Up to three render; the rest become a `+n` count. */
|
|
16
|
+
people: {
|
|
17
|
+
name: string;
|
|
18
|
+
src?: string;
|
|
19
|
+
}[];
|
|
20
|
+
size?: AvatarSize;
|
|
21
|
+
}
|
|
22
|
+
/** Overlapping stack of at most three avatars, then a `+n` chip. */
|
|
23
|
+
export declare const AvatarGroup: import("react").ForwardRefExoticComponent<AvatarGroupProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Avatar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AACxD,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAEtC,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,eAAe,CAAC;IAClE,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AASD;;;GAGG;AACH,eAAO,MAAM,MAAM,yGAiBjB,CAAC;AAEH,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,eAAe,CAAC;IACvE,wDAAwD;IACxD,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzC,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,oEAAoE;AACpE,eAAO,MAAM,WAAW,8GAmBvB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { forwardRef as e } from "react";
|
|
2
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/Avatar/index.tsx
|
|
4
|
+
function r(e) {
|
|
5
|
+
let t = e.trim().split(/\s+/);
|
|
6
|
+
return ((t[0]?.[0] ?? "") + (t.length > 1 ? t[t.length - 1][0] : "")).toUpperCase();
|
|
7
|
+
}
|
|
8
|
+
var i = e(function({ name: e, src: n, size: i = 24, className: a, ...o }, s) {
|
|
9
|
+
return /* @__PURE__ */ t("span", {
|
|
10
|
+
ref: s,
|
|
11
|
+
role: "img",
|
|
12
|
+
"aria-label": e,
|
|
13
|
+
title: e,
|
|
14
|
+
"data-size": i,
|
|
15
|
+
className: ["ds-avatar", a].filter(Boolean).join(" "),
|
|
16
|
+
...o,
|
|
17
|
+
children: n ? /* @__PURE__ */ t("img", {
|
|
18
|
+
src: n,
|
|
19
|
+
alt: ""
|
|
20
|
+
}) : r(e)
|
|
21
|
+
});
|
|
22
|
+
}), a = e(function({ people: e, size: r = 24, className: a, ...o }, s) {
|
|
23
|
+
let c = e.slice(0, 3), l = e.length - c.length;
|
|
24
|
+
return /* @__PURE__ */ n("span", {
|
|
25
|
+
ref: s,
|
|
26
|
+
role: "group",
|
|
27
|
+
"aria-label": e.map((e) => e.name).join(", "),
|
|
28
|
+
className: ["ds-avatar-group", a].filter(Boolean).join(" "),
|
|
29
|
+
...o,
|
|
30
|
+
children: [c.map((e) => /* @__PURE__ */ t(i, {
|
|
31
|
+
name: e.name,
|
|
32
|
+
src: e.src,
|
|
33
|
+
size: r
|
|
34
|
+
}, e.name)), l > 0 && /* @__PURE__ */ n("span", {
|
|
35
|
+
className: "ds-avatar-group__count",
|
|
36
|
+
children: ["+", l]
|
|
37
|
+
})]
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
//#endregion
|
|
41
|
+
export { i as Avatar, a as AvatarGroup };
|
|
42
|
+
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["initialsOf","words","name","Avatar","forwardRef","rest","size","className","src","AvatarGroup","shown","people","overflow","p","person"],"sources":["../../../src/components/Avatar/index.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from \"react\";\nimport \"./style.css\";\n\nexport type AvatarSize = 24 | 32 | 40;\n\nexport interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {\n /** Required — drives the initials and the accessible name. */\n name: string;\n src?: string;\n size?: AvatarSize;\n}\n\nfunction initialsOf(name: string) {\n const words = name.trim().split(/\\s+/);\n const first = words[0]?.[0] ?? \"\";\n const last = words.length > 1 ? words[words.length - 1][0] : \"\";\n return (first + last).toUpperCase();\n}\n\n/**\n * Identifies a person at a glance in a dense surface. An identifier, not a\n * control — never colour-generated, never carrying a status dot.\n */\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(\n { name, src, size = 24, className, ...rest },\n ref,\n) {\n return (\n <span\n ref={ref}\n role=\"img\"\n aria-label={name}\n title={name}\n data-size={size}\n className={[\"ds-avatar\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {src ? <img src={src} alt=\"\" /> : initialsOf(name)}\n </span>\n );\n});\n\nexport interface AvatarGroupProps extends HTMLAttributes<HTMLSpanElement> {\n /** Up to three render; the rest become a `+n` count. */\n people: { name: string; src?: string }[];\n size?: AvatarSize;\n}\n\n/** Overlapping stack of at most three avatars, then a `+n` chip. */\nexport const AvatarGroup = forwardRef<HTMLSpanElement, AvatarGroupProps>(\n function AvatarGroup({ people, size = 24, className, ...rest }, ref) {\n const shown = people.slice(0, 3);\n const overflow = people.length - shown.length;\n return (\n <span\n ref={ref}\n role=\"group\"\n aria-label={people.map((p) => p.name).join(\", \")}\n className={[\"ds-avatar-group\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {shown.map((person) => (\n <Avatar key={person.name} name={person.name} src={person.src} size={size} />\n ))}\n {overflow > 0 && <span className=\"ds-avatar-group__count\">+{overflow}</span>}\n </span>\n );\n },\n);\n"],"mappings":";;;AAYA,SAASA,EAAW,GAAc;CAChC,IAAMC,IAAQC,EAAK,KAAK,CAAC,CAAC,MAAM,KAAK;CAGrC,SAFcD,EAAM,EAAE,GAAG,MAAM,OAClBA,EAAM,SAAS,IAAIA,EAAMA,EAAM,SAAS,EAAE,CAAC,KAAK,IAAA,CACvC,YAAY;AACpC;AAMA,IAAaE,IAASC,EAAyC,SAC7D,EAAE,SAAM,QAAK,UAAO,IAAI,cAAW,GAAGC,KACtC,GACA;CACA,OACE,kBAAC,QAAD;EACO;EACL,MAAK;EACL,cAAYH;EACZ,OAAOA;EACP,aAAWI;EACX,WAAW,CAAC,aAAaC,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAC5D,GAAIF;EAEH,UAAAG,IAAM,kBAAC,OAAD;GAAU;GAAK,KAAI;EAAI,CAAA,IAAIR,EAAWE,CAAI;CAC7C,CAAA;AAEV,CAAC,GASYO,IAAcL,EACzB,SAAqB,EAAE,WAAQ,UAAO,IAAI,cAAW,GAAGC,KAAQ,GAAK;CACnE,IAAMK,IAAQC,EAAO,MAAM,GAAG,CAAC,GACzBC,IAAWD,EAAO,SAASD,EAAM;CACvC,OACE,kBAAC,QAAD;EACO;EACL,MAAK;EACL,cAAYC,EAAO,KAAK,MAAME,EAAE,IAAI,CAAC,CAAC,KAAK,IAAI;EAC/C,WAAW,CAAC,mBAAmBN,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAClE,GAAIF;EALN,UAAA,CAOGK,EAAM,KAAK,MACV,kBAACP,GAAD;GAA0B,MAAMW,EAAO;GAAM,KAAKA,EAAO;GAAW;EAAO,GAA9DA,EAAO,IAAuD,CAC5E,GACAF,IAAW,KAAK,kBAAC,QAAD;GAAM,WAAU;GAAhB,UAAA,CAAyC,KAAEA,CAAe;EACvE,CAAA,CAAA;;AAEV,CACF"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.ds-avatar {
|
|
3
|
+
display: inline-flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
justify-content: center;
|
|
6
|
+
overflow: hidden;
|
|
7
|
+
border: var(--control-border-width) solid var(--control-border-color);
|
|
8
|
+
border-radius: var(--radius-pill);
|
|
9
|
+
background: var(--color-surface-subtle);
|
|
10
|
+
color: var(--color-text);
|
|
11
|
+
font-weight: var(--font-weight-bold);
|
|
12
|
+
line-height: 1;
|
|
13
|
+
user-select: none;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
.ds-avatar img {
|
|
17
|
+
inline-size: 100%;
|
|
18
|
+
block-size: 100%;
|
|
19
|
+
object-fit: cover;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.ds-avatar[data-size="24"] {
|
|
23
|
+
inline-size: var(--icon-lg);
|
|
24
|
+
block-size: var(--icon-lg);
|
|
25
|
+
font-size: 10px;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.ds-avatar[data-size="32"] {
|
|
29
|
+
inline-size: var(--space-8);
|
|
30
|
+
block-size: var(--space-8);
|
|
31
|
+
font-size: var(--field-font-size-sm);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.ds-avatar[data-size="40"] {
|
|
35
|
+
inline-size: var(--space-10);
|
|
36
|
+
block-size: var(--space-10);
|
|
37
|
+
font-size: var(--font-size-md);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.ds-avatar-group {
|
|
41
|
+
display: inline-flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.ds-avatar-group .ds-avatar + .ds-avatar {
|
|
46
|
+
margin-inline-start: calc(-1 * var(--space-2));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.ds-avatar-group .ds-avatar:nth-child(1) {
|
|
50
|
+
z-index: 3;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.ds-avatar-group .ds-avatar:nth-child(2) {
|
|
54
|
+
z-index: 2;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.ds-avatar-group .ds-avatar:nth-child(3) {
|
|
58
|
+
z-index: 1;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.ds-avatar-group__count {
|
|
62
|
+
margin-inline-start: var(--space-2);
|
|
63
|
+
padding: 2px var(--space-2);
|
|
64
|
+
border: var(--badge-border-width) solid var(--color-text-muted);
|
|
65
|
+
border-radius: var(--radius-pill);
|
|
66
|
+
color: var(--color-text-muted);
|
|
67
|
+
font-size: var(--font-size-xs);
|
|
68
|
+
font-weight: var(--font-weight-bold);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -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=`tag`,tone:n,appearance:r=`outline`,className:i,children:a,...o},s){if(e===`count`){let e=Number(a);if(!Number.isNaN(e)){if(e===0)return null;a=e>99?`99+`:String(e)}}return(0,t.jsxs)(`span`,{ref:s,"data-shape":e,"data-appearance":r,"data-tone":e===`status`?n:void 0,className:[`ds-badge`,i].filter(Boolean).join(` `),...o,children:[e===`status`&&(0,t.jsx)(`span`,{className:`ds-badge__dot`,"aria-hidden":`true`}),a]})});exports.Badge=n;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["forwardRef","react","react_jsx_runtime","Badge","rest","shape","value","children","appearance","tone","className"],"sources":["../../../src/components/Badge/index.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport \"./style.css\";\n\nexport type BadgeShape = \"status\" | \"tag\" | \"count\";\n\n/**\n * How much ink the badge spends.\n * - `outline` — the tone as a 2px stroke on the surface. The quiet default.\n * - `soft` — the tone's soft fill behind tone-coloured text. For dense tables.\n * - `solid` — the tone as a full fill. Reserve it for the one state a row is\n * really about; a table of solid badges reads as noise.\n */\nexport type BadgeAppearance = \"outline\" | \"soft\" | \"solid\";\n\n/** Six publication states, and no seventh without a decision record. */\nexport type StatusTone =\n | \"draft\"\n | \"scheduled\"\n | \"published\"\n | \"changed\"\n | \"unpublished\"\n | \"archived\";\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n shape?: BadgeShape;\n /** Required on `status`, forbidden on `tag` and `count`. */\n tone?: StatusTone;\n appearance?: BadgeAppearance;\n children?: ReactNode;\n}\n\n/**\n * A small, non-interactive label attached to something else. Never a button,\n * never a filter. Status tones are reserved for publication state.\n */\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { shape = \"tag\", tone, appearance = \"outline\", className, children, ...rest },\n ref,\n) {\n if (shape === \"count\") {\n const value = Number(children);\n if (!Number.isNaN(value)) {\n if (value === 0) return null;\n children = value > 99 ? \"99+\" : String(value);\n }\n }\n\n return (\n <span\n ref={ref}\n data-shape={shape}\n data-appearance={appearance}\n data-tone={shape === \"status\" ? tone : undefined}\n className={[\"ds-badge\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {shape === \"status\" && <span className=\"ds-badge__dot\" aria-hidden=\"true\" />}\n {children}\n </span>\n );\n});\n"],"mappings":"A,yHAmCA,IAAaG,GAAA,EAAQH,EAAAA,WAAAA,CAAwC,SAC3D,CAAE,QAAQ,MAAO,OAAM,aAAa,UAAW,YAAW,WAAU,GAAGI,GACvE,EACA,CACA,GAAIC,IAAU,QAAS,CACrB,IAAMC,EAAQ,OAAOC,CAAQ,EAC7B,GAAI,CAAC,OAAO,MAAMD,CAAK,EAAG,CACxB,GAAIA,IAAU,EAAG,OAAO,KACxB,EAAWA,EAAQ,GAAK,MAAQ,OAAOA,CAAK,CAC9C,CACF,CAEA,OACE,EAAAJ,EAAA,KAAA,CAAC,OAAD,CACO,MACL,aAAYG,EACZ,kBAAiBG,EACjB,YAAWH,IAAU,SAAWI,EAAO,IAAA,GACvC,UAAW,CAAC,WAAYC,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG,EAC3D,GAAIN,EANN,SAAA,CAQGC,IAAU,WAAY,EAAAH,EAAA,IAAA,CAAC,OAAD,CAAM,UAAU,gBAAgB,cAAY,MAAQ,CAAA,EAC1EK,CACG,C,EAEV,CAAC,E"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
export type BadgeShape = "status" | "tag" | "count";
|
|
3
|
+
/**
|
|
4
|
+
* How much ink the badge spends.
|
|
5
|
+
* - `outline` — the tone as a 2px stroke on the surface. The quiet default.
|
|
6
|
+
* - `soft` — the tone's soft fill behind tone-coloured text. For dense tables.
|
|
7
|
+
* - `solid` — the tone as a full fill. Reserve it for the one state a row is
|
|
8
|
+
* really about; a table of solid badges reads as noise.
|
|
9
|
+
*/
|
|
10
|
+
export type BadgeAppearance = "outline" | "soft" | "solid";
|
|
11
|
+
/** Six publication states, and no seventh without a decision record. */
|
|
12
|
+
export type StatusTone = "draft" | "scheduled" | "published" | "changed" | "unpublished" | "archived";
|
|
13
|
+
export interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
|
|
14
|
+
shape?: BadgeShape;
|
|
15
|
+
/** Required on `status`, forbidden on `tag` and `count`. */
|
|
16
|
+
tone?: StatusTone;
|
|
17
|
+
appearance?: BadgeAppearance;
|
|
18
|
+
children?: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A small, non-interactive label attached to something else. Never a button,
|
|
22
|
+
* never a filter. Status tones are reserved for publication state.
|
|
23
|
+
*/
|
|
24
|
+
export declare const Badge: import("react").ForwardRefExoticComponent<BadgeProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
25
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../../src/components/Badge/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,wEAAwE;AACxE,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,WAAW,GACX,WAAW,GACX,SAAS,GACT,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,WAAW,UAAW,SAAQ,cAAc,CAAC,eAAe,CAAC;IACjE,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,wGAyBhB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from "react";
|
|
2
|
+
export type BadgeShape = "status" | "tag" | "count";
|
|
3
|
+
/**
|
|
4
|
+
* How much ink the badge spends.
|
|
5
|
+
* - `outline` — the tone as a 2px stroke on the surface. The quiet default.
|
|
6
|
+
* - `soft` — the tone's soft fill behind tone-coloured text. For dense tables.
|
|
7
|
+
* - `solid` — the tone as a full fill. Reserve it for the one state a row is
|
|
8
|
+
* really about; a table of solid badges reads as noise.
|
|
9
|
+
*/
|
|
10
|
+
export type BadgeAppearance = "outline" | "soft" | "solid";
|
|
11
|
+
/** Six publication states, and no seventh without a decision record. */
|
|
12
|
+
export type StatusTone = "draft" | "scheduled" | "published" | "changed" | "unpublished" | "archived";
|
|
13
|
+
export interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
|
|
14
|
+
shape?: BadgeShape;
|
|
15
|
+
/** Required on `status`, forbidden on `tag` and `count`. */
|
|
16
|
+
tone?: StatusTone;
|
|
17
|
+
appearance?: BadgeAppearance;
|
|
18
|
+
children?: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* A small, non-interactive label attached to something else. Never a button,
|
|
22
|
+
* never a filter. Status tones are reserved for publication state.
|
|
23
|
+
*/
|
|
24
|
+
export declare const Badge: import("react").ForwardRefExoticComponent<BadgeProps & import("react").RefAttributes<HTMLSpanElement>>;
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Badge/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,wEAAwE;AACxE,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,WAAW,GACX,WAAW,GACX,SAAS,GACT,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,WAAW,UAAW,SAAQ,cAAc,CAAC,eAAe,CAAC;IACjE,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,KAAK,wGAyBhB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { forwardRef as e } from "react";
|
|
2
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/Badge/index.tsx
|
|
4
|
+
var r = e(function({ shape: e = "tag", tone: r, appearance: i = "outline", className: a, children: o, ...s }, c) {
|
|
5
|
+
if (e === "count") {
|
|
6
|
+
let e = Number(o);
|
|
7
|
+
if (!Number.isNaN(e)) {
|
|
8
|
+
if (e === 0) return null;
|
|
9
|
+
o = e > 99 ? "99+" : String(e);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return /* @__PURE__ */ n("span", {
|
|
13
|
+
ref: c,
|
|
14
|
+
"data-shape": e,
|
|
15
|
+
"data-appearance": i,
|
|
16
|
+
"data-tone": e === "status" ? r : void 0,
|
|
17
|
+
className: ["ds-badge", a].filter(Boolean).join(" "),
|
|
18
|
+
...s,
|
|
19
|
+
children: [e === "status" && /* @__PURE__ */ t("span", {
|
|
20
|
+
className: "ds-badge__dot",
|
|
21
|
+
"aria-hidden": "true"
|
|
22
|
+
}), o]
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
//#endregion
|
|
26
|
+
export { r as Badge };
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["Badge","forwardRef","rest","shape","value","children","appearance","tone","className"],"sources":["../../../src/components/Badge/index.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes, type ReactNode } from \"react\";\nimport \"./style.css\";\n\nexport type BadgeShape = \"status\" | \"tag\" | \"count\";\n\n/**\n * How much ink the badge spends.\n * - `outline` — the tone as a 2px stroke on the surface. The quiet default.\n * - `soft` — the tone's soft fill behind tone-coloured text. For dense tables.\n * - `solid` — the tone as a full fill. Reserve it for the one state a row is\n * really about; a table of solid badges reads as noise.\n */\nexport type BadgeAppearance = \"outline\" | \"soft\" | \"solid\";\n\n/** Six publication states, and no seventh without a decision record. */\nexport type StatusTone =\n | \"draft\"\n | \"scheduled\"\n | \"published\"\n | \"changed\"\n | \"unpublished\"\n | \"archived\";\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n shape?: BadgeShape;\n /** Required on `status`, forbidden on `tag` and `count`. */\n tone?: StatusTone;\n appearance?: BadgeAppearance;\n children?: ReactNode;\n}\n\n/**\n * A small, non-interactive label attached to something else. Never a button,\n * never a filter. Status tones are reserved for publication state.\n */\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(function Badge(\n { shape = \"tag\", tone, appearance = \"outline\", className, children, ...rest },\n ref,\n) {\n if (shape === \"count\") {\n const value = Number(children);\n if (!Number.isNaN(value)) {\n if (value === 0) return null;\n children = value > 99 ? \"99+\" : String(value);\n }\n }\n\n return (\n <span\n ref={ref}\n data-shape={shape}\n data-appearance={appearance}\n data-tone={shape === \"status\" ? tone : undefined}\n className={[\"ds-badge\", className].filter(Boolean).join(\" \")}\n {...rest}\n >\n {shape === \"status\" && <span className=\"ds-badge__dot\" aria-hidden=\"true\" />}\n {children}\n </span>\n );\n});\n"],"mappings":";;;AAmCA,IAAaA,IAAQC,EAAwC,SAC3D,EAAE,WAAQ,OAAO,SAAM,gBAAa,WAAW,cAAW,aAAU,GAAGC,KACvE,GACA;CACA,IAAIC,MAAU,SAAS;EACrB,IAAMC,IAAQ,OAAOC,CAAQ;EAC7B,IAAI,CAAC,OAAO,MAAMD,CAAK,GAAG;GACxB,IAAIA,MAAU,GAAG,OAAO;GACxB,IAAWA,IAAQ,KAAK,QAAQ,OAAOA,CAAK;EAC9C;CACF;CAEA,OACE,kBAAC,QAAD;EACO;EACL,cAAYD;EACZ,mBAAiBG;EACjB,aAAWH,MAAU,WAAWI,IAAO,KAAA;EACvC,WAAW,CAAC,YAAYC,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;EAC3D,GAAIN;EANN,UAAA,CAQGC,MAAU,YAAY,kBAAC,QAAD;GAAM,WAAU;GAAgB,eAAY;EAAQ,CAAA,GAC1EE,CACG;;AAEV,CAAC"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.ds-badge {
|
|
3
|
+
/* Three inks per badge: the stroke/text tone, the soft fill it sits on,
|
|
4
|
+
* and the solid pair. A tone sets all four; appearance picks which two
|
|
5
|
+
* are used. Nothing else in the component knows a colour. */
|
|
6
|
+
--badge-ink: var(--color-text-muted);
|
|
7
|
+
--badge-soft: var(--color-surface-subtle);
|
|
8
|
+
--badge-solid: var(--color-text);
|
|
9
|
+
--badge-on-solid: var(--color-surface);
|
|
10
|
+
|
|
11
|
+
display: inline-flex;
|
|
12
|
+
align-items: center;
|
|
13
|
+
gap: var(--space-2);
|
|
14
|
+
padding: 2px var(--space-2);
|
|
15
|
+
border: var(--badge-border-width) solid transparent;
|
|
16
|
+
border-radius: var(--radius-pill);
|
|
17
|
+
font-size: var(--font-size-xs);
|
|
18
|
+
font-weight: var(--font-weight-bold);
|
|
19
|
+
line-height: var(--line-height-tight);
|
|
20
|
+
white-space: nowrap;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.ds-badge[data-shape="status"] {
|
|
24
|
+
padding: 2px 10px;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* A count reads as one glyph: never narrower than it is tall. */
|
|
28
|
+
.ds-badge[data-shape="count"] {
|
|
29
|
+
justify-content: center;
|
|
30
|
+
min-inline-size: var(--space-6);
|
|
31
|
+
padding-inline: var(--space-2);
|
|
32
|
+
font-variant-numeric: tabular-nums;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* ── Appearances ─────────────────────────────────────────────────────── */
|
|
36
|
+
.ds-badge[data-appearance="outline"] {
|
|
37
|
+
background: transparent;
|
|
38
|
+
border-color: var(--badge-ink);
|
|
39
|
+
color: var(--badge-ink);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.ds-badge[data-appearance="soft"] {
|
|
43
|
+
background: var(--badge-soft);
|
|
44
|
+
border-color: color-mix(in srgb, var(--badge-ink) 30%, transparent);
|
|
45
|
+
color: var(--badge-ink);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.ds-badge[data-appearance="solid"] {
|
|
49
|
+
background: var(--badge-solid);
|
|
50
|
+
border-color: var(--badge-solid);
|
|
51
|
+
color: var(--badge-on-solid);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.ds-badge__dot {
|
|
55
|
+
inline-size: var(--space-2);
|
|
56
|
+
block-size: var(--space-2);
|
|
57
|
+
border-radius: var(--radius-pill);
|
|
58
|
+
background: currentColor;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* ── Publication tones ───────────────────────────────────────────────── */
|
|
62
|
+
.ds-badge[data-tone="draft"] {
|
|
63
|
+
--badge-ink: var(--status-draft-text);
|
|
64
|
+
--badge-soft: var(--status-draft-soft);
|
|
65
|
+
--badge-solid: var(--color-text-muted);
|
|
66
|
+
--badge-on-solid: var(--color-surface);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
.ds-badge[data-tone="scheduled"] {
|
|
70
|
+
--badge-ink: var(--status-scheduled);
|
|
71
|
+
--badge-soft: var(--status-scheduled-soft);
|
|
72
|
+
--badge-solid: var(--color-primary);
|
|
73
|
+
--badge-on-solid: var(--color-text-on-solid);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.ds-badge[data-tone="published"] {
|
|
77
|
+
--badge-ink: var(--status-published);
|
|
78
|
+
--badge-soft: var(--status-published-soft);
|
|
79
|
+
--badge-solid: var(--color-success);
|
|
80
|
+
--badge-on-solid: var(--color-text-on-solid);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.ds-badge[data-tone="changed"] {
|
|
84
|
+
--badge-ink: var(--status-changed);
|
|
85
|
+
--badge-soft: var(--status-changed-soft);
|
|
86
|
+
--badge-solid: var(--color-warning);
|
|
87
|
+
--badge-on-solid: var(--color-text-on-solid);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.ds-badge[data-tone="unpublished"] {
|
|
91
|
+
--badge-ink: var(--status-unpublished);
|
|
92
|
+
--badge-soft: var(--status-unpublished-soft);
|
|
93
|
+
--badge-solid: var(--color-danger);
|
|
94
|
+
--badge-on-solid: var(--color-text-on-solid);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.ds-badge[data-tone="archived"] {
|
|
98
|
+
--badge-ink: var(--status-archived-text);
|
|
99
|
+
--badge-soft: var(--color-surface-subtle);
|
|
100
|
+
--badge-solid: var(--color-border-strong);
|
|
101
|
+
--badge-on-solid: var(--color-text);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -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"),r=require("@dnd-kit/core"),i=require("@dnd-kit/sortable"),a=require("@dnd-kit/utilities");var o=(e,t)=>{let{currentCoordinates:n,context:r}=t;if(e.code===`ArrowLeft`||e.code===`ArrowRight`){let t=r.droppableContainers.getEnabled().filter(e=>e.data.current?.type===`column-body`).sort((e,t)=>(e.rect.current?.left??0)-(t.rect.current?.left??0)),i=r.active?.rect.current.translated;if(!i)return;let a=t[t.findIndex(e=>(e.rect.current?.left??0)<=i.left+1&&(e.rect.current?.right??0)>=i.left-1)+(e.code===`ArrowRight`?1:-1)]?.rect.current;return a?(e.preventDefault(),{x:a.left+a.width/2-i.width/2,y:n.y}):void 0}return(0,i.sortableKeyboardCoordinates)(e,t)},s=e=>{let t=e.active.data.current?.type===`column`,n=e.droppableContainers.filter(e=>{let n=e.data.current?.type;return t?n===`column`:n!==`column`}),i={...e,droppableContainers:n};if(t)return(0,r.closestCorners)(i);let a=(0,r.pointerWithin)(i);if(a.length>0){let e=e=>n.find(t=>t.id===e)?.data.current?.type===`card`?0:1;return[...a].sort((t,n)=>e(t.id)-e(n.id))}return(0,r.closestCorners)(i)},c=(0,t.createContext)({activeId:null,activeType:null,overColumnId:null}),l=(0,t.forwardRef)(function({columnIds:a,onMove:l,onColumnMove:u,renderDragOverlay:d,renderColumnDragOverlay:f,className:p,children:m,...h},g){let _=(0,t.useId)(),[v,y]=(0,t.useState)(null),[b,x]=(0,t.useState)(null),[S,C]=(0,t.useState)(null),w=(0,r.useSensors)((0,r.useSensor)(r.PointerSensor,{activationConstraint:{distance:4}}),(0,r.useSensor)(r.KeyboardSensor,{coordinateGetter:o})),T=(0,t.useCallback)(e=>{y(String(e.active.id)),x(e.active.data.current?.type===`column`?`column`:`card`)},[]),E=(0,t.useCallback)(e=>{let t=e.over;if(!t){C(null);return}let n=t.data.current??{},r=n.type===`column`?String(t.id):String(n.columnId??``);C(r||null)},[]),D=(0,t.useCallback)(()=>{y(null),x(null),C(null)},[]),O=(0,t.useCallback)(e=>{let{active:t,over:n}=e;if(D(),!n)return;let r=t.data.current??{},i=n.data.current??{};if(r.type===`column`){let e=a??[],r=i.type===`column`?String(n.id):String(i.columnId??``),o=e.indexOf(r);if(o<0||r===String(t.id))return;u?.({columnId:String(t.id),toIndex:o});return}let o=String(r.columnId??``),s=``,c=0;i.type===`card`?(s=String(i.columnId??``),c=i.sortable?.index??0):(s=String(i.columnId??n.id),c=(i.items??[]).length),s&&(o!==s||String(t.id)!==String(n.id))&&l?.({cardId:String(t.id),fromColumnId:o,toColumnId:s,toIndex:c})},[a,u,l,D]),k=(0,t.useMemo)(()=>({activeId:v,activeType:b,overColumnId:S}),[v,b,S]),A=(0,n.jsx)(`div`,{ref:g,className:[`ds-board`,p].filter(Boolean).join(` `),...h,children:m});return(0,n.jsx)(c.Provider,{value:k,children:(0,n.jsxs)(r.DndContext,{id:`ds-board-${_}`,sensors:w,collisionDetection:s,measuring:{droppable:{strategy:r.MeasuringStrategy.Always}},onDragStart:T,onDragOver:E,onDragEnd:O,onDragCancel:D,children:[a?(0,n.jsx)(i.SortableContext,{items:a,strategy:i.horizontalListSortingStrategy,children:A}):A,(0,n.jsxs)(r.DragOverlay,{children:[v&&b===`card`?(0,n.jsxs)(`div`,{className:`ds-board-card`,"data-overlay":!0,children:[(0,n.jsx)(`span`,{className:`ds-board-card__handle`,"aria-hidden":`true`,children:(0,n.jsx)(e.t,{name:`grip-vertical`})}),(0,n.jsx)(`div`,{className:`ds-board-card__content`,children:d?.(v)})]}):null,v&&b===`column`?(0,n.jsx)(`div`,{className:`ds-board-column`,"data-overlay":!0,children:f?.(v)}):null]})]})})}),u=(0,t.forwardRef)(function({id:o,title:s,itemIds:l,count:u,action:d,isDraggable:f=!0,className:p,children:m,...h},g){let{activeType:_,overColumnId:v}=(0,t.useContext)(c),{setNodeRef:y}=(0,r.useDroppable)({id:`${o}::body`,data:{type:`column-body`,columnId:o,items:l}}),{attributes:b,listeners:x,setNodeRef:S,transform:C,transition:w,isDragging:T}=(0,i.useSortable)({id:o,disabled:!f,data:{type:`column`,columnId:o,items:l}});return(0,n.jsxs)(`section`,{ref:e=>{S(e),typeof g==`function`?g(e):g&&(g.current=e)},style:{transform:a.CSS.Translate.toString(C),transition:w},className:[`ds-board-column`,p].filter(Boolean).join(` `),"data-over":_===`card`&&v===o||void 0,"data-dragging":T||void 0,"aria-label":s,...h,children:[f&&(0,n.jsx)(`button`,{type:`button`,className:`ds-board-column__grip`,"aria-label":`Reorder ${s}`,...b,...x,children:(0,n.jsx)(e.t,{name:`grip-horizontal`})}),(0,n.jsxs)(`header`,{className:`ds-board-column__head`,children:[(0,n.jsx)(`span`,{className:`ds-board-column__title`,children:s}),(0,n.jsx)(`span`,{className:`ds-board-column__count`,children:u??l.length}),d&&(0,n.jsx)(`span`,{className:`ds-board-column__action`,children:d})]}),(0,n.jsx)(`div`,{ref:y,className:`ds-board-column__body`,children:(0,n.jsx)(i.SortableContext,{items:l,strategy:i.verticalListSortingStrategy,children:m})})]})}),d=(0,t.forwardRef)(function({id:r,columnId:o,label:s,className:l,children:u,...d},f){let{attributes:p,listeners:m,setNodeRef:h,transform:g,transition:_,isDragging:v}=(0,i.useSortable)({id:r,data:{type:`card`,columnId:o}}),{activeId:y}=(0,t.useContext)(c);return(0,n.jsxs)(`div`,{ref:e=>{h(e),typeof f==`function`?f(e):f&&(f.current=e)},style:{transform:a.CSS.Translate.toString(g),transition:_},className:[`ds-board-card`,l].filter(Boolean).join(` `),"data-dragging":v||void 0,"data-idle":y&&y!==r?``:void 0,...d,children:[(0,n.jsx)(`button`,{type:`button`,className:`ds-board-card__handle`,"aria-label":s?`Move ${s}`:`Move card`,...p,...m,children:(0,n.jsx)(e.t,{name:`grip-vertical`})}),(0,n.jsx)(`div`,{className:`ds-board-card__content`,children:u})]})});exports.Board=l,exports.BoardCard=d,exports.BoardColumn=u;
|
|
2
|
+
//# sourceMappingURL=index.cjs.map
|