@primer/react 38.29.0-rc.282c30cdc → 38.29.0-rc.a734edbb0
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/CHANGELOG.md +2 -0
- package/dist/ActionList/ActionList-65f7daac.css +2 -0
- package/dist/ActionList/ActionList-65f7daac.css.map +1 -0
- package/dist/ActionList/ActionList.module.css.js +2 -2
- package/dist/ActionList/List.d.ts.map +1 -1
- package/dist/ActionList/List.js +21 -16
- package/dist/ConfirmationDialog/ConfirmationDialog.d.ts +0 -9
- package/dist/ConfirmationDialog/ConfirmationDialog.d.ts.map +1 -1
- package/dist/ConfirmationDialog/ConfirmationDialog.js +1 -42
- package/dist/ConfirmationDialog/useConfirm.d.ts +12 -0
- package/dist/ConfirmationDialog/useConfirm.d.ts.map +1 -0
- package/dist/ConfirmationDialog/useConfirm.js +44 -0
- package/dist/FeatureFlags/DefaultFeatureFlags.d.ts.map +1 -1
- package/dist/FeatureFlags/DefaultFeatureFlags.js +1 -0
- package/dist/ThemeContext.d.ts +15 -0
- package/dist/ThemeContext.d.ts.map +1 -0
- package/dist/ThemeContext.js +9 -0
- package/dist/ThemeProvider.d.ts +1 -14
- package/dist/ThemeProvider.d.ts.map +1 -1
- package/dist/ThemeProvider.js +3 -18
- package/dist/experimental/Tabs/Tabs.d.ts +3 -111
- package/dist/experimental/Tabs/Tabs.d.ts.map +1 -1
- package/dist/experimental/Tabs/Tabs.js +3 -237
- package/dist/experimental/Tabs/TabsContext.d.ts +3 -0
- package/dist/experimental/Tabs/TabsContext.d.ts.map +1 -0
- package/dist/experimental/Tabs/TabsContext.js +5 -0
- package/dist/experimental/Tabs/index.d.ts +5 -2
- package/dist/experimental/Tabs/index.d.ts.map +1 -1
- package/dist/experimental/Tabs/types.d.ts +107 -0
- package/dist/experimental/Tabs/types.d.ts.map +1 -0
- package/dist/experimental/Tabs/useTab.d.ts +7 -0
- package/dist/experimental/Tabs/useTab.d.ts.map +1 -0
- package/dist/experimental/Tabs/useTab.js +97 -0
- package/dist/experimental/Tabs/useTabList.d.ts +3 -0
- package/dist/experimental/Tabs/useTabList.d.ts.map +1 -0
- package/dist/experimental/Tabs/useTabList.js +100 -0
- package/dist/experimental/Tabs/useTabPanel.d.ts +4 -0
- package/dist/experimental/Tabs/useTabPanel.d.ts.map +1 -0
- package/dist/experimental/Tabs/useTabPanel.js +37 -0
- package/dist/experimental/Tabs/useTabs.d.ts +3 -0
- package/dist/experimental/Tabs/useTabs.d.ts.map +1 -0
- package/dist/experimental/Tabs/useTabs.js +12 -0
- package/dist/experimental/index.js +4 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/useTheme.d.ts +15 -0
- package/dist/useTheme.d.ts.map +1 -0
- package/dist/useTheme.js +16 -0
- package/package.json +1 -1
- package/dist/ActionList/ActionList-1940009e.css +0 -2
- package/dist/ActionList/ActionList-1940009e.css.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
|
|
9
9
|
### Patch Changes
|
|
10
10
|
|
|
11
|
+
- [#7976](https://github.com/primer/react/pull/7976) [`1fac927`](https://github.com/primer/react/commit/1fac9270c497c1904acbb3eb60805630aab82a97) Thanks [@copilot-swe-agent](https://github.com/apps/copilot-swe-agent)! - NavList: add a small gap between items for readability, including before expanded sub-navs, behind the `primer_react_action_list_item_gap` feature flag
|
|
12
|
+
|
|
11
13
|
- [#7978](https://github.com/primer/react/pull/7978) [`e3f655c`](https://github.com/primer/react/commit/e3f655c6735ffd1bd105b8e7599e273bb1eee4d1) Thanks [@copilot-swe-agent](https://github.com/apps/copilot-swe-agent)! - PageHeader.ParentLink: Forward unknown props (e.g. `to`) to the underlying element, enabling client-side routing with polymorphic `as`.
|
|
12
14
|
|
|
13
15
|
## 38.28.0
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
.prc-ActionList-ActionList-rPFF2,.prc-ActionList-ActionList-rPFF2 ul{list-style:none;margin:0;padding:0}.prc-ActionList-ActionList-rPFF2:where([data-variant=inset]){padding-block:var(--base-size-8,.5rem)}.prc-ActionList-ActionList-rPFF2:where([data-variant=inset],[data-variant=horizontal-inset]) .prc-ActionList-ActionListItem-So4vC{margin-inline:var(--base-size-8,.5rem)}.prc-ActionList-ActionList-rPFF2:where([data-variant=horizontal-inset]){padding-bottom:var(--base-size-8,.5rem)}.prc-ActionList-ActionList-rPFF2:where([data-item-gap]) .prc-ActionList-ActionListItem-So4vC+.prc-ActionList-ActionListItem-So4vC{margin-block-start:var(--base-size-2,.125rem)}.prc-ActionList-ActionList-rPFF2:where([data-item-gap]) .prc-ActionList-SubGroup-5Zje2{margin-block-start:var(--base-size-2,.125rem)}.prc-ActionList-ActionList-rPFF2:where([data-dividers=true]) .prc-ActionList-ActionListSubContent-gKsFp:before{background:var(--borderColor-muted,#d1d9e0b3);content:"";display:block;height:1px;position:absolute;top:-7px;width:100%}:is(.prc-ActionList-ActionList-rPFF2:where([data-dividers=true]) [data-description-variant=inline]):before{background:var(--borderColor-muted,#d1d9e0b3);content:"";display:block;height:var(--borderWidth-thin,.0625rem);position:absolute;top:-7px;width:100%}:is(.prc-ActionList-ActionList-rPFF2:where([data-dividers=true]) [data-description-variant=inline]) .prc-ActionList-ActionListSubContent-gKsFp:before{content:unset}.prc-ActionList-ActionList-rPFF2:where([data-dividers=true]) .prc-ActionList-ActionListItem-So4vC:first-of-type .prc-ActionList-ActionListSubContent-gKsFp:before,.prc-ActionList-ActionList-rPFF2:where([data-dividers=true]) .prc-ActionList-Divider-taVfb+.prc-ActionList-ActionListItem-So4vC .prc-ActionList-ActionListSubContent-gKsFp:before{visibility:hidden}.prc-ActionList-ActionList-rPFF2:where([data-dividers=true]) .prc-ActionList-ActionListItem-So4vC:first-of-type [data-description-variant=inline]:before,.prc-ActionList-ActionList-rPFF2:where([data-dividers=true]) .prc-ActionList-Divider-taVfb+.prc-ActionList-ActionListItem-So4vC [data-description-variant=inline]:before{visibility:hidden}.prc-ActionList-ActionList-rPFF2 .prc-ActionList-Divider-taVfb:first-child{display:none}.prc-ActionList-ActionList-rPFF2[data-mixed-descriptions=true] .prc-ActionList-ItemLabel-81ohH{font-weight:var(--base-text-weight-normal,400)}.prc-ActionList-ActionListItem-So4vC{background-color:var(--control-transparent-bgColor-rest,#ffffff00);border-radius:var(--borderRadius-medium,.375rem);list-style:none;position:relative}.prc-ActionList-ActionListItem-So4vC[data-has-trailing-action]{display:flex;flex-wrap:nowrap}@media (forced-colors:active){.prc-ActionList-ActionListItem-So4vC :focus,.prc-ActionList-ActionListItem-So4vC:focus-visible,.prc-ActionList-ActionListItem-So4vC>a.prc-ActionList-focus-visible-OJCTY,.prc-ActionList-ActionListItem-So4vC[data-is-active-descendant]{outline:1px solid transparent!important}}@media (hover:hover){.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):active,.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):hover{cursor:pointer}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):hover{background-color:var(--control-transparent-bgColor-hover,#818b981a)}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):hover:not([data-active],:focus-visible){box-shadow:var(--boxShadow-thin,inset 0 0 0 .0625rem) var(--control-transparent-borderColor-active,#ffffff00);outline:solid var(--borderWidth-thin,.0625rem) transparent;outline-offset:calc(var(--borderWidth-thin,.0625rem)*-1)}}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):active{background-color:var(--control-transparent-bgColor-active,#818b9826)}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):active:not([data-active]){box-shadow:var(--boxShadow-thin,inset 0 0 0 .0625rem) var(--control-transparent-borderColor-active,#ffffff00);outline:solid var(--borderWidth-thin,.0625rem) transparent;outline-offset:calc(var(--borderWidth-thin,.0625rem)*-1)}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):focus-visible{box-shadow:none;outline:2px solid var(--focus-outline-color,var(--focus-outlineColor,#0969da));outline-offset:0}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):focus-visible .prc-ActionList-ActionListSubContent-gKsFp:before,.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):focus-visible+.prc-ActionList-ActionListItem-So4vC .prc-ActionList-ActionListSubContent-gKsFp:before{visibility:hidden}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-variant=danger]) .prc-ActionList-ItemLabel-81ohH,.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-variant=danger]) .prc-ActionList-LeadingAction-hbWbh,.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-variant=danger]) .prc-ActionList-LeadingVisual-NBr28{color:var(--control-danger-fgColor-rest,#d1242f)}@media (hover:hover){.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-variant=danger]):hover{background:var(--control-danger-bgColor-hover,#ffebe9)}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-variant=danger]):hover .prc-ActionList-ItemLabel-81ohH,.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-variant=danger]):hover .prc-ActionList-LeadingAction-hbWbh,.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-variant=danger]):hover .prc-ActionList-LeadingVisual-NBr28{color:var(--control-danger-fgColor-hover,#d1242f)}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-variant=danger]):hover [data-kbd-chord]{background-color:var(--bgColor-default,#fff);transition:none}}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-variant=danger]):active{background:var(--control-danger-bgColor-active,#ffebe966)}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-variant=danger]):active .prc-ActionList-ItemLabel-81ohH,.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-variant=danger]):active .prc-ActionList-LeadingAction-hbWbh,.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-variant=danger]):active .prc-ActionList-LeadingVisual-NBr28{color:var(--control-danger-fgColor-hover,#d1242f)}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-variant=danger]):active [data-kbd-chord]{background-color:var(--bgColor-default,#fff);transition:none}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-active]){background:var(--control-transparent-bgColor-selected,#818b9826);outline:2px solid transparent}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-active]) .prc-ActionList-ItemLabel-81ohH{color:var(--control-fgColor-rest,#25292e);font-weight:var(--base-text-weight-semibold,600)}@media (hover:hover){.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-active]):hover{background-color:var(--control-transparent-bgColor-hover,#818b981a)}}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-active]) .prc-ActionList-ActionListSubContent-gKsFp:before,.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-active])+.prc-ActionList-ActionListItem-So4vC .prc-ActionList-ActionListSubContent-gKsFp:before{visibility:hidden}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-active]):after{background:var(--borderColor-accent-emphasis,#0969da);border-radius:var(--borderRadius-medium,.375rem);content:"";height:calc(100% - var(--base-size-8,.5rem));left:calc(var(--base-size-8,.5rem)*-1);position:absolute;top:var(--base-size-4,.25rem);width:var(--base-size-4,.25rem)}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-is-active-descendant]){background:var(--control-transparent-bgColor-selected,#818b9826);outline:2px solid transparent}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-is-active-descendant]):after{background:var(--borderColor-accent-emphasis,#0969da);border-radius:var(--borderRadius-medium,.375rem);content:"";height:calc(100% - var(--base-size-8,.5rem));left:calc(var(--base-size-8,.5rem)*-1);position:absolute;top:var(--base-size-4,.25rem);width:var(--base-size-4,.25rem)}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-inactive=true]) * :not([popover],.prc-ActionList-InactiveWarning-1Dszv){color:var(--fgColor-muted,#59636e)}@media (hover:hover){.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-inactive=true]):hover{background-color:transparent;cursor:not-allowed}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-inactive=true]):hover * :not([popover],.prc-ActionList-InactiveWarning-1Dszv){color:var(--fgColor-muted,#59636e)}}.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-inactive=true]):active{background:transparent}:is(.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-loading=true]),.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true])>[data-loading=true]) .prc-ActionList-Description-Z-EZJ,:is(.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-loading=true]),.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true])>[data-loading=true]) .prc-ActionList-ItemLabel-81ohH,:is(.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-loading=true]),.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true])>[data-loading=true]) .prc-ActionList-LeadingAction-hbWbh,:is(.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-loading=true]),.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true])>[data-loading=true]) .prc-ActionList-LeadingVisual-NBr28,:is(.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-loading=true]),.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true])>[data-loading=true]) .prc-ActionList-TrailingVisual-jwT9C,:is(.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):where([data-loading=true]),.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true])>[data-loading=true]) .prc-ActionList-VisualWrap-bdCsS{color:var(--fgColor-muted,#59636e)}@media (hover:hover){.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):hover .prc-ActionList-ActionListSubContent-gKsFp:before,.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):hover [data-description-variant=inline]:before,.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):hover+.prc-ActionList-ActionListItem-So4vC .prc-ActionList-ActionListSubContent-gKsFp:before,.prc-ActionList-ActionListItem-So4vC:not([data-is-disabled],[data-has-subitem=true]):hover+.prc-ActionList-ActionListItem-So4vC [data-description-variant=inline]:before{visibility:hidden}}.prc-ActionList-ActionListItem-So4vC[data-has-subitem=true]>.prc-ActionList-ActionListContent-KBb8-{z-index:1}@media (hover:hover){:is(.prc-ActionList-ActionListItem-So4vC[data-has-subitem=true]>.prc-ActionList-ActionListContent-KBb8-):hover{background-color:var(--control-transparent-bgColor-hover,#818b981a);cursor:pointer}}:is(.prc-ActionList-ActionListItem-So4vC[data-has-subitem=true]>.prc-ActionList-ActionListContent-KBb8-):active{background-color:var(--control-transparent-bgColor-active,#818b9826)}.prc-ActionList-ActionListItem-So4vC[data-has-subitem=true] .prc-ActionList-Spacer-4tR2m{display:block}:is(.prc-ActionList-ActionListItem-So4vC[aria-disabled=true],.prc-ActionList-ActionListItem-So4vC[data-is-disabled]) .prc-ActionList-ActionListContent-KBb8- *{color:var(--control-fgColor-disabled,#818b98)}@media (hover:hover){:is(:is(.prc-ActionList-ActionListItem-So4vC[aria-disabled=true],.prc-ActionList-ActionListItem-So4vC[data-is-disabled]) .prc-ActionList-ActionListContent-KBb8-):hover{background-color:transparent;cursor:not-allowed}}@media (hover:hover){:is(.prc-ActionList-ActionListItem-So4vC[aria-disabled=true],.prc-ActionList-ActionListItem-So4vC[data-is-disabled]):hover{background-color:transparent}}:is(.prc-ActionList-ActionListItem-So4vC[aria-disabled=true],.prc-ActionList-ActionListItem-So4vC[data-is-disabled]) .prc-ActionList-MultiSelectCheckbox-2OqxZ{background-color:var(--control-bgColor-disabled,#eff2f5);border-color:var(--control-borderColor-disabled,#818b981a)}:is([aria-checked=true]:is(.prc-ActionList-ActionListItem-So4vC[aria-disabled=true],.prc-ActionList-ActionListItem-So4vC[data-is-disabled]),[aria-selected=true]:is(.prc-ActionList-ActionListItem-So4vC[aria-disabled=true],.prc-ActionList-ActionListItem-So4vC[data-is-disabled])) .prc-ActionList-MultiSelectCheckbox-2OqxZ{background-color:var(--control-checked-bgColor-disabled,#818b98);border-color:var(--control-checked-bgColor-disabled,#818b98)}:is(:is([aria-checked=true]:is(.prc-ActionList-ActionListItem-So4vC[aria-disabled=true],.prc-ActionList-ActionListItem-So4vC[data-is-disabled]),[aria-selected=true]:is(.prc-ActionList-ActionListItem-So4vC[aria-disabled=true],.prc-ActionList-ActionListItem-So4vC[data-is-disabled])) .prc-ActionList-MultiSelectCheckbox-2OqxZ):before{background-color:var(--control-checked-fgColor-disabled,#fff)}.prc-ActionList-ActionListItem-So4vC[data-trailing-action-loading]:not([data-is-disabled]) .prc-ActionList-Description-Z-EZJ,.prc-ActionList-ActionListItem-So4vC[data-trailing-action-loading]:not([data-is-disabled]) .prc-ActionList-ItemLabel-81ohH{color:var(--fgColor-default,#1f2328)}.prc-ActionList-ActionListItem-So4vC[aria-hidden]+.prc-ActionList-Divider-taVfb{display:none}.prc-ActionList-ActionListItem-So4vC .prc-ActionList-MultiSelectCheckbox-2OqxZ{background-color:var(--bgColor-default,#fff);border:var(--borderWidth-thin,.0625rem) solid var(--control-borderColor-emphasis,#818b98);border-radius:var(--borderRadius-small,.1875rem);cursor:pointer;display:grid;height:var(--base-size-16,1rem);margin:0;place-content:center;position:relative;transition:background-color,border-color 80ms cubic-bezier(.33,1,.68,1);width:var(--base-size-16,1rem)}:is(.prc-ActionList-ActionListItem-So4vC .prc-ActionList-MultiSelectCheckbox-2OqxZ):before{animation:prc-ActionList-checkmarkOut-GbMf4 80ms cubic-bezier(.65,0,.35,1);background-color:var(--control-checked-fgColor-rest,#fff);clip-path:inset(var(--base-size-16,1rem) 0 0 0);content:"";height:var(--base-size-16,1rem);mask-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMiIgaGVpZ2h0PSI5IiBmaWxsPSJub25lIiB2aWV3Qm94PSIwIDAgMTIgOSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTEuNzguMjJhLjc1Ljc1IDAgMCAxIDAgMS4wNjFMNC41MiA4LjU0MWEuNzUuNzUgMCAwIDEtMS4wNjIgMEwuMjAyIDUuMjg1YS43NS43NSAwIDAgMSAxLjA2MS0xLjA2MWwyLjcyNSAyLjcyM0wxMC43MTguMjJhLjc1Ljc1IDAgMCAxIDEuMDYyIDAiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==");mask-position:center;mask-repeat:no-repeat;mask-size:75%;transition:visibility 0s linear .23s;width:var(--base-size-16,1rem)}@media (forced-colors:active){.prc-ActionList-ActionListItem-So4vC .prc-ActionList-MultiSelectCheckbox-2OqxZ{border-width:var(--borderWidth-thin,.0625rem)}}:is(.prc-ActionList-ActionListItem-So4vC[aria-checked=true],.prc-ActionList-ActionListItem-So4vC[aria-selected=true]) .prc-ActionList-MultiSelectCheckbox-2OqxZ{background-color:var(--control-checked-bgColor-rest,#0969da);border-color:var(--control-checked-borderColor-rest,#0969da);transition:background-color,border-color 80ms cubic-bezier(.32,0,.67,0) 0s}:is(:is(.prc-ActionList-ActionListItem-So4vC[aria-checked=true],.prc-ActionList-ActionListItem-So4vC[aria-selected=true]) .prc-ActionList-MultiSelectCheckbox-2OqxZ):before{animation:prc-ActionList-checkmarkIn-gjsPG 80ms cubic-bezier(.65,0,.35,1) 80ms forwards;transition:visibility 0s linear 0s;visibility:visible}@media (forced-colors:active){:is(.prc-ActionList-ActionListItem-So4vC[aria-checked=true],.prc-ActionList-ActionListItem-So4vC[aria-selected=true]) .prc-ActionList-MultiSelectCheckbox-2OqxZ{border-width:8px}}:is(.prc-ActionList-ActionListItem-So4vC[aria-checked=true],.prc-ActionList-ActionListItem-So4vC[aria-selected=true]) .prc-ActionList-SingleSelectCheckmark-zMd8d{visibility:visible}:is(:is(.prc-ActionList-ActionListItem-So4vC[aria-checked=false],.prc-ActionList-ActionListItem-So4vC[aria-selected=false]) .prc-ActionList-MultiSelectCheckbox-2OqxZ):before{visibility:hidden}:is(.prc-ActionList-ActionListItem-So4vC[aria-checked=false],.prc-ActionList-ActionListItem-So4vC[aria-selected=false]) .prc-ActionList-SingleSelectCheckmark-zMd8d{visibility:hidden}.prc-ActionList-SingleSelectCheckmark-zMd8d{visibility:hidden}.prc-ActionList-ActionListContent-KBb8-{--subitem-depth:0px;background-color:transparent;border:none;border-radius:var(--borderRadius-medium,.375rem);color:var(--control-fgColor-rest,#25292e);display:grid;padding-block:var(--control-medium-paddingBlock,.375rem);padding-inline:var(--control-medium-paddingInline-condensed,.5rem);position:relative;text-align:left;touch-action:manipulation;transition:background 33.333ms linear;-webkit-user-select:none;user-select:none;width:100%;-webkit-tap-highlight-color:transparent;align-items:start;grid-template-areas:"spacer leadingAction leadingVisual content";grid-template-columns:min-content min-content min-content minmax(0,auto);grid-template-rows:min-content}.prc-ActionList-ActionListContent-KBb8->:not(:last-child,.prc-ActionList-Spacer-4tR2m){margin-right:var(--control-medium-gap,.5rem)}.prc-ActionList-ActionListContent-KBb8-:hover{cursor:pointer;-webkit-text-decoration:none;text-decoration:none}.prc-ActionList-ActionListContent-KBb8-[data-size=large]{padding-block:var(--control-large-paddingBlock,.625rem)}.prc-ActionList-ActionListContent-KBb8-[aria-expanded=true] .prc-ActionList-ExpandIcon-J4OqB{transform:scaleY(-1)}.prc-ActionList-ActionListContent-KBb8-[aria-expanded=false] .prc-ActionList-ExpandIcon-J4OqB{transform:scaleY(1)}.prc-ActionList-ActionListContent-KBb8-[aria-expanded=false]~.prc-ActionList-SubGroup-5Zje2{display:none}.prc-ActionList-ActionListContent-KBb8-[aria-expanded=false]:has(~.prc-ActionList-SubGroup-5Zje2 [data-active=true]){background:var(--control-transparent-bgColor-selected,#818b9826)}.prc-ActionList-ActionListContent-KBb8-[aria-expanded=false]:has(~.prc-ActionList-SubGroup-5Zje2 [data-active=true]) .prc-ActionList-ItemLabel-81ohH{font-weight:var(--base-text-weight-semibold,600)}.prc-ActionList-ActionListContent-KBb8-[aria-expanded=false]:has(~.prc-ActionList-SubGroup-5Zje2 [data-active=true]) .prc-ActionList-ActionListSubContent-gKsFp:before,.prc-ActionList-ActionListContent-KBb8-[aria-expanded=false]:has(~.prc-ActionList-SubGroup-5Zje2 [data-active=true])+.prc-ActionList-ActionListItem-So4vC .prc-ActionList-ActionListSubContent-gKsFp:before{visibility:hidden}.prc-ActionList-ActionListContent-KBb8-[aria-expanded=false]:has(~.prc-ActionList-SubGroup-5Zje2 [data-active=true]):after{background:var(--borderColor-accent-emphasis,#0969da);border-radius:var(--borderRadius-medium,.375rem);content:"";height:calc(100% - var(--base-size-8,.5rem));left:calc(var(--base-size-8,.5rem)*-1);position:absolute;top:var(--base-size-4,.25rem);width:var(--base-size-4,.25rem)}.prc-ActionList-ActionListSubContent-gKsFp{align-items:start;display:grid;grid-area:content;grid-template-areas:"label trailingVisual trailingAction";grid-template-columns:minmax(0,auto) min-content min-content;grid-template-rows:min-content;position:relative;width:100%}.prc-ActionList-ActionListSubContent-gKsFp>:not(:last-child){margin-right:var(--control-medium-gap,.5rem)}.prc-ActionList-Spacer-4tR2m{display:none;grid-area:spacer;width:max(0px,var(--subitem-depth) * 8px)}.prc-ActionList-LeadingAction-hbWbh{grid-area:leadingAction}.prc-ActionList-LeadingVisual-NBr28{grid-area:leadingVisual}.prc-ActionList-TrailingVisual-jwT9C{font-size:var(--text-body-size-medium,.875rem);grid-area:trailingVisual}.prc-ActionList-TrailingAction-dMRxe{grid-area:trailingAction}.prc-ActionList-TrailingAction-dMRxe>[data-loading-wrapper]{height:100%}.prc-ActionList-ItemDescriptionWrap-ujC8S{display:flex;flex-direction:column;gap:var(--base-size-4,.25rem);grid-area:label}.prc-ActionList-ItemDescriptionWrap-ujC8S .prc-ActionList-ItemLabel-81ohH{font-weight:var(--base-text-weight-semibold,600);word-break:break-word}.prc-ActionList-ItemDescriptionWrap-ujC8S:where([data-description-variant=inline]){align-items:baseline;flex-direction:row;gap:var(--base-size-8,.5rem);position:relative;word-break:normal}.prc-ActionList-ItemDescriptionWrap-ujC8S:where([data-description-variant=inline]) .prc-ActionList-ItemLabel-81ohH{word-break:normal}.prc-ActionList-ItemDescriptionWrap-ujC8S:where([data-description-variant=inline]):has([data-truncate=true]) .prc-ActionList-ItemLabel-81ohH{flex:1 0 auto}.prc-ActionList-ItemDescriptionWrap-ujC8S:where([data-description-variant=inline]) .prc-ActionList-Description-Z-EZJ{line-height:16px}.prc-ActionList-Description-Z-EZJ{font-size:var(--text-body-size-small,.75rem);font-weight:var(--base-text-weight-normal,400);line-height:16px}.prc-ActionList-Description-Z-EZJ,.prc-ActionList-VisualWrap-bdCsS{color:var(--fgColor-muted,#59636e)}.prc-ActionList-VisualWrap-bdCsS{display:flex;line-height:20px;min-height:var(--base-size-20,1.25rem);min-width:max-content;pointer-events:none;fill:var(--fgColor-muted,#59636e);align-items:center}.prc-ActionList-ItemLabel-81ohH{color:var(--fgColor-default,#1f2328);font-size:var(--text-body-size-medium,.875rem);font-weight:var(--base-text-weight-normal,400);grid-area:label;line-height:20px;position:relative;word-break:break-word}.prc-ActionList-SubGroup-5Zje2 .prc-ActionList-ItemLabel-81ohH{font-size:var(--text-body-size-small,.75rem)}.prc-ActionList-SubGroup-5Zje2 .prc-ActionList-ActionListItem-So4vC{margin-inline:0}.prc-ActionList-TrailingActionButton-UUAk6{border-bottom-left-radius:0;border-top-left-radius:0;height:100%}.prc-ActionList-TrailingActionButton-UUAk6[data-loading=true][data-has-label=true]{padding:0 0 0 calc(var(--base-size-12,.75rem)*2)}.prc-ActionList-TrailingActionButton-UUAk6[data-loading=true][data-has-label=true] [data-component=loadingSpinner]{align-items:center;display:flex;height:var(--control-medium-size,2rem);justify-content:center;place-self:end;width:var(--control-medium-size,2rem)}.prc-ActionList-InactiveButtonWrap-Ia-xM[data-position=trailing]{grid-area:trailingVisual}.prc-ActionList-InactiveButtonWrap-Ia-xM[data-position=leading]{grid-area:leadingVisual}.prc-ActionList-Divider-taVfb{background:var(--borderColor-muted,#d1d9e0b3);border:0;display:block;height:var(--borderWidth-thin,.0625rem);list-style:none;margin-block-end:var(--base-size-8,.5rem);margin-block-start:calc(var(--base-size-8,.5rem) - var(--borderWidth-thin,.0625rem));padding:0}.prc-ActionList-InactiveButtonReset-uK4-x{background:none;border:none;color:inherit;cursor:pointer;display:flex;font:inherit;padding:0}.prc-ActionList-InactiveWarning-1Dszv{color:var(--fgColor-attention,#9a6700);font-size:var(--text-body-size-small,.75rem);grid-row:2/2;line-height:16px}@keyframes prc-ActionList-checkmarkIn-gjsPG{0%{clip-path:inset(var(--base-size-16,1rem) 0 0 0)}to{clip-path:inset(0 0 0 0)}}@keyframes prc-ActionList-checkmarkOut-GbMf4{0%{clip-path:inset(0 0 0 0)}to{clip-path:inset(var(--base-size-16,1rem) 0 0 0)}}
|
|
2
|
+
/*# sourceMappingURL=ActionList-65f7daac.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ActionList/ActionList.module.css.js","../../postcss-preset-primer/src/mixins/focusOutline.css","../../postcss-preset-primer/src/mixins/activeIndicatorLine.css"],"names":[],"mappings":"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","file":"ActionList-65f7daac.css","sourcesContent":["/* stylelint-disable max-nesting-depth, selector-max-specificity */\n\n.ActionList {\n padding: 0;\n margin: 0;\n list-style: none;\n\n ul {\n padding: 0;\n margin: 0;\n list-style: none;\n }\n\n &:where([data-variant='inset']) {\n padding-block: var(--base-size-8);\n }\n\n &:where([data-variant='inset'], [data-variant='horizontal-inset']) {\n /* this is only to match default experience */\n & .ActionListItem {\n margin-inline: var(--base-size-8);\n }\n }\n\n &:where([data-variant='horizontal-inset']) {\n padding-bottom: var(--base-size-8);\n }\n\n /* add a small gap between sibling items for readability */\n &:where([data-item-gap]) {\n & .ActionListItem + .ActionListItem {\n margin-block-start: var(--base-size-2);\n }\n\n /* also separate a parent item's row from the first item of its expanded sub-nav */\n & .SubGroup {\n margin-block-start: var(--base-size-2);\n }\n }\n\n &:where([data-dividers='true']) {\n /* place dividers on the wrapper that excludes leading visuals/actions */\n & .ActionListSubContent::before {\n position: absolute;\n\n /* use this top size after FF removed */\n\n /* top: calc(-1 * var(--control-medium-paddingBlock)); */\n /* stylelint-disable-next-line primer/spacing */\n top: -7px;\n display: block;\n width: 100%;\n height: 1px;\n content: '';\n /* stylelint-disable-next-line primer/colors */\n background: var(--borderColor-muted);\n }\n\n /* if inline description, move pseudo divider to description wrapper */\n & [data-description-variant='inline'] {\n &::before {\n position: absolute;\n\n /* use this top size after FF removed */\n\n /* top: calc(-1 * var(--control-medium-paddingBlock)); */\n /* stylelint-disable-next-line primer/spacing */\n top: -7px;\n display: block;\n width: 100%;\n height: var(--borderWidth-thin);\n content: '';\n /* stylelint-disable-next-line primer/colors */\n background: var(--borderColor-muted);\n }\n\n /* remove the default divider */\n & .ActionListSubContent::before {\n content: unset;\n }\n }\n\n /* hide if item is first of type with label::before, or is the first item after a sectionDivider */\n .ActionListItem:first-of-type .ActionListSubContent::before,\n .Divider + .ActionListItem .ActionListSubContent::before {\n visibility: hidden;\n }\n\n /* hide if item is first of type with label::before, or is the first item after a sectionDivider */\n .ActionListItem:first-of-type [data-description-variant='inline']::before,\n .Divider + .ActionListItem [data-description-variant='inline']::before {\n visibility: hidden;\n }\n }\n\n /* Make sure that the first visible item isn't a divider */\n & .Divider:first-child {\n display: none;\n }\n\n /* if a list has a mix of items with and without descriptions, reset the label font-weight to normal */\n &[data-mixed-descriptions='true'] {\n & .ItemLabel {\n font-weight: var(--base-text-weight-normal);\n }\n }\n}\n\n/* ActionListItem is a li that handles visual state, while ActionListItemContent controls actual state via button or link */\n\n.ActionListItem {\n position: relative;\n list-style: none;\n background-color: var(--control-transparent-bgColor-rest);\n border-radius: var(--borderRadius-medium);\n\n /* apply flex if trailing action exists as an immediate child */\n &[data-has-trailing-action] {\n display: flex;\n flex-wrap: nowrap;\n }\n\n /* state */\n\n @media (forced-colors: active) {\n :focus,\n &:focus-visible,\n /* stylelint-disable-next-line selector-no-qualifying-type */\n >a.focus-visible,\n &[data-is-active-descendant] {\n /* Support for Windows high contrast https://sarahmhigley.com/writing/whcm-quick-tips */\n outline: solid 1px transparent !important;\n }\n }\n\n &:not([data-is-disabled], [data-has-subitem='true']) {\n @media (hover: hover) {\n &:hover,\n &:active {\n cursor: pointer;\n }\n\n &:hover {\n background-color: var(--control-transparent-bgColor-hover);\n\n &:not([data-active], :focus-visible) {\n /* Support for \"Windows high contrast mode\" https:sarahmhigley.com/writing/whcm-quick-tips/ */\n outline: solid var(--borderWidth-thin) transparent;\n outline-offset: calc(-1 * var(--borderWidth-thin));\n box-shadow: var(--boxShadow-thin) var(--control-transparent-borderColor-active);\n }\n }\n }\n\n &:active {\n background-color: var(--control-transparent-bgColor-active);\n\n &:not([data-active]) {\n /* Support for \"Windows high contrast mode\" https:sarahmhigley.com/writing/whcm-quick-tips/ */\n outline: solid var(--borderWidth-thin) transparent;\n outline-offset: calc(-1 * var(--borderWidth-thin));\n box-shadow: var(--boxShadow-thin) var(--control-transparent-borderColor-active);\n }\n }\n\n &:focus-visible {\n @mixin focusOutline 0;\n\n & .ActionListSubContent::before,\n & + .ActionListItem .ActionListSubContent::before {\n visibility: hidden;\n }\n }\n\n /* danger */\n &:where([data-variant='danger']) {\n & .LeadingAction,\n .LeadingVisual,\n .ItemLabel {\n color: var(--control-danger-fgColor-rest);\n }\n\n @media (hover: hover) {\n &:hover {\n background: var(--control-danger-bgColor-hover);\n\n & .LeadingAction,\n .LeadingVisual,\n .ItemLabel {\n color: var(--control-danger-fgColor-hover);\n }\n\n & [data-kbd-chord] {\n background-color: var(--bgColor-default);\n transition: none;\n }\n }\n }\n\n &:active {\n background: var(--control-danger-bgColor-active);\n\n & .LeadingAction,\n .LeadingVisual,\n .ItemLabel {\n color: var(--control-danger-fgColor-hover);\n }\n\n & [data-kbd-chord] {\n background-color: var(--bgColor-default);\n transition: none;\n }\n }\n }\n\n /* active state [aria-current] */\n &:where([data-active]) {\n background: var(--control-transparent-bgColor-selected);\n\n /* provides a visual indication of the current item for Windows high-contrast mode */\n outline: 2px solid transparent;\n\n & .ItemLabel {\n font-weight: var(--base-text-weight-semibold);\n color: var(--control-fgColor-rest);\n }\n\n @media (hover: hover) {\n &:hover {\n background-color: var(--control-transparent-bgColor-hover);\n }\n }\n\n /* hide dividers if showDividers is true and item is active */\n\n & .ActionListSubContent::before,\n & + .ActionListItem .ActionListSubContent::before {\n visibility: hidden;\n }\n\n /* blue accent line */\n &::after {\n @mixin activeIndicatorLine;\n }\n }\n\n &:where([data-is-active-descendant]) {\n background: var(--control-transparent-bgColor-selected);\n\n /* provides a visual indication of the current item for Windows high-contrast mode */\n outline: 2px solid transparent;\n\n /* hide dividers if showDividers is true and item is active */\n\n /* add back in after FF ship */\n\n /* & .ActionListSubContent::before,\n & + .ActionListItem .ActionListSubContent::before {\n visibility: hidden;\n } */\n\n /* blue accent line */\n &::after {\n @mixin activeIndicatorLine;\n }\n }\n\n /* inactive */\n &:where([data-inactive='true']) {\n /* ignore tooltip */\n & * :not([popover], .InactiveWarning) {\n color: var(--fgColor-muted);\n }\n\n @media (hover: hover) {\n &:hover {\n cursor: not-allowed;\n background-color: transparent;\n\n & * :not([popover], .InactiveWarning) {\n color: var(--fgColor-muted);\n }\n }\n }\n\n &:active {\n background: transparent;\n }\n }\n\n &:where([data-loading='true']),\n & > [data-loading='true'] {\n & .ItemLabel,\n & .Description,\n & .LeadingVisual,\n & .TrailingVisual,\n & .LeadingAction,\n & .VisualWrap {\n color: var(--fgColor-muted);\n }\n }\n\n /* hide dividers */\n @media (hover: hover) {\n &:hover {\n & .ActionListSubContent::before,\n & + .ActionListItem .ActionListSubContent::before {\n visibility: hidden;\n }\n\n & [data-description-variant='inline']::before,\n & + .ActionListItem [data-description-variant='inline']::before {\n visibility: hidden;\n }\n }\n }\n }\n\n /* if item has subitem, move hover styles to ActionListContent */\n &[data-has-subitem='true'] {\n /* first child */\n & > .ActionListContent {\n z-index: 1;\n\n @media (hover: hover) {\n &:hover {\n cursor: pointer;\n background-color: var(--control-transparent-bgColor-hover);\n }\n }\n\n &:active {\n background-color: var(--control-transparent-bgColor-active);\n }\n }\n\n & .Spacer {\n display: block;\n }\n }\n\n /* disabled */\n\n &[aria-disabled='true'],\n &[data-is-disabled] {\n & .ActionListContent * {\n color: var(--control-fgColor-disabled);\n }\n\n & .ActionListContent {\n @media (hover: hover) {\n &:hover {\n cursor: not-allowed;\n background-color: transparent;\n }\n }\n }\n\n @media (hover: hover) {\n &:hover {\n background-color: transparent;\n }\n }\n\n & .MultiSelectCheckbox {\n background-color: var(--control-bgColor-disabled);\n border-color: var(--control-borderColor-disabled);\n }\n\n &[aria-checked='true'],\n &[aria-selected='true'] {\n & .MultiSelectCheckbox {\n background-color: var(--control-checked-bgColor-disabled);\n /* stylelint-disable-next-line primer/colors */\n border-color: var(--control-checked-bgColor-disabled);\n\n &::before {\n /* stylelint-disable-next-line primer/colors */\n background-color: var(--control-checked-fgColor-disabled);\n }\n }\n }\n }\n\n /* When TrailingAction is in loading state, keep labels and descriptions accessible */\n &[data-trailing-action-loading]:not([data-is-disabled]) {\n /* Ensure labels and descriptions maintain accessibility contrast */\n & .ItemLabel {\n color: var(--fgColor-default);\n }\n\n & .Description {\n color: var(--fgColor-default);\n }\n }\n\n /* Make sure that the first visible item isn't a divider */\n &[aria-hidden] + .Divider {\n display: none;\n }\n\n /*\n * checkbox item [aria-checked]\n * listbox [aria-selected]\n */\n\n & .MultiSelectCheckbox {\n position: relative;\n display: grid;\n width: var(--base-size-16);\n height: var(--base-size-16);\n margin: 0;\n cursor: pointer;\n background-color: var(--bgColor-default);\n border: var(--borderWidth-thin) solid var(--control-borderColor-emphasis);\n border-radius: var(--borderRadius-small);\n transition:\n background-color,\n border-color 80ms cubic-bezier(0.33, 1, 0.68, 1);\n /* checked -> unchecked - add 120ms delay to fully see animation-out */\n\n place-content: center;\n\n &::before {\n width: var(--base-size-16);\n height: var(--base-size-16);\n content: '';\n /* stylelint-disable-next-line primer/colors */\n background-color: var(--control-checked-fgColor-rest);\n transition: visibility 0s linear 230ms;\n clip-path: inset(var(--base-size-16) 0 0 0);\n\n /* octicon checkmark image */\n mask-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iOSIgdmlld0JveD0iMCAwIDEyIDkiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTEuNzgwMyAwLjIxOTYyNUMxMS45MjEgMC4zNjA0MjcgMTIgMC41NTEzMDUgMTIgMC43NTAzMTNDMTIgMC45NDkzMjEgMTEuOTIxIDEuMTQwMTkgMTEuNzgwMyAxLjI4MUw0LjUxODYgOC41NDA0MkM0LjM3Nzc1IDguNjgxIDQuMTg2ODIgOC43NiAzLjk4Nzc0IDguNzZDMy43ODg2NyA4Ljc2IDMuNTk3NzMgOC42ODEgMy40NTY4OSA4LjU0MDQyTDAuMjAxNjIyIDUuMjg2MkMwLjA2ODkyNzcgNS4xNDM4MyAtMC4wMDMzMDkwNSA0Ljk1NTU1IDAuMDAwMTE2NDkzIDQuNzYwOThDMC4wMDM1NTIwNSA0LjU2NjQzIDAuMDgyMzg5NCA0LjM4MDgxIDAuMjIwMDMyIDQuMjQzMjFDMC4zNTc2NjUgNC4xMDU2MiAwLjU0MzM1NSA0LjAyNjgxIDAuNzM3OTcgNC4wMjMzOEMwLjkzMjU4NCA0LjAxOTk0IDEuMTIwOTMgNC4wOTIxNyAxLjI2MzM0IDQuMjI0ODJMMy45ODc3NCA2Ljk0ODM1TDEwLjcxODYgMC4yMTk2MjVDMTAuODU5NSAwLjA3ODk5MjMgMTEuMDUwNCAwIDExLjI0OTUgMEMxMS40NDg1IDAgMTEuNjM5NSAwLjA3ODk5MjMgMTEuNzgwMyAwLjIxOTYyNVoiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=');\n mask-size: 75%;\n mask-repeat: no-repeat;\n mask-position: center;\n animation: checkmarkOut 80ms cubic-bezier(0.65, 0, 0.35, 1);\n /* forwards; slightly snappier animation out */\n }\n\n @media (forced-colors: active) {\n /* Support for Windows high contrast https://sarahmhigley.com/writing/whcm-quick-tips */\n\n /* background-color will be overriden but border-width is a workaround */\n border-width: var(--borderWidth-thin);\n }\n }\n\n &[aria-checked='true'],\n &[aria-selected='true'] {\n & .MultiSelectCheckbox {\n background-color: var(--control-checked-bgColor-rest);\n border-color: var(--control-checked-borderColor-rest);\n transition:\n background-color,\n border-color 80ms cubic-bezier(0.32, 0, 0.67, 0) 0ms;\n /* unchecked -> checked */\n\n &::before {\n visibility: visible;\n transition: visibility 0s linear 0s;\n animation: checkmarkIn 80ms cubic-bezier(0.65, 0, 0.35, 1) forwards 80ms;\n }\n\n @media (forced-colors: active) {\n /* Support for Windows high contrast https://sarahmhigley.com/writing/whcm-quick-tips\n background-color will be overriden but border-width is a workaround */\n /* stylelint-disable-next-line primer/borders */\n border-width: 8px;\n }\n }\n\n & .SingleSelectCheckmark {\n visibility: visible;\n }\n }\n\n &[aria-checked='false'],\n &[aria-selected='false'] {\n & .MultiSelectCheckbox {\n &::before {\n visibility: hidden;\n }\n }\n\n & .SingleSelectCheckmark {\n visibility: hidden;\n }\n }\n}\n\n/* hide by default to support inactive state where role cannot be menuitemradio or menuitemcheckbox */\n.SingleSelectCheckmark {\n visibility: hidden;\n}\n\n/* button or a tag */\n\n/* [ [spacer] [leadingAction] [leadingVisual] [content] ] */\n.ActionListContent {\n --subitem-depth: 0px;\n\n position: relative;\n display: grid;\n width: 100%;\n color: var(--control-fgColor-rest);\n text-align: left;\n user-select: none;\n background-color: transparent;\n border: none;\n border-radius: var(--borderRadius-medium);\n transition: background 33.333ms linear;\n /* stylelint-disable-next-line primer/spacing */\n padding-block: var(--control-medium-paddingBlock);\n /* stylelint-disable-next-line primer/spacing */\n padding-inline: var(--control-medium-paddingInline-condensed);\n touch-action: manipulation;\n -webkit-tap-highlight-color: transparent;\n grid-template-rows: min-content;\n grid-template-areas: 'spacer leadingAction leadingVisual content';\n grid-template-columns: min-content min-content min-content minmax(0, auto);\n align-items: start;\n\n /* column-gap persists with empty grid-areas, margin applies only when children exist */\n & > :not(:last-child, .Spacer) {\n /* stylelint-disable-next-line primer/spacing */\n margin-right: var(--control-medium-gap);\n }\n\n &:hover {\n text-decoration: none;\n cursor: pointer;\n }\n\n /* large */\n\n &[data-size='large'] {\n /* stylelint-disable-next-line primer/spacing */\n padding-block: var(--control-large-paddingBlock);\n }\n\n /* collapsible item [aria-expanded] */\n\n &[aria-expanded='true'] {\n & .ExpandIcon {\n transform: scaleY(-1);\n }\n }\n\n &[aria-expanded='false'] {\n & .ExpandIcon {\n transform: scaleY(1);\n }\n\n & ~ .SubGroup {\n display: none;\n }\n\n /* show active indicator on parent collapse if child is active */\n /* stylelint-disable-next-line selector-pseudo-class-disallowed-list -- scoped to CSS Module, audited (github/github-ui#17224) */\n &:has(~ .SubGroup [data-active='true']) {\n background: var(--control-transparent-bgColor-selected);\n\n & .ItemLabel {\n font-weight: var(--base-text-weight-semibold);\n }\n\n & .ActionListSubContent::before,\n & + .ActionListItem .ActionListSubContent::before {\n visibility: hidden;\n }\n\n /* blue accent line */\n &::after {\n @mixin activeIndicatorLine;\n }\n }\n }\n}\n\n/* [ [content] [trailingVisual] [trailingAction] ] */\n.ActionListSubContent {\n grid-area: content;\n position: relative;\n display: grid;\n width: 100%;\n grid-template-rows: min-content;\n grid-template-areas: 'label trailingVisual trailingAction';\n grid-template-columns: minmax(0, auto) min-content min-content;\n align-items: start;\n\n /* column-gap persists with empty grid-areas, margin applies only when children exist */\n & > :not(:last-child) {\n /* stylelint-disable-next-line primer/spacing */\n margin-right: var(--control-medium-gap);\n }\n}\n\n/* place children on grid */\n\n/* spacer used to create depth for nested lists */\n\n.Spacer {\n display: none;\n width: max(0px, var(--subitem-depth) * 8px);\n grid-area: spacer;\n}\n\n.LeadingAction {\n grid-area: leadingAction;\n}\n\n.LeadingVisual {\n grid-area: leadingVisual;\n}\n\n.TrailingVisual {\n grid-area: trailingVisual;\n font-size: var(--text-body-size-medium);\n}\n\n.TrailingAction {\n grid-area: trailingAction;\n\n /* if child is loading button */\n & > *[data-loading-wrapper] {\n height: 100%;\n }\n}\n\n/* wrapper span\ndefault block */\n.ItemDescriptionWrap {\n grid-area: label;\n display: flex;\n flex-direction: column;\n gap: var(--base-size-4);\n\n & .ItemLabel {\n font-weight: var(--base-text-weight-semibold);\n /* stylelint-disable-next-line declaration-property-value-keyword-no-deprecated */\n word-break: break-word;\n }\n\n /* inline */\n &:where([data-description-variant='inline']) {\n position: relative;\n word-break: normal;\n flex-direction: row;\n align-items: baseline;\n gap: var(--base-size-8);\n\n & .ItemLabel {\n word-break: normal;\n }\n\n /* stylelint-disable-next-line selector-pseudo-class-disallowed-list -- scoped to CSS Module, audited (github/github-ui#17224) */\n &:has([data-truncate='true']) {\n & .ItemLabel {\n flex: 1 0 auto;\n }\n }\n\n & .Description {\n /* stylelint-disable-next-line primer/typography */\n line-height: 16px;\n }\n }\n}\n\n/* description */\n.Description {\n font-size: var(--text-body-size-small);\n font-weight: var(--base-text-weight-normal);\n\n /* line-height: var(--text-caption-lineHeight); */\n\n /* remove after FF ships */\n /* stylelint-disable-next-line primer/typography */\n line-height: 16px;\n color: var(--fgColor-muted);\n}\n\n/* helper for grid alignment with multi-line content\nspan wrapping svg or text */\n.VisualWrap {\n display: flex;\n min-width: max-content;\n min-height: var(--base-size-20);\n /* stylelint-disable-next-line primer/typography */\n line-height: 20px;\n /* temporary until we fix line-height rounding in primitives */\n color: var(--fgColor-muted);\n pointer-events: none;\n fill: var(--fgColor-muted);\n align-items: center;\n}\n\n/* text */\n.ItemLabel {\n position: relative;\n font-size: var(--text-body-size-medium);\n font-weight: var(--base-text-weight-normal);\n /* stylelint-disable-next-line primer/typography */\n line-height: 20px;\n /* temporary until we fix line-height rounding in primitives */\n color: var(--fgColor-default);\n grid-area: label;\n /* stylelint-disable-next-line declaration-property-value-keyword-no-deprecated */\n word-break: break-word;\n}\n\n.SubGroup {\n & .ItemLabel {\n font-size: var(--text-body-size-small);\n }\n\n & .ActionListItem {\n margin-inline: 0;\n }\n}\n\n/* trailing action icon button */\n\n.TrailingActionButton {\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n height: 100%;\n\n /* Preserve width consistency when loading state is active for text buttons only */\n &[data-loading='true'][data-has-label='true'] {\n /* Double the left padding to compensate for missing right padding */\n padding: 0 0 0 calc(var(--base-size-12) * 2);\n\n /* Position spinner at the end to align with IconButton */\n & [data-component='loadingSpinner'] {\n place-self: end;\n /* Match the IconButton spinner size */\n width: var(--control-medium-size, 2rem);\n height: var(--control-medium-size, 2rem);\n /* Ensure spinner is properly centered */\n display: flex;\n align-items: center;\n justify-content: center;\n }\n }\n}\n\n.InactiveButtonWrap {\n &[data-position='trailing'] {\n grid-area: trailingVisual;\n }\n\n &[data-position='leading'] {\n grid-area: leadingVisual;\n }\n}\n\n.Divider {\n display: block;\n height: var(--borderWidth-thin);\n padding: 0;\n /* stylelint-disable-next-line primer/spacing */\n margin-block-start: calc(var(--base-size-8) - var(--borderWidth-thin));\n margin-block-end: var(--base-size-8);\n list-style: none;\n /* stylelint-disable-next-line primer/colors */\n background: var(--borderColor-muted);\n border: 0;\n}\n\n.InactiveButtonReset {\n display: flex;\n padding: 0;\n font: inherit;\n color: inherit;\n cursor: pointer;\n background: none;\n border: none;\n}\n\n.InactiveWarning {\n font-size: var(--text-body-size-small);\n\n /* line-height: var(--text-caption-lineHeight); */\n\n /* use variable when FF removed */\n /* stylelint-disable-next-line primer/typography */\n line-height: 16px;\n color: var(--fgColor-attention);\n grid-row: 2/2;\n}\n\n@keyframes checkmarkIn {\n from {\n clip-path: inset(var(--base-size-16) 0 0 0);\n }\n\n to {\n clip-path: inset(0 0 0 0);\n }\n}\n\n@keyframes checkmarkOut {\n from {\n clip-path: inset(0 0 0 0);\n }\n\n to {\n clip-path: inset(var(--base-size-16) 0 0 0);\n }\n}\n","@define-mixin focusOutline $outlineOffset: -2px, $outlineColor: var(--focus-outline-color, var(--focus-outlineColor)) {\n outline: 2px solid $outlineColor;\n outline-offset: $outlineOffset;\n box-shadow: none;\n}\n","@define-mixin activeIndicatorLine {\n position: absolute;\n top: var(--base-size-4);\n left: calc(-1 * var(--base-size-8));\n width: var(--base-size-4);\n height: calc(100% - var(--base-size-8));\n content: '';\n /* stylelint-disable-next-line primer/colors */\n background: var(--borderColor-accent-emphasis);\n border-radius: var(--borderRadius-medium);\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import './ActionList-
|
|
1
|
+
import './ActionList-65f7daac.css';
|
|
2
2
|
|
|
3
|
-
var classes = {"ActionList":"prc-ActionList-ActionList-rPFF2","ActionListItem":"prc-ActionList-ActionListItem-So4vC","ActionListSubContent":"prc-ActionList-ActionListSubContent-gKsFp","Divider":"prc-ActionList-Divider-taVfb","ItemLabel":"prc-ActionList-ItemLabel-81ohH","focus-visible":"prc-ActionList-focus-visible-OJCTY","LeadingAction":"prc-ActionList-LeadingAction-hbWbh","LeadingVisual":"prc-ActionList-LeadingVisual-NBr28","InactiveWarning":"prc-ActionList-InactiveWarning-1Dszv","Description":"prc-ActionList-Description-Z-EZJ","TrailingVisual":"prc-ActionList-TrailingVisual-jwT9C","VisualWrap":"prc-ActionList-VisualWrap-bdCsS","ActionListContent":"prc-ActionList-ActionListContent-KBb8-","Spacer":"prc-ActionList-Spacer-4tR2m","MultiSelectCheckbox":"prc-ActionList-MultiSelectCheckbox-2OqxZ","checkmarkOut":"prc-ActionList-checkmarkOut-GbMf4","checkmarkIn":"prc-ActionList-checkmarkIn-gjsPG","SingleSelectCheckmark":"prc-ActionList-SingleSelectCheckmark-zMd8d","ExpandIcon":"prc-ActionList-ExpandIcon-J4OqB","
|
|
3
|
+
var classes = {"ActionList":"prc-ActionList-ActionList-rPFF2","ActionListItem":"prc-ActionList-ActionListItem-So4vC","SubGroup":"prc-ActionList-SubGroup-5Zje2","ActionListSubContent":"prc-ActionList-ActionListSubContent-gKsFp","Divider":"prc-ActionList-Divider-taVfb","ItemLabel":"prc-ActionList-ItemLabel-81ohH","focus-visible":"prc-ActionList-focus-visible-OJCTY","LeadingAction":"prc-ActionList-LeadingAction-hbWbh","LeadingVisual":"prc-ActionList-LeadingVisual-NBr28","InactiveWarning":"prc-ActionList-InactiveWarning-1Dszv","Description":"prc-ActionList-Description-Z-EZJ","TrailingVisual":"prc-ActionList-TrailingVisual-jwT9C","VisualWrap":"prc-ActionList-VisualWrap-bdCsS","ActionListContent":"prc-ActionList-ActionListContent-KBb8-","Spacer":"prc-ActionList-Spacer-4tR2m","MultiSelectCheckbox":"prc-ActionList-MultiSelectCheckbox-2OqxZ","checkmarkOut":"prc-ActionList-checkmarkOut-GbMf4","checkmarkIn":"prc-ActionList-checkmarkIn-gjsPG","SingleSelectCheckmark":"prc-ActionList-SingleSelectCheckmark-zMd8d","ExpandIcon":"prc-ActionList-ExpandIcon-J4OqB","TrailingAction":"prc-ActionList-TrailingAction-dMRxe","ItemDescriptionWrap":"prc-ActionList-ItemDescriptionWrap-ujC8S","TrailingActionButton":"prc-ActionList-TrailingActionButton-UUAk6","InactiveButtonWrap":"prc-ActionList-InactiveButtonWrap-Ia-xM","InactiveButtonReset":"prc-ActionList-InactiveButtonReset-uK4-x"};
|
|
4
4
|
|
|
5
5
|
export { classes as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../src/ActionList/List.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../src/ActionList/List.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAA;AAwHrC,QAAA,MAAM,IAAI,GA1Ga,EAAE,SAAS,KAAK,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;oDA0GR,CAAA;AAI3C,OAAO,EAAC,IAAI,EAAC,CAAA"}
|
package/dist/ActionList/List.js
CHANGED
|
@@ -12,11 +12,12 @@ import classes from './ActionList.module.css.js';
|
|
|
12
12
|
import useIsomorphicLayoutEffect from '../utils/useIsomorphicLayoutEffect.js';
|
|
13
13
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
14
14
|
import { useProvidedRefOrCreate } from '../hooks/useProvidedRefOrCreate.js';
|
|
15
|
+
import { useFeatureFlag } from '../FeatureFlags/useFeatureFlag.js';
|
|
15
16
|
import { FocusKeys } from '@primer/behaviors';
|
|
16
17
|
|
|
17
18
|
const UnwrappedList = (props, forwardedRef) => {
|
|
18
19
|
var _slots$heading$props$;
|
|
19
|
-
const $ = c(
|
|
20
|
+
const $ = c(40);
|
|
20
21
|
let className;
|
|
21
22
|
let restProps;
|
|
22
23
|
let role;
|
|
@@ -80,6 +81,7 @@ const UnwrappedList = (props, forwardedRef) => {
|
|
|
80
81
|
const ariaLabelledBy = slots.heading ? (_slots$heading$props$ = slots.heading.props.id) !== null && _slots$heading$props$ !== void 0 ? _slots$heading$props$ : headingId : listLabelledBy;
|
|
81
82
|
const listRole = role || listRoleFromContainer;
|
|
82
83
|
const listRef = useProvidedRefOrCreate(forwardedRef);
|
|
84
|
+
const itemGapEnabled = useFeatureFlag("primer_react_action_list_item_gap") && container === "NavList";
|
|
83
85
|
let enableFocusZone = false;
|
|
84
86
|
if (enableFocusZoneFromContainer !== undefined) {
|
|
85
87
|
enableFocusZone = enableFocusZoneFromContainer;
|
|
@@ -165,9 +167,10 @@ const UnwrappedList = (props, forwardedRef) => {
|
|
|
165
167
|
} else {
|
|
166
168
|
t12 = $[24];
|
|
167
169
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
170
|
+
const t13 = itemGapEnabled ? "" : undefined;
|
|
171
|
+
let t14;
|
|
172
|
+
if ($[25] !== Component || $[26] !== ariaLabelledBy || $[27] !== childrenWithoutSlots || $[28] !== listRef || $[29] !== listRole || $[30] !== restProps || $[31] !== showDividers || $[32] !== t12 || $[33] !== t13 || $[34] !== variant) {
|
|
173
|
+
t14 = /*#__PURE__*/jsx(Component, {
|
|
171
174
|
className: t12,
|
|
172
175
|
role: listRole,
|
|
173
176
|
"aria-labelledby": ariaLabelledBy,
|
|
@@ -175,6 +178,7 @@ const UnwrappedList = (props, forwardedRef) => {
|
|
|
175
178
|
"data-component": "ActionList",
|
|
176
179
|
"data-dividers": showDividers,
|
|
177
180
|
"data-variant": variant,
|
|
181
|
+
"data-item-gap": t13,
|
|
178
182
|
...restProps,
|
|
179
183
|
children: childrenWithoutSlots
|
|
180
184
|
});
|
|
@@ -186,25 +190,26 @@ const UnwrappedList = (props, forwardedRef) => {
|
|
|
186
190
|
$[30] = restProps;
|
|
187
191
|
$[31] = showDividers;
|
|
188
192
|
$[32] = t12;
|
|
189
|
-
$[33] =
|
|
190
|
-
$[34] =
|
|
193
|
+
$[33] = t13;
|
|
194
|
+
$[34] = variant;
|
|
195
|
+
$[35] = t14;
|
|
191
196
|
} else {
|
|
192
|
-
|
|
197
|
+
t14 = $[35];
|
|
193
198
|
}
|
|
194
|
-
let
|
|
195
|
-
if ($[
|
|
196
|
-
|
|
199
|
+
let t15;
|
|
200
|
+
if ($[36] !== listContextValue || $[37] !== slots.heading || $[38] !== t14) {
|
|
201
|
+
t15 = /*#__PURE__*/jsxs(ListContext.Provider, {
|
|
197
202
|
value: listContextValue,
|
|
198
|
-
children: [t11,
|
|
203
|
+
children: [t11, t14]
|
|
199
204
|
});
|
|
200
|
-
$[
|
|
201
|
-
$[
|
|
202
|
-
$[37] = t13;
|
|
205
|
+
$[36] = listContextValue;
|
|
206
|
+
$[37] = slots.heading;
|
|
203
207
|
$[38] = t14;
|
|
208
|
+
$[39] = t15;
|
|
204
209
|
} else {
|
|
205
|
-
|
|
210
|
+
t15 = $[39];
|
|
206
211
|
}
|
|
207
|
-
return
|
|
212
|
+
return t15;
|
|
208
213
|
};
|
|
209
214
|
const List = fixedForwardRef(UnwrappedList);
|
|
210
215
|
Object.assign(List, {
|
|
@@ -68,13 +68,4 @@ export interface ConfirmationDialogProps {
|
|
|
68
68
|
* rendering capabilities are provided for ConfirmationDialog.
|
|
69
69
|
*/
|
|
70
70
|
export declare const ConfirmationDialog: React.FC<React.PropsWithChildren<ConfirmationDialogProps>>;
|
|
71
|
-
export type ConfirmOptions = Omit<ConfirmationDialogProps, 'onClose'> & {
|
|
72
|
-
content: React.ReactNode;
|
|
73
|
-
};
|
|
74
|
-
/**
|
|
75
|
-
* This hook takes no parameters and returns an `async` function, `confirm`. When `confirm`
|
|
76
|
-
* is called, it shows the confirmation dialog. When the dialog is dismissed, a promise is
|
|
77
|
-
* resolved with `true` or `false` depending on whether or not the confirm button was used.
|
|
78
|
-
*/
|
|
79
|
-
export declare function useConfirm(): (options: ConfirmOptions) => Promise<boolean>;
|
|
80
71
|
//# sourceMappingURL=ConfirmationDialog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmationDialog.d.ts","sourceRoot":"","sources":["../../src/ConfirmationDialog/ConfirmationDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ConfirmationDialog.d.ts","sourceRoot":"","sources":["../../src/ConfirmationDialog/ConfirmationDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAoB,WAAW,EAAE,YAAY,EAAC,MAAM,WAAW,CAAA;AAG3E;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,OAAO,EAAE,CAAC,OAAO,EAAE,SAAS,GAAG,cAAc,GAAG,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAA;IAE5E;;;OAGG;IACH,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IAEtB;;OAEG;IACH,mBAAmB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAErC;;OAEG;IACH,oBAAoB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAEtC;;OAEG;IACH,iBAAiB,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;IAEnD;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAE7B;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAE9B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;IAE1C;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,WAAW,CAAA;IAEnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,uBAAuB,CAAC,CAqDzF,CAAA"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { useCallback } from 'react';
|
|
2
|
-
import { createRoot } from 'react-dom/client';
|
|
3
|
-
import BaseStyles from '../BaseStyles.js';
|
|
4
2
|
import { jsx } from 'react/jsx-runtime';
|
|
5
3
|
import { Dialog } from '../Dialog/Dialog.js';
|
|
6
4
|
|
|
@@ -60,44 +58,5 @@ const ConfirmationDialog = props => {
|
|
|
60
58
|
});
|
|
61
59
|
};
|
|
62
60
|
ConfirmationDialog.displayName = "ConfirmationDialog";
|
|
63
|
-
let hostElement = null;
|
|
64
|
-
async function confirm(options) {
|
|
65
|
-
const {
|
|
66
|
-
content,
|
|
67
|
-
...confirmationDialogProps
|
|
68
|
-
} = options;
|
|
69
|
-
return new Promise(resolve => {
|
|
70
|
-
hostElement ||= document.createElement('div');
|
|
71
|
-
if (!hostElement.isConnected) document.body.append(hostElement);
|
|
72
|
-
const root = createRoot(hostElement);
|
|
73
|
-
const onClose = gesture => {
|
|
74
|
-
root.unmount();
|
|
75
|
-
if (gesture === 'confirm') {
|
|
76
|
-
resolve(true);
|
|
77
|
-
} else {
|
|
78
|
-
resolve(false);
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
root.render(/*#__PURE__*/jsx(BaseStyles, {
|
|
82
|
-
children: /*#__PURE__*/jsx(ConfirmationDialog, {
|
|
83
|
-
...confirmationDialogProps,
|
|
84
|
-
onClose: onClose,
|
|
85
|
-
children: content
|
|
86
|
-
})
|
|
87
|
-
}));
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* This hook takes no parameters and returns an `async` function, `confirm`. When `confirm`
|
|
93
|
-
* is called, it shows the confirmation dialog. When the dialog is dismissed, a promise is
|
|
94
|
-
* resolved with `true` or `false` depending on whether or not the confirm button was used.
|
|
95
|
-
*/
|
|
96
|
-
function useConfirm() {
|
|
97
|
-
const result = useCallback(options => {
|
|
98
|
-
return confirm(options);
|
|
99
|
-
}, []);
|
|
100
|
-
return result;
|
|
101
|
-
}
|
|
102
61
|
|
|
103
|
-
export { ConfirmationDialog
|
|
62
|
+
export { ConfirmationDialog };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type ConfirmationDialogProps } from './ConfirmationDialog';
|
|
3
|
+
export type ConfirmOptions = Omit<ConfirmationDialogProps, 'onClose'> & {
|
|
4
|
+
content: React.ReactNode;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* This hook takes no parameters and returns an `async` function, `confirm`. When `confirm`
|
|
8
|
+
* is called, it shows the confirmation dialog. When the dialog is dismissed, a promise is
|
|
9
|
+
* resolved with `true` or `false` depending on whether or not the confirm button was used.
|
|
10
|
+
*/
|
|
11
|
+
export declare function useConfirm(): (options: ConfirmOptions) => Promise<boolean>;
|
|
12
|
+
//# sourceMappingURL=useConfirm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useConfirm.d.ts","sourceRoot":"","sources":["../../src/ConfirmationDialog/useConfirm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAA;AAGxC,OAAO,EAAqB,KAAK,uBAAuB,EAAC,MAAM,sBAAsB,CAAA;AAIrF,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,EAAE,SAAS,CAAC,GAAG;IAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;CAAC,CAAA;AA0BlG;;;;GAIG;AACH,wBAAgB,UAAU,cACa,cAAc,sBAIpD"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { createRoot } from 'react-dom/client';
|
|
3
|
+
import BaseStyles from '../BaseStyles.js';
|
|
4
|
+
import { ConfirmationDialog } from './ConfirmationDialog.js';
|
|
5
|
+
|
|
6
|
+
let hostElement = null;
|
|
7
|
+
async function confirm(options) {
|
|
8
|
+
const {
|
|
9
|
+
content,
|
|
10
|
+
...confirmationDialogProps
|
|
11
|
+
} = options;
|
|
12
|
+
return new Promise(resolve => {
|
|
13
|
+
hostElement ||= document.createElement('div');
|
|
14
|
+
if (!hostElement.isConnected) document.body.append(hostElement);
|
|
15
|
+
const root = createRoot(hostElement);
|
|
16
|
+
const onClose = gesture => {
|
|
17
|
+
root.unmount();
|
|
18
|
+
if (gesture === 'confirm') {
|
|
19
|
+
resolve(true);
|
|
20
|
+
} else {
|
|
21
|
+
resolve(false);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
root.render(/*#__PURE__*/React.createElement(BaseStyles, null, /*#__PURE__*/React.createElement(ConfirmationDialog, {
|
|
25
|
+
...confirmationDialogProps,
|
|
26
|
+
onClose
|
|
27
|
+
}, content)));
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* This hook takes no parameters and returns an `async` function, `confirm`. When `confirm`
|
|
33
|
+
* is called, it shows the confirmation dialog. When the dialog is dismissed, a promise is
|
|
34
|
+
* resolved with `true` or `false` depending on whether or not the confirm button was used.
|
|
35
|
+
*/
|
|
36
|
+
function useConfirm() {
|
|
37
|
+
const result = _temp;
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
function _temp(options) {
|
|
41
|
+
return confirm(options);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export { useConfirm };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultFeatureFlags.d.ts","sourceRoot":"","sources":["../../src/FeatureFlags/DefaultFeatureFlags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AAEnD,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"DefaultFeatureFlags.d.ts","sourceRoot":"","sources":["../../src/FeatureFlags/DefaultFeatureFlags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,oBAAoB,CAAA;AAEnD,eAAO,MAAM,mBAAmB,kBAS9B,CAAA"}
|
|
@@ -6,6 +6,7 @@ const DefaultFeatureFlags = FeatureFlagScope.create({
|
|
|
6
6
|
primer_react_select_panel_order_selected_at_top: false,
|
|
7
7
|
primer_react_styled_react_use_primer_theme_providers: false,
|
|
8
8
|
primer_react_action_list_group_heading_trailing_action: false,
|
|
9
|
+
primer_react_action_list_item_gap: false,
|
|
9
10
|
primer_react_timeline_list_semantics: false,
|
|
10
11
|
primer_react_theme_provider_remove_ssr_handoff: false
|
|
11
12
|
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ColorMode, ColorModeWithAuto, Theme } from './ThemeProvider';
|
|
3
|
+
export declare const ThemeContext: React.Context<{
|
|
4
|
+
theme?: Theme;
|
|
5
|
+
colorScheme?: string;
|
|
6
|
+
colorMode?: ColorModeWithAuto;
|
|
7
|
+
resolvedColorMode?: ColorMode;
|
|
8
|
+
resolvedColorScheme?: string;
|
|
9
|
+
dayScheme?: string;
|
|
10
|
+
nightScheme?: string;
|
|
11
|
+
setColorMode: React.Dispatch<React.SetStateAction<ColorModeWithAuto>>;
|
|
12
|
+
setDayScheme: React.Dispatch<React.SetStateAction<string>>;
|
|
13
|
+
setNightScheme: React.Dispatch<React.SetStateAction<string>>;
|
|
14
|
+
}>;
|
|
15
|
+
//# sourceMappingURL=ThemeContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeContext.d.ts","sourceRoot":"","sources":["../src/ThemeContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAC,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAA;AAExE,eAAO,MAAM,YAAY;YACf,KAAK;kBACC,MAAM;gBACR,iBAAiB;wBACT,SAAS;0BACP,MAAM;gBAChB,MAAM;kBACJ,MAAM;kBACN,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;kBACvD,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBAC1C,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;EAK5D,CAAA"}
|
package/dist/ThemeProvider.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export declare const defaultColorMode = "day";
|
|
|
3
3
|
export type Theme = {
|
|
4
4
|
[key: string]: any;
|
|
5
5
|
};
|
|
6
|
-
type ColorMode = 'day' | 'night' | 'light' | 'dark';
|
|
6
|
+
export type ColorMode = 'day' | 'night' | 'light' | 'dark';
|
|
7
7
|
export type ColorModeWithAuto = ColorMode | 'auto';
|
|
8
8
|
export type ThemeProviderProps = {
|
|
9
9
|
colorMode?: ColorModeWithAuto;
|
|
@@ -21,18 +21,5 @@ export type ThemeProviderProps = {
|
|
|
21
21
|
contextOnly?: boolean;
|
|
22
22
|
};
|
|
23
23
|
export declare const ThemeProvider: React.FC<React.PropsWithChildren<ThemeProviderProps>>;
|
|
24
|
-
export declare function useTheme(): {
|
|
25
|
-
theme?: Theme;
|
|
26
|
-
colorScheme?: string;
|
|
27
|
-
colorMode?: ColorModeWithAuto;
|
|
28
|
-
resolvedColorMode?: ColorMode;
|
|
29
|
-
resolvedColorScheme?: string;
|
|
30
|
-
dayScheme?: string;
|
|
31
|
-
nightScheme?: string;
|
|
32
|
-
setColorMode: React.Dispatch<React.SetStateAction<ColorModeWithAuto>>;
|
|
33
|
-
setDayScheme: React.Dispatch<React.SetStateAction<string>>;
|
|
34
|
-
setNightScheme: React.Dispatch<React.SetStateAction<string>>;
|
|
35
|
-
};
|
|
36
|
-
export declare function useColorSchemeVar(values: Partial<Record<string, string>>, fallback: string): string;
|
|
37
24
|
export default ThemeProvider;
|
|
38
25
|
//# sourceMappingURL=ThemeProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../src/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../src/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,eAAO,MAAM,gBAAgB,QAAQ,CAAA;AAKrC,MAAM,MAAM,KAAK,GAAG;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAC,CAAA;AACxC,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;AAC1D,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAAA;AAElD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,iBAAiB,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AA6BD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CA2F/E,CAAA;AAqED,eAAe,aAAa,CAAA"}
|
package/dist/ThemeProvider.js
CHANGED
|
@@ -3,6 +3,8 @@ import React from 'react';
|
|
|
3
3
|
import theme from './theme.js';
|
|
4
4
|
import deepmerge from 'deepmerge';
|
|
5
5
|
import { useSyncedState } from './hooks/useSyncedState.js';
|
|
6
|
+
import { ThemeContext } from './ThemeContext.js';
|
|
7
|
+
import { useTheme } from './useTheme.js';
|
|
6
8
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
7
9
|
import { useFeatureFlag } from './FeatureFlags/useFeatureFlag.js';
|
|
8
10
|
import { useId } from './hooks/useId.js';
|
|
@@ -13,12 +15,6 @@ const defaultNightScheme = 'dark';
|
|
|
13
15
|
|
|
14
16
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
15
17
|
|
|
16
|
-
const ThemeContext = /*#__PURE__*/React.createContext({
|
|
17
|
-
setColorMode: () => null,
|
|
18
|
-
setDayScheme: () => null,
|
|
19
|
-
setNightScheme: () => null
|
|
20
|
-
});
|
|
21
|
-
|
|
22
18
|
// inspired from __NEXT_DATA__, we use application/json to avoid CSRF policy with inline scripts
|
|
23
19
|
const serverHandoffCache = new Map();
|
|
24
20
|
const emptyHandoff = {};
|
|
@@ -225,17 +221,6 @@ const ThemeProvider = t0 => {
|
|
|
225
221
|
}
|
|
226
222
|
return t10;
|
|
227
223
|
};
|
|
228
|
-
function useTheme() {
|
|
229
|
-
return React.useContext(ThemeContext);
|
|
230
|
-
}
|
|
231
|
-
function useColorSchemeVar(values, fallback) {
|
|
232
|
-
var _values$colorScheme;
|
|
233
|
-
const {
|
|
234
|
-
colorScheme: t0
|
|
235
|
-
} = useTheme();
|
|
236
|
-
const colorScheme = t0 === undefined ? "" : t0;
|
|
237
|
-
return (_values$colorScheme = values[colorScheme]) !== null && _values$colorScheme !== void 0 ? _values$colorScheme : fallback;
|
|
238
|
-
}
|
|
239
224
|
function subscribeToSystemColorMode(callback) {
|
|
240
225
|
var _window, _window$matchMedia;
|
|
241
226
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
@@ -298,4 +283,4 @@ function applyColorScheme(theme, colorScheme) {
|
|
|
298
283
|
};
|
|
299
284
|
}
|
|
300
285
|
|
|
301
|
-
export { ThemeProvider, ThemeProvider as default, defaultColorMode
|
|
286
|
+
export { ThemeProvider, ThemeProvider as default, defaultColorMode };
|
|
@@ -1,45 +1,5 @@
|
|
|
1
|
-
import React
|
|
2
|
-
|
|
3
|
-
* Props to be used when the Tabs component's state is controlled by the parent
|
|
4
|
-
*/
|
|
5
|
-
type ControlledTabsProps = {
|
|
6
|
-
/**
|
|
7
|
-
* Specify the selected tab
|
|
8
|
-
*/
|
|
9
|
-
value: string;
|
|
10
|
-
/**
|
|
11
|
-
* `defaultValue` can only be used in the uncontrolled variant of the component
|
|
12
|
-
* If you need to use `defaultValue`, please switch to the uncontrolled variant by removing the `value` prop.
|
|
13
|
-
*/
|
|
14
|
-
defaultValue?: never;
|
|
15
|
-
/**
|
|
16
|
-
* Provide an optional callback that is called when the selected tab changes
|
|
17
|
-
*/
|
|
18
|
-
onValueChange: ({ value }: {
|
|
19
|
-
value: string;
|
|
20
|
-
}) => void;
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Props to be used when the Tabs component is managing its own state
|
|
24
|
-
*/
|
|
25
|
-
type UncontrolledTabsProps = {
|
|
26
|
-
/**
|
|
27
|
-
* Specify the default selected tab
|
|
28
|
-
*/
|
|
29
|
-
defaultValue: string;
|
|
30
|
-
/**
|
|
31
|
-
* `value` can only be used in the controlled variant of the component
|
|
32
|
-
* If you need to use `value`, please switch to the controlled variant by removing the `defaultValue` prop.
|
|
33
|
-
*/
|
|
34
|
-
value?: never;
|
|
35
|
-
/**
|
|
36
|
-
* Provide an optional callback that is called when the selected tab changes
|
|
37
|
-
*/
|
|
38
|
-
onValueChange?: ({ value }: {
|
|
39
|
-
value: string;
|
|
40
|
-
}) => void;
|
|
41
|
-
};
|
|
42
|
-
type TabsProps = PropsWithChildren<ControlledTabsProps | UncontrolledTabsProps>;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { TabListProps, TabPanelProps, TabProps, TabsProps } from './types';
|
|
43
3
|
/**
|
|
44
4
|
* The Tabs component provides the base structure for a tabbed interface, without providing any formal requirement on DOM structure or styling.
|
|
45
5
|
* It manages the state of the selected tab, handles tab ordering/selection and provides context to its child components to ensure an accessible experience.
|
|
@@ -48,80 +8,12 @@ type TabsProps = PropsWithChildren<ControlledTabsProps | UncontrolledTabsProps>;
|
|
|
48
8
|
* The `Tab`, `TabList`, and `TabPanel` components are provided for convenience to showcase the API & implementation.
|
|
49
9
|
*/
|
|
50
10
|
declare function Tabs(props: TabsProps): React.JSX.Element;
|
|
51
|
-
type Label = {
|
|
52
|
-
'aria-label': string;
|
|
53
|
-
};
|
|
54
|
-
type LabelledBy = {
|
|
55
|
-
'aria-labelledby': string;
|
|
56
|
-
};
|
|
57
|
-
type Labelled = Label | LabelledBy;
|
|
58
|
-
type TabListProps = Labelled & React.HTMLAttributes<HTMLElement>;
|
|
59
|
-
declare function useTabList<T extends HTMLElement>(props: TabListProps & {
|
|
60
|
-
/** Optional ref to use for the tablist. If none is provided, one will be generated automatically */
|
|
61
|
-
ref?: React.RefObject<T>;
|
|
62
|
-
}): {
|
|
63
|
-
/** Props to be spread onto the tablist element */
|
|
64
|
-
tabListProps: {
|
|
65
|
-
onKeyDown: React.KeyboardEventHandler<T>;
|
|
66
|
-
'aria-orientation': AriaAttributes['aria-orientation'];
|
|
67
|
-
'aria-label': AriaAttributes['aria-label'];
|
|
68
|
-
'aria-labelledby': AriaAttributes['aria-labelledby'];
|
|
69
|
-
ref: React.RefObject<T | null>;
|
|
70
|
-
role: 'tablist';
|
|
71
|
-
};
|
|
72
|
-
};
|
|
73
11
|
declare function TabList({ children, ...rest }: TabListProps): React.JSX.Element;
|
|
74
|
-
type TabProps = React.ComponentPropsWithoutRef<'button'> & {
|
|
75
|
-
/**
|
|
76
|
-
* Specify whether the tab is disabled
|
|
77
|
-
*/
|
|
78
|
-
disabled?: boolean;
|
|
79
|
-
/**
|
|
80
|
-
* Provide a value that uniquely identifies the tab. This should mirror the
|
|
81
|
-
* value provided to the corresponding TabPanel
|
|
82
|
-
*/
|
|
83
|
-
value: string;
|
|
84
|
-
};
|
|
85
|
-
/**
|
|
86
|
-
* A custom hook that provides the props needed for a tab component.
|
|
87
|
-
* The props returned should be spread onto the component (typically a button) with the `role=tab`, under a `tablist`.
|
|
88
|
-
*/
|
|
89
|
-
declare function useTab<T extends HTMLElement>(props: Pick<TabProps, 'disabled' | 'value'>): {
|
|
90
|
-
/** Props to be spread onto the tab component */
|
|
91
|
-
tabProps: Pick<React.HTMLProps<T>, 'aria-controls' | 'aria-disabled' | 'aria-selected' | 'id' | 'tabIndex' | 'onKeyDown' | 'onMouseDown' | 'onFocus'> & {
|
|
92
|
-
role: 'tab';
|
|
93
|
-
};
|
|
94
|
-
};
|
|
95
12
|
declare const Tab: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
|
|
96
|
-
/**
|
|
97
|
-
* Specify whether the tab is disabled
|
|
98
|
-
*/
|
|
99
13
|
disabled?: boolean;
|
|
100
|
-
/**
|
|
101
|
-
* Provide a value that uniquely identifies the tab. This should mirror the
|
|
102
|
-
* value provided to the corresponding TabPanel
|
|
103
|
-
*/
|
|
104
14
|
value: string;
|
|
105
15
|
} & React.RefAttributes<HTMLButtonElement>>;
|
|
106
|
-
type TabPanelProps = {
|
|
107
|
-
/**
|
|
108
|
-
* Provide a value that uniquely identifies the tab panel. This should mirror
|
|
109
|
-
* the value set for the corresponding tab
|
|
110
|
-
*/
|
|
111
|
-
value: string;
|
|
112
|
-
};
|
|
113
|
-
/** Utility hook for tab panels */
|
|
114
|
-
declare function useTabPanel<T extends HTMLElement>(props: TabPanelProps): {
|
|
115
|
-
/** Props to be spread onto the tabpanel component */
|
|
116
|
-
tabPanelProps: Pick<React.HTMLProps<T>, 'aria-labelledby' | 'id' | 'hidden'> & {
|
|
117
|
-
/**
|
|
118
|
-
* An identifier to aid in styling when this panel is selected & active
|
|
119
|
-
*/
|
|
120
|
-
'data-selected': string | undefined;
|
|
121
|
-
role: 'tabpanel';
|
|
122
|
-
};
|
|
123
|
-
};
|
|
124
16
|
declare function TabPanel({ children, value, ...rest }: React.HTMLAttributes<HTMLDivElement> & TabPanelProps): React.JSX.Element;
|
|
125
|
-
export { Tabs, TabList, Tab, TabPanel
|
|
17
|
+
export { Tabs, TabList, Tab, TabPanel };
|
|
126
18
|
export type { TabsProps, TabListProps, TabProps, TabPanelProps };
|
|
127
19
|
//# sourceMappingURL=Tabs.d.ts.map
|