@ngrok/mantle 0.82.1 → 0.83.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion.d.ts +7 -7
- package/dist/agent.json +3 -1
- package/dist/{alert-BWwNPOMI.d.ts → alert-B1HXfkYn.d.ts} +9 -7
- package/dist/{alert-vwFd7qdp.js → alert-BuG2qS5l.js} +1 -1
- package/dist/alert-center.d.ts +3 -3
- package/dist/alert-center.js +1 -1
- package/dist/alert-dialog.d.ts +18 -18
- package/dist/alert.d.ts +1 -1
- package/dist/alert.js +1 -1
- package/dist/anchor.d.ts +2 -2
- package/dist/app-layout.js +1 -1
- package/dist/area-chart.d.ts +67 -19
- package/dist/area-chart.js +1 -1
- package/dist/avatar.d.ts +319 -0
- package/dist/avatar.js +1 -0
- package/dist/bar-chart.d.ts +73 -20
- package/dist/bar-chart.js +1 -1
- package/dist/breadcrumb.d.ts +50 -17
- package/dist/breadcrumb.js +1 -1
- package/dist/browser-only.d.ts +3 -3
- package/dist/{button-C-gMbPso.d.ts → button-BIf69CSV.d.ts} +2 -2
- package/dist/button-BLDjW1u9.js +1 -0
- package/dist/{button-IlxHhjPK.js → button-CCkGqE1t.js} +1 -1
- package/dist/{button-C7vAl6lS.d.ts → button-DJ7AAgII.d.ts} +4 -6
- package/dist/{button-DARFK2KJ.d.ts → button-PoIujPMX.d.ts} +2 -2
- package/dist/button.d.ts +3 -3
- package/dist/button.js +1 -1
- package/dist/calendar.d.ts +1 -1
- package/dist/calendar.js +1 -1
- package/dist/card.d.ts +15 -15
- package/dist/{chart-1cVjAcj8.d.ts → chart-0zcFJh4n.d.ts} +75 -22
- package/dist/chart-DBxT9BNl.js +2 -0
- package/dist/{choice-BNRQXszu.d.ts → choice-CVdQrs-m.d.ts} +118 -6
- package/dist/choice.d.ts +1 -1
- package/dist/{code-block-C9uaM9-V.js → code-block-CIE0F2fu.js} +1 -1
- package/dist/{code-block-B6OlZrSI.d.ts → code-block-CZWPrV4k.d.ts} +3 -3
- package/dist/code-block.d.ts +10 -7
- package/dist/code-block.js +2 -2
- package/dist/code-block_highlight-utils.d.ts +1 -1
- package/dist/code-block_highlight-utils.js +1 -1
- package/dist/combobox.d.ts +8 -9
- package/dist/command.d.ts +668 -106
- package/dist/command.js +1 -1
- package/dist/data-table.d.ts +6 -6
- package/dist/data-table.js +1 -1
- package/dist/dialog-32Hq6w6P.js +1 -0
- package/dist/dialog-B6h1BCDL.d.ts +895 -0
- package/dist/dialog.d.ts +2 -805
- package/dist/dialog.js +1 -1
- package/dist/dropdown-menu-BcALUQMp.d.ts +1 -0
- package/dist/{dropdown-menu-D6pMAY7I.d.ts → dropdown-menu-DZOfj6HB.d.ts} +1 -1
- package/dist/dropdown-menu.d.ts +2 -2
- package/dist/field.d.ts +5 -5
- package/dist/field.js +1 -1
- package/dist/flag.js +1 -1
- package/dist/hooks.d.ts +16 -17
- package/dist/hooks.js +1 -1
- package/dist/icons-DEVx1oP9.js +1 -0
- package/dist/icons.d.ts +7 -6
- package/dist/icons.js +1 -1
- package/dist/{in-view-DDEGUKDR.d.ts → in-view-gxyc9Q1_.d.ts} +1 -1
- package/dist/{input-BuYDU6CF.d.ts → input-DpnC3Xgj.d.ts} +2 -2
- package/dist/input.d.ts +1 -1
- package/dist/kbd.d.ts +1 -1
- package/dist/line-chart.d.ts +60 -13
- package/dist/line-chart.js +1 -1
- package/dist/list-CwL23L_B.js +1 -0
- package/dist/list.d.ts +2 -2
- package/dist/list.js +1 -1
- package/dist/llms.txt +3 -1
- package/dist/mantle-dark-high-contrast.css +30 -17
- package/dist/mantle-dark.css +48 -13
- package/dist/mantle-light-high-contrast.css +33 -15
- package/dist/mantle.css +436 -26
- package/dist/media-object.d.ts +5 -1
- package/dist/multi-select.d.ts +7 -7
- package/dist/multi-select.js +1 -1
- package/dist/otp-input.d.ts +4 -4
- package/dist/otp-input.js +1 -1
- package/dist/pagination.d.ts +2 -2
- package/dist/pagination.js +1 -1
- package/dist/progress.d.ts +4 -4
- package/dist/qr-code.d.ts +2 -2
- package/dist/sandbar.d.ts +471 -0
- package/dist/sandbar.js +1 -0
- package/dist/sandboxed-on-click.d.ts +4 -6
- package/dist/scatter-plot.d.ts +69 -24
- package/dist/scatter-plot.js +1 -1
- package/dist/{select-0z7HVS6r.d.ts → select-DVHmgih8.d.ts} +13 -7
- package/dist/select-LK9NX-vV.js +1 -0
- package/dist/select.d.ts +1 -1
- package/dist/select.js +1 -1
- package/dist/selectable-list.d.ts +4 -4
- package/dist/selectable-list.js +1 -1
- package/dist/{separator-B5UmkVRL.d.ts → separator-CNDs98Dv.d.ts} +2 -2
- package/dist/separator.d.ts +1 -1
- package/dist/{sheet-BxvTfPLM.js → sheet-BOSknSN9.js} +1 -1
- package/dist/sheet.d.ts +1 -1
- package/dist/sheet.js +1 -1
- package/dist/sidebar.d.ts +347 -366
- package/dist/sidebar.js +1 -1
- package/dist/slider.d.ts +1 -1
- package/dist/split-button.d.ts +12 -12
- package/dist/split-button.js +1 -1
- package/dist/switch.d.ts +2 -1
- package/dist/{table-CGxJwtbL.js → table-C_Nm_RSV.js} +1 -1
- package/dist/{table-CZBYEmyK.d.ts → table-D51ZtV4U.d.ts} +18 -8
- package/dist/table.d.ts +1 -1
- package/dist/table.js +1 -1
- package/dist/tabs.d.ts +8 -13
- package/dist/tabs.js +1 -1
- package/dist/{theme-FbfjYiD3.d.ts → theme-6OxNhf6l.d.ts} +6 -6
- package/dist/theme-CVfq037P.js +1 -0
- package/dist/theme-switcher.d.ts +3 -3
- package/dist/theme-switcher.js +1 -1
- package/dist/theme.d.ts +86 -23
- package/dist/theme.js +1 -1
- package/dist/toast.d.ts +9 -9
- package/dist/toast.js +1 -1
- package/dist/{tooltip-mrpLz4DZ.d.ts → tooltip-DuXGxIse.d.ts} +6 -4
- package/dist/tooltip.d.ts +1 -1
- package/dist/use-breakpoint-Dqu12Szq.js +1 -0
- package/dist/use-callback-ref-IYti9y7x.js +1 -0
- package/dist/use-is-apple-platform-Cxwrb86L.js +1 -0
- package/dist/use-matches-media-query-Bd_GhhVd.js +1 -0
- package/dist/utils.d.ts +1 -1
- package/package.json +5 -3
- package/dist/button-DvHMWAPl.js +0 -1
- package/dist/chart-B3pAvmkk.js +0 -2
- package/dist/dialog-DozL6n-F.js +0 -1
- package/dist/dropdown-menu-BbbQuae2.d.ts +0 -1
- package/dist/icons-Bb_zF2OV.js +0 -1
- package/dist/list-CJABVHwi.js +0 -1
- package/dist/platform-BVD3gpKD.js +0 -1
- package/dist/select-BReznXaw.js +0 -1
- package/dist/theme-BorfgnNh.js +0 -1
- package/dist/use-breakpoint-Wd7_5-Mu.js +0 -1
- package/dist/use-matches-media-query-CMSxHR9n.js +0 -1
package/dist/dialog.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as e}from"./primitive-D-9GIFWb.js";import{t}from"./dialog-
|
|
1
|
+
import{l as e}from"./primitive-D-9GIFWb.js";import{t}from"./dialog-32Hq6w6P.js";export{t as Dialog,e as isDialogOverlayTarget};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import "./dropdown-menu-DZOfj6HB.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as WithDataSlot } from "./data-slot-CChfb_cv.js";
|
|
2
|
-
import { n as Separator } from "./separator-
|
|
2
|
+
import { n as Separator } from "./separator-CNDs98Dv.js";
|
|
3
3
|
import { ComponentProps } from "react";
|
|
4
4
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
5
5
|
//#region src/components/dropdown-menu/dropdown-menu.d.ts
|
package/dist/dropdown-menu.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { t as DropdownMenu } from "./dropdown-menu-
|
|
2
|
-
import "./dropdown-menu-
|
|
1
|
+
import { t as DropdownMenu } from "./dropdown-menu-DZOfj6HB.js";
|
|
2
|
+
import "./dropdown-menu-BcALUQMp.js";
|
|
3
3
|
export { DropdownMenu };
|
package/dist/field.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { n as WithAsChild } from "./as-child-D23mGo4f.js";
|
|
2
2
|
import { t as ButtonIntent } from "./button-DdSKSj1c.js";
|
|
3
|
-
import { n as IconButtonProps, r as IconButtonAppearance } from "./button-
|
|
3
|
+
import { n as IconButtonProps, r as IconButtonAppearance } from "./button-DJ7AAgII.js";
|
|
4
4
|
import { a as ValidationState, c as parseValidation, i as ValidationProp, l as resolveValidation, n as ParsedValidation, o as WithValidation, r as Validation, s as isAriaInvalid, t as AriaInvalid } from "./field-7QeiTFwl.js";
|
|
5
5
|
import { t as Label } from "./label-C6YH9skg.js";
|
|
6
|
-
import { t as Popover } from "./popover-CE4OlWkd.js";
|
|
7
6
|
import { t as Slot } from "./slot-DdgxmuI5.js";
|
|
7
|
+
import { t as Popover } from "./popover-CE4OlWkd.js";
|
|
8
8
|
import { ComponentProps, ReactElement, ReactNode } from "react";
|
|
9
9
|
//#region src/components/field/field-context.d.ts
|
|
10
10
|
/**
|
|
@@ -390,8 +390,8 @@ type FieldItemProps = ComponentProps<"div"> & WithAsChild & WithValidation & {
|
|
|
390
390
|
* tightly under the input.
|
|
391
391
|
*
|
|
392
392
|
* Renders a plain `<div>` — the `<label htmlFor>` ↔ control association
|
|
393
|
-
* already
|
|
394
|
-
* `role
|
|
393
|
+
* already carries the right semantics for a single field, so it adds no
|
|
394
|
+
* implicit `role`. `Field.Item` owns the contextual description/error IDs
|
|
395
395
|
* that `Field.Control` applies to the focusable control. Rendered errors
|
|
396
396
|
* infer an `"error"` validation state unless `validation` is supplied as an
|
|
397
397
|
* explicit override.
|
|
@@ -737,7 +737,7 @@ declare const FieldErrorList: ({ asChild, children, className, ref, ...props }:
|
|
|
737
737
|
*/
|
|
738
738
|
declare const Field: {
|
|
739
739
|
/**
|
|
740
|
-
* A single form field.
|
|
740
|
+
* A single form field. Passes message IDs and validation state to
|
|
741
741
|
* `Field.Control`; rendered errors infer `"error"` validation.
|
|
742
742
|
*
|
|
743
743
|
* @see https://mantle.ngrok.com/components/forms/field
|
package/dist/field.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./use-isomorphic-layout-effect-DdTRtMY-.js";import{t}from"./cx-IiQEAKf5.js";import{t as n}from"./slot-DpNWVci8.js";import{t as r}from"./button-
|
|
1
|
+
import{t as e}from"./use-isomorphic-layout-effect-DdTRtMY-.js";import{t}from"./cx-IiQEAKf5.js";import{t as n}from"./slot-DpNWVci8.js";import{t as r}from"./button-CCkGqE1t.js";import{i,n as a,r as o,t as s}from"./field-Bpptk_9t.js";import{n as c,r as l,t as u}from"./field-B1wqeZr4.js";import{t as d}from"./label-D-D11mlp.js";import{t as f}from"./popover-CQ9s7jG5.js";import{Children as p,Fragment as m,cloneElement as h,isValidElement as g,useCallback as _,useContext as v,useId as y,useMemo as b,useState as x}from"react";import S from"tiny-invariant";import{jsx as C}from"react/jsx-runtime";import{QuestionIcon as w}from"@phosphor-icons/react/Question";const T=e=>{let t=[],n=new Set;for(let r of e??[]){if(typeof r!=`string`)continue;let e=r.trim();e.length===0||n.has(e)||(n.add(e),t.push(e))}return t},E=e=>!(e==null||typeof e==`boolean`||typeof e==`string`&&e.trim().length===0),D=({children:e,errorItemType:t})=>{let n=!1;return p.forEach(e,e=>{if(!(n||e==null||typeof e==`boolean`)){if(typeof e==`string`){e.trim().length>0&&(n=!0);return}if(!g(e)){n=!0;return}if(e.type===t){n=E(e.props.children);return}if(e.type===m){n=D({children:e.props.children,errorItemType:t});return}n=!0}}),n},O=({className:e,ref:n,...r})=>C(`fieldset`,{ref:n,"data-slot":`field-set`,className:t(`flex w-full min-w-0 flex-col gap-4 border-0 p-0`,e),...r}),k=({className:e,ref:n,...r})=>C(`legend`,{ref:n,"data-slot":`field-legend`,className:t(`text-strong mb-1.5 text-sm font-medium font-sans`,e),...r}),A=({htmlFor:e,ref:t,...n})=>{let r=v(c);return C(d,{ref:t,htmlFor:e??r?.controlId,...n})},j=({asChild:e,className:r,ref:i,...a})=>C(e?n:`p`,{ref:i,"data-slot":`field-label-text`,className:t(`text-strong text-sm font-medium font-sans`,r),...a}),M=({asChild:e,className:r,ref:i,...a})=>C(e?n:`div`,{ref:i,"data-slot":`field-label-row`,className:t(`flex items-center gap-1`,r),...a}),N=f.Root,P=C(w,{}),F=({appearance:e=`ghost`,className:n,icon:i=P,intent:a=`neutral`,label:o,ref:s,size:c=`xs`,type:l=`button`,...u})=>C(f.Trigger,{asChild:!0,children:C(r,{ref:s,appearance:e,className:t(`text-body -my-0.5`,n),icon:i,intent:a,label:o,size:c,type:l,...u})}),I=({ref:e,...t})=>C(f.Content,{ref:e,"data-slot":`field-help-content`,...t}),L=({asChild:e,children:r,className:i,ref:a,...o})=>C(e?n:`span`,{ref:a,"data-slot":`field-optional`,className:t(`text-muted text-sm font-normal font-sans`,i),...o,children:r??`(Optional)`}),R=({asChild:e,className:r,ref:i,...a})=>C(e?n:`div`,{ref:i,"data-slot":`field-group`,className:t(`flex w-full flex-col gap-4`,r),...a}),z=({asChild:e,children:r,className:a,name:o,ref:l,validation:u,...d})=>{let f=e?n:`div`,p=y(),m=y(),h=y(),[g,v]=x(!1),S=i(u??(g?`error`:void 0)),w=_(()=>(v(!0),()=>{v(!1)}),[]),T=b(()=>({controlId:p,descriptionId:m,errorId:h,hasErrors:g,name:o,registerError:w,validation:S}),[p,m,h,g,o,w,S]);return C(c.Provider,{value:T,children:C(s,{validation:S,children:C(f,{ref:l,"data-slot":`field-item`,"data-validation":S,className:t(`flex w-full flex-col gap-1.5`,a),...d,children:r})})})},B=({children:e,ref:t,...r})=>{let i=v(c),a=l({context:i});return typeof e==`function`?C(s,{validation:a.validation,children:C(u.Provider,{value:i?a.ariaProps:null,children:e(a.ariaProps)})}):(S(g(e),`Field.Control expects a single React element child (or a render-prop function). Got a non-element value (string, array, fragment, null, or undefined). Wrap the control in a single element, or use the function child form: <Field.Control>{(props) => <YourControl {...props} />}</Field.Control>.`),C(s,{validation:a.validation,children:C(u.Provider,{value:i?a.ariaProps:null,children:C(n,{ref:t,...r,children:h(e,a.ariaProps)})})}))},V=({asChild:e,className:r,ref:i,...a})=>{let o=e?n:`p`,s=v(c);return C(o,{ref:i,"data-slot":`field-description`,id:s?.descriptionId,className:t(`text-body text-sm leading-4`,`[:where([data-slot=field-error-list]+&)]:-mt-1.5`,r),...a})},H=({children:e,className:n,ref:r,...i})=>E(e)?C(`li`,{ref:r,"data-slot":`field-error`,className:t(`text-danger-600 text-sm leading-4`,n),...i,children:e}):null,U=({messages:e,ref:t,...n})=>C(W,{ref:t,...n,children:T(e).map(e=>C(H,{children:e},e))}),W=({asChild:r,children:i,className:a,ref:o,...s})=>{let l=D({children:i,errorItemType:H}),u=v(c),d=u?.registerError;return e(()=>{if(!(!l||d==null))return d()},[l,d]),l?C(r?n:`ul`,{ref:o,"data-slot":`field-error-list`,id:u?.errorId,role:`list`,className:t(`m-0 flex w-full flex-col list-none p-0`,a),...s,children:i}):null},G={Item:z,Control:B,Group:R,Set:O,Legend:k,Label:A,LabelText:j,LabelRow:M,Help:N,HelpTrigger:F,HelpContent:I,Optional:L,Description:V,Errors:U,ErrorList:W,ErrorItem:H},K=e=>T(e?.map(e=>typeof e==`string`||!e?e:e.message));export{G as Field,a as isAriaInvalid,o as parseValidation,i as resolveValidation,K as toErrorMessages};
|
package/dist/flag.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./cx-IiQEAKf5.js";import{jsx as t,jsxs as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";const i=r(``,{variants:{size:{s:`rounded-[0.0625rem]`,m:`rounded-[0.09375rem]`,l:`rounded-xs`}}}),a=r(``,{variants:{size:{s:`w-4 h-3`,m:`w-5 h-3.75`,l:`w-8 h-6`}}});function o({className:r,code:o,size:s=`l`,loading:c=`lazy`,...l}){let u=i({size:s});return n(`div`,{"data-slot":`flag`,className:e(`flag relative overflow-hidden`,u,
|
|
1
|
+
import{t as e}from"./cx-IiQEAKf5.js";import{jsx as t,jsxs as n}from"react/jsx-runtime";import{cva as r}from"class-variance-authority";const i=r(``,{variants:{size:{s:`rounded-[0.0625rem]`,m:`rounded-[0.09375rem]`,l:`rounded-xs`}}}),a=r(``,{variants:{size:{s:`w-4 h-3`,m:`w-5 h-3.75`,l:`w-8 h-6`}}});function o({className:r,code:o,size:s=`l`,loading:c=`lazy`,...l}){let u=i({size:s}),d=a({size:s});return n(`div`,{"data-slot":`flag`,className:e(`flag relative overflow-hidden`,u,d,r),...l,children:[t(`div`,{"aria-hidden":!0,className:e(`absolute inset-0 border border-[#000]/10`,u)}),t(`img`,{className:`h-full w-full block object-cover`,src:`https://assets.ngrok.com/flags/${s}/${o}.svg`,alt:`flag for ${o}`,loading:c})]})}const s=`004.008.010.016.016.020.024.028.031.032.040.044.048.050.051.052.056.060.064.068.070.072.074.076.084.086.090.092.096.100.104.108.112.116.120.124.132.136.140.144.148.152.156.158.162.166.170.174.178.180.184.188.191.192.196.203.204.208.212.214.218.222.226.231.232.233.234.238.239.242.246.248.250.254.258.260.262.266.268.270.275.276.288.292.296.300.304.308.312.316.320.324.328.332.334.336.340.344.348.352.356.360.364.368.372.376.380.384.388.392.398.400.404.408.410.414.417.418.422.426.428.430.434.438.440.442.446.450.454.458.462.466.470.474.478.480.484.492.496.498.499.500.504.508.512.516.520.524.528.531.533.534.540.548.554.558.562.566.570.574.578.580.581.583.584.585.586.591.598.600.604.608.612.616.620.624.626.630.634.638.642.643.646.652.654.659.660.662.663.666.670.674.678.682.686.688.690.694.702.703.704.705.706.710.716.724.728.729.732.740.744.748.752.756.760.762.764.768.772.776.780.784.788.792.795.796.798.800.804.807.818.831.832.833.834.836.840.850.854.858.860.862.876.882.887.894.ABW.AD.AE.AF.AFG.AFRUN.AG.AGO.AI.AIA.AL.ALA.ALB.AM.AMS.AND.AO.AQ.AR.ARE.ARG.ARM.AS.ASM.AT.ATA.ATF.ATG.AU.AUS.AUT.AW.AX.AZ.AZE.BA.BB.BD.BDI.BE.BEL.BEN.BF.BFA.BG.BGD.BGR.BH.BHR.BHS.BI.BIH.BJ.BL.BLM.BLR.BLZ.BM.BMU.BN.BO.BOL.BQ-BO.BQ-SA.BQ-SE.BR.BRA.BRB.BRN.BS.BT.BTN.BV.BVT.BW.BWA.BY.BZ.CA.CAF.CAN.CC.CCK.CD.CF.CG.CH.CHE.CHL.CHN.CI.CIV.CK.CL.CM.CMR.CN.CO.COD.COG.COK.COL.COM.CPV.CR.CRI.CU.CUB.CUW.CV.CW.CX.CXR.CY.CYM.CYP.CZ.CZE.DE.DEU.DJ.DJI.DK.DM.DMA.DNK.DO.DOM.EC.ECU.EE.EG.EGY.EH.ER.ERI.ES.ESH.ESP.EST.ET.ETH.EU.FI.FIN.FJ.FJI.FK.FLK.FM.FO.FR.FRA.FRO.FSM.GA.GAB.GB-ENG.GB-NIR.GB-SCT.GB-UKM.GB-WLS.GB.GBR.GD.GE.GEO.GF.GG.GGY.GH.GHA.GI.GIB.GIN.GL.GLP.GM.GMB.GN.GNB.GNQ.GP.GQ.GR.GRC.GRD.GRL.GS.GT.GTM.GU.GUF.GUM.GUY.GW.GY.HK.HKG.HM.HMD.HN.HND.HR.HRV.HT.HTI.HU.HUN.ID.IDN.IE.IL.IM.IMN.IN.IND.IO.IOT.IQ.IR.IRL.IRN.IRQ.IS.ISL.ISR.IT.ITA.JAM.JE.JEY.JM.JO.JOR.JP.JPN.KAZ.KE.KEN.KG.KGZ.KH.KHM.KI.KIR.KM.KN-SK.KNA.KOR.KP.KR.KW.KWT.KY.KZ.LA.LAO.LB.LBN.LBR.LBY.LC.LCA.LI.LIE.LK.LKA.LR.LS.LSO.LT.LTU.LU.LUX.LV.LVA.LY.MA.MAC.MAF.MAR.MC.MCO.MD.MDA.MDG.MDV.ME.MEX.MF.MG.MH.MHL.MK.MKD.ML.MLI.MLT.MM.MMR.MN.MNE.MNG.MNP.MO.MOZ.MP.MQ.MR.MRT.MS.MSR.MT.MTQ.MU.MUS.MV.MW.MWI.MX.MY.MYS.MZ.NA.NAM.NC.NCL.NE.NER.NF.NFK.NG.NGA.NI.NIC.NIU.NL.NLD.NO.NOR.NP.NPL.NR.NRU.NU.NZ.NZL.OM.OMN.PA.PAK.PAN.PCN.PE.PER.PF.PG.PH.PHL.PK.PL.PLW.PM.PN.PNG.POL.PR.PRI.PRK.PRT.PRY.PS.PSE.PT.PW.PY.PYF.QA.QAT.RAINBOW.RE.REU.RO.ROU.RS.RU.RUS.RW.RWA.SA.SAU.SB.SC.SD.SDN.SE.SEN.SG.SGP.SGS.SH.SHN.SI.SJ.SJM.SK.SL.SLB.SLE.SLV.SM.SMR.SN.SO.SOM.SPM.SR.SRB.SS.SSD.ST.STP.SUR.SV.SVK.SVN.SWE.SWZ.SX.SXM.SY.SYC.SYR.SZ.TC.TCA.TCD.TD.TF.TG.TGO.TH.THA.TJ.TJK.TK.TKL.TKM.TL.TLS.TM.TN.TO.TON.TR.TT.TTO.TUN.TUR.TUV.TV.TW.TWN.TZ.TZA.UA.UG.UGA.UKR.UM.UMI.UNASUR.URY.US.USA.UY.UZ.UZB.VA.VAT.VC.VCT.VE.VEN.VG.VGB.VI.VIR.VN.VNM.VU.VUT.WF.WLF.WS.WSM.YE.YEM.ZA.ZAF.ZM.ZMB.ZW.ZWE`.split(`.`);function c(e){return s.includes(e)}export{o as Flag,s as countryCodes,c as isCountryCode};
|
package/dist/hooks.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as MarginType, o as useComposedRefs, s as copyToClipboard } from "./in-view-
|
|
1
|
+
import { n as MarginType, o as useComposedRefs, s as copyToClipboard } from "./in-view-gxyc9Q1_.js";
|
|
2
2
|
import { RefObject, useLayoutEffect } from "react";
|
|
3
3
|
//#region src/hooks/use-breakpoint.d.ts
|
|
4
4
|
/**
|
|
@@ -72,10 +72,11 @@ declare const breakpoints: readonly ["default", "2xl", "xl", "lg", "md", "sm", "
|
|
|
72
72
|
*/
|
|
73
73
|
type Breakpoint = (typeof breakpoints)[number];
|
|
74
74
|
/**
|
|
75
|
-
*
|
|
75
|
+
* The largest Tailwind breakpoint the viewport width matches, or `"default"`
|
|
76
|
+
* below `2xs`.
|
|
76
77
|
*
|
|
77
|
-
*
|
|
78
|
-
* `useSyncExternalStore
|
|
78
|
+
* Shares one app-wide subscription to the min-width media queries through
|
|
79
|
+
* `useSyncExternalStore`.
|
|
79
80
|
*
|
|
80
81
|
* @returns {Breakpoint} The current breakpoint that matches the viewport width.
|
|
81
82
|
*
|
|
@@ -87,10 +88,10 @@ type Breakpoint = (typeof breakpoints)[number];
|
|
|
87
88
|
*/
|
|
88
89
|
declare function useBreakpoint(): Breakpoint;
|
|
89
90
|
/**
|
|
90
|
-
*
|
|
91
|
+
* `true` while the viewport is narrower than the given breakpoint.
|
|
91
92
|
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
93
|
+
* Reads a `window.matchMedia` max-width query through `useSyncExternalStore`, so
|
|
94
|
+
* the value stays correct under React's concurrent rendering.
|
|
94
95
|
*
|
|
95
96
|
* @param {TailwindBreakpoint} breakpoint - The breakpoint to check against (e.g., "md", "lg").
|
|
96
97
|
*
|
|
@@ -104,23 +105,21 @@ declare function useIsBelowBreakpoint(breakpoint: TailwindBreakpoint): boolean;
|
|
|
104
105
|
//#endregion
|
|
105
106
|
//#region src/hooks/use-callback-ref.d.ts
|
|
106
107
|
/**
|
|
107
|
-
* Returns a memoized callback that always invokes the latest version of
|
|
108
|
-
*
|
|
109
|
-
* renders.
|
|
108
|
+
* Returns a memoized callback that always invokes the latest version of
|
|
109
|
+
* `callback`, while preserving a stable function identity across renders.
|
|
110
110
|
*
|
|
111
111
|
* Use this when you need to pass a callback to a child component, an event
|
|
112
112
|
* handler, or a hook dependency array, but the consumer should not re-run /
|
|
113
|
-
* re-render
|
|
114
|
-
*
|
|
115
|
-
*
|
|
113
|
+
* re-render because the callback's identity changed. The returned function
|
|
114
|
+
* never changes reference, but internally always calls through to the latest
|
|
115
|
+
* `callback` passed in.
|
|
116
116
|
*
|
|
117
117
|
* Most commonly used as an internal building block for other hooks (for
|
|
118
118
|
* example, {@link useDebouncedCallback}). It is also re-exported publicly
|
|
119
119
|
* for consumers that need the same pattern.
|
|
120
120
|
*
|
|
121
121
|
* @param callback - The callback to wrap. May be `undefined`, in which case
|
|
122
|
-
* invoking the returned function is a no-op until a
|
|
123
|
-
* on a subsequent render.
|
|
122
|
+
* invoking the returned function is a no-op until a later render passes one.
|
|
124
123
|
* @returns A stable function with the same signature as `callback` that
|
|
125
124
|
* forwards its arguments to the most recent `callback` value.
|
|
126
125
|
*
|
|
@@ -185,7 +184,7 @@ type Options$1 = {
|
|
|
185
184
|
* the timer, so rapid successive changes collapse into a single trailing
|
|
186
185
|
* update.
|
|
187
186
|
*
|
|
188
|
-
* SSR-safe: the server render
|
|
187
|
+
* SSR-safe: the server render returns the current value (timers
|
|
189
188
|
* never run there). To debounce a function instead of a value, use
|
|
190
189
|
* {@link useDebouncedCallback}.
|
|
191
190
|
*
|
|
@@ -217,7 +216,7 @@ type Options = {
|
|
|
217
216
|
waitMs: number;
|
|
218
217
|
};
|
|
219
218
|
/**
|
|
220
|
-
* Returns a debounced version of
|
|
219
|
+
* Returns a debounced version of `callbackFn`. Each call resets a
|
|
221
220
|
* timer; the underlying callback only runs after `options.waitMs` of
|
|
222
221
|
* inactivity has elapsed.
|
|
223
222
|
*
|
package/dist/hooks.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./use-isomorphic-layout-effect-DdTRtMY-.js";import{n as t}from"./compose-refs-BdBMM9ga.js";import{t as n}from"./use-is-hydrated-DDCqXmju.js";import{t as r}from"./use-copy-to-clipboard-CSyp4Zk0.js";import{t as i}from"./use-matches-media-query-
|
|
1
|
+
import{t as e}from"./use-isomorphic-layout-effect-DdTRtMY-.js";import{n as t}from"./compose-refs-BdBMM9ga.js";import{t as n}from"./use-is-hydrated-DDCqXmju.js";import{t as r}from"./use-copy-to-clipboard-CSyp4Zk0.js";import{t as i}from"./use-callback-ref-IYti9y7x.js";import{t as a}from"./use-matches-media-query-Bd_GhhVd.js";import{n as o,t as s}from"./use-prefers-reduced-motion-Bk5zAfHY.js";import{n as c,r as l,t as u}from"./use-breakpoint-Dqu12Szq.js";import{t as d}from"./in-view-C2DpZ6s0.js";import{useCallback as f,useEffect as p,useMemo as m,useReducer as h,useRef as g,useState as _,useSyncExternalStore as v}from"react";function y(e,t){let[n,r]=_(e);return p(()=>{let n=window.setTimeout(()=>{r(e)},t.waitMs);return()=>{window.clearTimeout(n)}},[e,t.waitMs]),n}function b(e,t){let n=i(e),r=g(0);return p(()=>()=>window.clearTimeout(r.current),[]),f((...e)=>{window.clearTimeout(r.current),r.current=window.setTimeout(()=>n(...e),t.waitMs)},[n,t.waitMs])}function x(e){return function(t){function n(n){let r=n.storageArea==null||n.storageArea===window.localStorage,i=n.key==null||n.key===e;r&&i&&t()}return window.addEventListener(`storage`,n),()=>{window.removeEventListener(`storage`,n)}}}function S(){return null}function C(e,t){try{let n=JSON.parse(e);return typeof n==`string`?n:t}catch{return t}}function w(e,t){let n=m(()=>x(e),[e]),r=v(n,()=>window.localStorage.getItem(e),S);return[r==null?t:C(r,t),f(t=>{let n=JSON.stringify(t);window.localStorage.setItem(e,n),window.dispatchEvent(new StorageEvent(`storage`,{key:e,newValue:n,storageArea:window.localStorage}))},[e])]}function T(e){return function(t){function n(n){let r=n.storageArea==null||n.storageArea===window.sessionStorage,i=n.key==null||n.key===e;r&&i&&t()}return window.addEventListener(`storage`,n),()=>{window.removeEventListener(`storage`,n)}}}function E(){return null}function D(e,t){try{let n=JSON.parse(e);return typeof n==`string`?n:t}catch{return t}}function O(e,t){let n=m(()=>T(e),[e]),r=v(n,()=>window.sessionStorage.getItem(e),E);return[r==null?t:D(r,t),f(t=>{let n=JSON.stringify(t);window.sessionStorage.setItem(e,n),window.dispatchEvent(new StorageEvent(`storage`,{key:e,newValue:n,storageArea:window.sessionStorage}))},[e])]}function k(){let e=o();return m(()=>e?`auto`:`smooth`,[e])}function A(e,{root:t,margin:n,amount:r,once:i=!1,initial:a=!1}={}){let[o,s]=_(a);return p(()=>{if(!e.current||i&&o)return;function a(){return s(!0),i?void 0:()=>s(!1)}let c={root:t&&t.current||void 0,margin:n,amount:r};return d(e.current,a,c)},[t,e,n,i,r]),o}function j(){let e=g([]),t=g([]),[,n]=h(e=>e+1,0),r=f(r=>{e.current.push(r),t.current=[],n()},[]),i=f(r=>{let i=e.current[e.current.length-1];if(i!==void 0)return e.current.pop(),t.current.push(r),n(),i},[]),a=f(r=>{let i=t.current[t.current.length-1];if(i!==void 0)return t.current.pop(),e.current.push(r),n(),i},[]),o=e.current.length>0,s=t.current.length>0;return m(()=>({canUndo:o,canRedo:s,push:r,undo:i,redo:a}),[o,s,r,i,a])}export{u as breakpoints,s as getPrefersReducedMotion,c as useBreakpoint,i as useCallbackRef,t as useComposedRefs,r as useCopyToClipboard,y as useDebounce,b as useDebouncedCallback,A as useInView,l as useIsBelowBreakpoint,n as useIsHydrated,e as useIsomorphicLayoutEffect,w as useLocalStorage,a as useMatchesMediaQuery,o as usePrefersReducedMotion,k as useScrollBehavior,O as useSessionStorage,j as useUndoRedo};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{s as e}from"./theme-CVfq037P.js";import{jsx as t}from"react/jsx-runtime";import{DesktopIcon as n}from"@phosphor-icons/react/Desktop";import{MoonIcon as r}from"@phosphor-icons/react/Moon";import{SunIcon as i}from"@phosphor-icons/react/Sun";function a(n){let r=e();return t(o,{theme:r,...n})}function o({theme:e,...a}){switch(e){case`system`:return t(n,{...a});case`light`:return t(i,{...a});case`dark`:return t(r,{...a});case`light-high-contrast`:return t(i,{...a,weight:`fill`});case`dark-high-contrast`:return t(r,{...a,weight:`fill`})}}export{o as n,a as t};
|
package/dist/icons.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as SvgAttributes } from "./icon-D1RY5Tcj.js";
|
|
2
2
|
import { a as AlphanumericSortingDirection, c as TimeSortingDirection, o as SortingDirection, s as SortingMode } from "./direction-BjU0bPST.js";
|
|
3
|
-
import { i as Theme } from "./theme-
|
|
3
|
+
import { i as Theme } from "./theme-6OxNhf6l.js";
|
|
4
4
|
import { ComponentProps } from "react";
|
|
5
5
|
//#region src/components/icons/sort.d.ts
|
|
6
6
|
type Props = SvgAttributes & ({
|
|
@@ -21,8 +21,9 @@ type Props = SvgAttributes & ({
|
|
|
21
21
|
direction: TimeSortingDirection | SortingDirection;
|
|
22
22
|
});
|
|
23
23
|
/**
|
|
24
|
-
* A sorting icon that
|
|
25
|
-
*
|
|
24
|
+
* A sorting icon that indicates the sorting direction of a table column or list.
|
|
25
|
+
* The `mode` (alphanumeric or time) and the `direction` (ascending or descending)
|
|
26
|
+
* together pick the glyph.
|
|
26
27
|
*
|
|
27
28
|
* @see https://mantle.ngrok.com/components/data-display/icons
|
|
28
29
|
*
|
|
@@ -67,7 +68,7 @@ type ThemeIconProps = SvgAttributes & {
|
|
|
67
68
|
};
|
|
68
69
|
/**
|
|
69
70
|
* An icon that adapts to a specific theme.
|
|
70
|
-
* It
|
|
71
|
+
* It renders a different icon for each `theme`:
|
|
71
72
|
* - `system`: DesktopIcon
|
|
72
73
|
* - `light`: SunIcon
|
|
73
74
|
* - `dark`: MoonIcon
|
|
@@ -108,7 +109,7 @@ type InlineIconProps = Omit<ComponentProps<"svg">, "xmlns" | "fill" | "viewBox"
|
|
|
108
109
|
//#endregion
|
|
109
110
|
//#region src/components/icons/ngrok.d.ts
|
|
110
111
|
/**
|
|
111
|
-
* An inline svg icon that renders the ngrok wordmark logo.
|
|
112
|
+
* An inline svg icon that renders the ngrok wordmark logo. The `color` CSS property sets the fill.
|
|
112
113
|
*
|
|
113
114
|
* @see https://mantle.ngrok.com/components/data-display/icons
|
|
114
115
|
*
|
|
@@ -119,7 +120,7 @@ type InlineIconProps = Omit<ComponentProps<"svg">, "xmlns" | "fill" | "viewBox"
|
|
|
119
120
|
*/
|
|
120
121
|
declare function NgrokWordmarkIcon(props: Omit<InlineIconProps, "color">): import("react").JSX.Element;
|
|
121
122
|
/**
|
|
122
|
-
* An inline svg icon that renders the ngrok lettermark "n" logo.
|
|
123
|
+
* An inline svg icon that renders the ngrok lettermark "n" logo. The `color` CSS property sets the fill.
|
|
123
124
|
*
|
|
124
125
|
* @see https://mantle.ngrok.com/components/data-display/icons
|
|
125
126
|
*
|
package/dist/icons.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./icons-CF1lbWtp.js";import{t}from"./icons-B_DDQcVD.js";import{n,t as r}from"./icons-
|
|
1
|
+
import{t as e}from"./icons-CF1lbWtp.js";import{t}from"./icons-B_DDQcVD.js";import{n,t as r}from"./icons-DEVx1oP9.js";import{jsx as i}from"react/jsx-runtime";function a(e){return i(`svg`,{fill:`currentColor`,height:`1em`,viewBox:`0 0 94 36`,width:`2.61em`,...e,children:i(`path`,{d:`M32.272 12.011c-1.298-1.466-2.904-2.205-4.812-2.205-1.176 0-2.26.233-3.255.7a7.995 7.995 0 0 0-2.581 1.906 9.205 9.205 0 0 0-1.715 2.853 9.773 9.773 0 0 0-.628 3.546c0 1.25.194 2.39.58 3.419.362.98.918 1.877 1.635 2.636A7.543 7.543 0 0 0 24 26.584c.965.41 2.025.617 3.176.617.522 0 1.005-.041 1.445-.116.439-.075.858-.2 1.26-.37.4-.175.79-.398 1.18-.664.385-.27.792-.612 1.21-1.018v4.353h-.005v.421h-5.33l-4.005 4.64v.798h15.037v-24.98h-5.697v1.746Zm-.014 7.979a4.25 4.25 0 0 1-.786 1.215 3.555 3.555 0 0 1-2.592 1.1 3.627 3.627 0 0 1-1.464-.292 3.508 3.508 0 0 1-1.166-.808 3.93 3.93 0 0 1-1.054-2.72c0-.519.097-1.006.298-1.457a3.77 3.77 0 0 1 .804-1.181 4.114 4.114 0 0 1 1.162-.808 3.484 3.484 0 0 1 2.817-.016c.448.19.844.463 1.181.81.336.347.6.743.804 1.194.202.452.298.95.298 1.493 0 .505-.104 1.005-.302 1.47m-16.261-7.708a6.173 6.173 0 0 0-2.06-1.602 4.875 4.875 0 0 0-.57-.22 6.383 6.383 0 0 0-.923-.216H8.383L5.697 13.39v-3.082H.002v16.61h5.695V15.712h5.35l.444-.01v11.214h5.697V16.528c0-.885-.084-1.674-.25-2.366a4.655 4.655 0 0 0-.941-1.877zm38.367-2.018h-6.213l-2.47 2.863v-2.864h-5.7v16.61h5.71l.004-11.117h4.144l4.526-5.26zm31.051 7.672 7.79-7.392v-.281H85.7l-5.975 5.991V0h-5.696v26.87h5.696v-6.766l6.262 6.763h7.663v-.316l-8.233-8.617zm-16.11-5.78a9.436 9.436 0 0 0-3.085-1.842 10.953 10.953 0 0 0-3.855-.664c-1.407 0-2.705.226-3.884.678a9.611 9.611 0 0 0-3.072 1.858 8.488 8.488 0 0 0-2.016 2.788 8.281 8.281 0 0 0-.722 3.449c0 1.362.24 2.596.722 3.707a8.52 8.52 0 0 0 2.002 2.862c.85.798 1.86 1.415 3.036 1.847 1.177.432 2.455.647 3.842.647 1.406 0 2.707-.215 3.919-.647 1.204-.431 2.24-1.04 3.098-1.833a8.583 8.583 0 0 0 2.031-2.816c.493-1.09.742-2.29.742-3.611 0-1.316-.244-2.52-.722-3.612a8.424 8.424 0 0 0-2.035-2.81Zm-3.558 7.864c-.2.461-.463.869-.786 1.215a3.573 3.573 0 0 1-2.592 1.1c-.502 0-.981-.096-1.434-.291a3.44 3.44 0 0 1-1.16-.809 4.155 4.155 0 0 1-.788-1.215 3.825 3.825 0 0 1-.297-1.537c0-.517.098-1.004.297-1.456.201-.451.46-.849.787-1.194a3.579 3.579 0 0 1 2.597-1.1c.502 0 .98.096 1.43.29.448.19.839.461 1.16.81.328.345.586.752.786 1.214.2.461.297.954.297 1.471 0 .538-.096 1.04-.297 1.502`})})}function o(e){return i(`svg`,{fill:`currentColor`,height:`1em`,viewBox:`0 0 32 32`,width:`1em`,...e,children:i(`path`,{d:`M27.2 6.18a9.47 9.47 0 0 0-3.12-2.5A9.42 9.42 0 0 0 21.82 3h-6.14l-4.06 4.9V3.1H3V29h8.62V11.53h8.09l.67-.02v17.48H29V12.8c0-1.37-.13-2.6-.38-3.68a7.35 7.35 0 0 0-1.42-2.93Z`})})}export{r as AutoThemeIcon,o as NgrokLettermarkIcon,a as NgrokWordmarkIcon,t as SortIcon,n as ThemeIcon,e as TrafficPolicyFileIcon};
|
|
@@ -19,7 +19,7 @@ type PossibleRef<T> = Ref<T> | undefined;
|
|
|
19
19
|
*
|
|
20
20
|
* Cleanup propagation: if any inner callback ref returns a cleanup function,
|
|
21
21
|
* the composed ref returns a cleanup which invokes each inner cleanup and
|
|
22
|
-
*
|
|
22
|
+
* runs the legacy `null` write for inner refs that did not return one.
|
|
23
23
|
* If no inner ref returns a cleanup, the composed ref returns `undefined`
|
|
24
24
|
* and React calls it again with `null` on unmount (legacy behavior).
|
|
25
25
|
*
|
|
@@ -53,8 +53,8 @@ type BaseProps = WithAutoComplete & WithInputType & WithValidation;
|
|
|
53
53
|
*/
|
|
54
54
|
type InputProps = Omit<ComponentProps<"input">, "autoComplete" | "type"> & BaseProps & PropsWithChildren;
|
|
55
55
|
/**
|
|
56
|
-
*
|
|
57
|
-
*
|
|
56
|
+
* An interactive form control that accepts data from the user. Supports many
|
|
57
|
+
* input types and validation states, and composes with adornment children.
|
|
58
58
|
*
|
|
59
59
|
* @see https://mantle.ngrok.com/components/forms/input
|
|
60
60
|
*
|
package/dist/input.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { o as WithValidation, r as Validation } from "./field-7QeiTFwl.js";
|
|
2
|
-
import { a as AutoComplete, c as WithInputType, i as InputProps, n as InputCapture, o as InputType, r as InputCaptureProps, s as WithAutoComplete, t as Input } from "./input-
|
|
2
|
+
import { a as AutoComplete, c as WithInputType, i as InputProps, n as InputCapture, o as InputType, r as InputCaptureProps, s as WithAutoComplete, t as Input } from "./input-DpnC3Xgj.js";
|
|
3
3
|
import { ComponentProps } from "react";
|
|
4
4
|
//#region src/components/input/password-input.d.ts
|
|
5
5
|
type PasswordInputProps = Omit<ComponentProps<"input">, "autoComplete" | "type"> & WithValidation & WithAutoComplete & {
|
package/dist/kbd.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ import { ComponentProps } from "react";
|
|
|
17
17
|
* `<Kbd>` elements separated by `+` text instead.
|
|
18
18
|
*
|
|
19
19
|
* **Accessibility.** Symbol-only glyphs (`⌘`, `⌃`, `↵`) are not announced
|
|
20
|
-
* meaningfully by screen readers.
|
|
20
|
+
* meaningfully by screen readers. Set an accessible name via
|
|
21
21
|
* `aria-label` on the `<Kbd>` or include a visually-hidden label inside,
|
|
22
22
|
* and mark the visible glyph `aria-hidden`.
|
|
23
23
|
*
|
package/dist/line-chart.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as
|
|
1
|
+
import { _ as PointShape, a as LegendPrimitiveProps, c as XAxisPrimitiveProps, f as ChartDatum, g as CurveKind, h as ContinuousXScale, i as GridPrimitiveProps, l as YAxisPrimitiveProps, m as ChartSeriesSlot, n as ChartRootBaseProps, o as ReferenceLinePrimitiveProps, p as ChartDatumEvent, r as CopyButtonPrimitiveProps, s as TooltipPrimitiveProps, t as ChartAccessibilityProps, v as SeriesColor } from "./chart-0zcFJh4n.js";
|
|
2
2
|
//#region src/components/line-chart/line-chart.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* Props for {@link LineChart.Root}. Lines encode value by vertical position,
|
|
@@ -25,12 +25,26 @@ type LineChartLineProps = {
|
|
|
25
25
|
/** Display name for the legend, tooltip, and data table. Defaults to `dataKey`. */
|
|
26
26
|
label?: string;
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
28
|
+
* A fixed visual identity slot. Slots `1` through `8` select a paired chart
|
|
29
|
+
* color and point shape. `"other"` selects the shared neutral treatment.
|
|
30
|
+
*
|
|
31
|
+
* Series receive unreserved slots in composition order. Set `seriesSlot` to
|
|
32
|
+
* give a series a fixed visual identity.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```tsx
|
|
36
|
+
* <LineChart.Line dataKey="errors" seriesSlot={4} />
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
seriesSlot?: ChartSeriesSlot;
|
|
40
|
+
/**
|
|
41
|
+
* Override the color channel with a chart token or any CSS color. This does
|
|
42
|
+
* not change the series slot or its paired point shape. When omitted, the
|
|
43
|
+
* series paints the color from its slot.
|
|
44
|
+
*
|
|
45
|
+
* A static color (raw hex) cannot follow the four themes, so prefer a
|
|
46
|
+
* `var(--your-token)` declared per theme. A series that carries good/bad
|
|
47
|
+
* meaning should wear the semantic status colors, never a categorical slot.
|
|
34
48
|
*/
|
|
35
49
|
color?: SeriesColor;
|
|
36
50
|
/**
|
|
@@ -49,9 +63,12 @@ type LineChartLineProps = {
|
|
|
49
63
|
*/
|
|
50
64
|
connectNulls?: boolean;
|
|
51
65
|
/**
|
|
52
|
-
* The glyph the hover dot
|
|
53
|
-
* `"
|
|
54
|
-
*
|
|
66
|
+
* The glyph the hover dot, the canvas point markers, and the legend key
|
|
67
|
+
* wear: `"circle"`, `"square"`, `"triangle"`, `"diamond"`,
|
|
68
|
+
* `"triangle-down"`, `"plus"`, `"cross"`, or `"star"`. Shape is a redundant
|
|
69
|
+
* encoding alongside color that keeps series distinguishable without color
|
|
70
|
+
* vision. When omitted, the series wears the glyph paired to its series
|
|
71
|
+
* slot, so both channels name one slot.
|
|
55
72
|
*/
|
|
56
73
|
shape?: PointShape;
|
|
57
74
|
};
|
|
@@ -93,6 +110,15 @@ type LineChartCopyButtonProps = CopyButtonPrimitiveProps;
|
|
|
93
110
|
* Rendering is canvas with min/max decimation, so series of 100k+ points stay
|
|
94
111
|
* smooth. Compose the chrome and series parts as children.
|
|
95
112
|
*
|
|
113
|
+
* The Root's own subtree is addressable by slot: `line-chart` on the wrapper,
|
|
114
|
+
* then `line-chart-plot`, `line-chart-canvas`, `line-chart-crosshair`,
|
|
115
|
+
* `line-chart-hover-band`, `line-chart-markers`, `line-chart-tooltip`, and
|
|
116
|
+
* `line-chart-data-table`. A line chart shows the crosshair and one marker dot
|
|
117
|
+
* per series, and never the band, but all three layers mount on every kind.
|
|
118
|
+
* Each hover dot carries `chart-active-point` plus a `data-shape` of
|
|
119
|
+
* `"circle"`, `"square"`, `"triangle"`, `"diamond"`, `"triangle-down"`,
|
|
120
|
+
* `"plus"`, `"cross"`, or `"star"`, naming the glyph its series wears.
|
|
121
|
+
*
|
|
96
122
|
* @see https://mantle.ngrok.com/components/charts/line-chart#linechartroot
|
|
97
123
|
*
|
|
98
124
|
* @example
|
|
@@ -210,9 +236,9 @@ declare const YAxis: (props: LineChartYAxisProps) => null;
|
|
|
210
236
|
declare const ReferenceLine: (props: LineChartReferenceLineProps) => null;
|
|
211
237
|
/**
|
|
212
238
|
* Customizes the hover/keyboard tooltip readout. The tooltip itself is part
|
|
213
|
-
* of `LineChart.Root`'s interaction contract and renders
|
|
214
|
-
*
|
|
215
|
-
*
|
|
239
|
+
* of `LineChart.Root`'s interaction contract and renders even when this part
|
|
240
|
+
* is absent — compose it to format the label or values, append a footer, or
|
|
241
|
+
* replace the content entirely via the render-prop `children`.
|
|
216
242
|
*
|
|
217
243
|
* @see https://mantle.ngrok.com/components/charts/line-chart#linecharttooltip
|
|
218
244
|
*
|
|
@@ -235,6 +261,13 @@ declare const Tooltip: (props: LineChartTooltipProps) => null;
|
|
|
235
261
|
* must never rely on color-matching alone. It renders nothing for a single
|
|
236
262
|
* series (the chart's title already names it).
|
|
237
263
|
*
|
|
264
|
+
* **Data attributes:**
|
|
265
|
+
*
|
|
266
|
+
* | Data Attribute | Value | Description |
|
|
267
|
+
* | --- | --- | --- |
|
|
268
|
+
* | `data-slot` | `"line-chart-legend"` | The legend list. `LineChart.Legend` renders it in flow below the plot. |
|
|
269
|
+
* | `data-shape` | `"circle"` \| `"square"` \| `"triangle"` \| `"diamond"` \| `"triangle-down"` \| `"plus"` \| `"cross"` \| `"star"` | On the glyph riding each swatch's stroke, naming what its `LineChart.Line` wears — the `shape` it set, else the one paired to its series slot. The glyph clips itself to that shape, so target this only to restyle a key. |
|
|
270
|
+
*
|
|
238
271
|
* @see https://mantle.ngrok.com/components/charts/line-chart#linechartlegend
|
|
239
272
|
*
|
|
240
273
|
* @example
|
|
@@ -280,6 +313,20 @@ declare const CopyButton: (props: LineChartCopyButtonProps) => import("react").J
|
|
|
280
313
|
* announcements, and an sr-only data table — ships with `Root`
|
|
281
314
|
* unconditionally. Min/max decimation keeps 100k+ point series smooth.
|
|
282
315
|
*
|
|
316
|
+
* **CSS variables (public API):**
|
|
317
|
+
*
|
|
318
|
+
* | CSS Variable | Default | Description |
|
|
319
|
+
* | --- | --- | --- |
|
|
320
|
+
* | `--color-chart-1` … `--color-chart-8` | per theme | The validated categorical series slots, in assignment order. |
|
|
321
|
+
* | `--color-chart-other` | `--color-neutral-500` | The neutral overflow slot a series wears once every slot is held. |
|
|
322
|
+
*
|
|
323
|
+
* Two ways to change a series color, both public API. The `color` prop on
|
|
324
|
+
* `LineChart.Line` sets one series and takes any CSS color. To restyle a slot itself,
|
|
325
|
+
* redeclare its token on `Root` —
|
|
326
|
+
* `className="[--color-chart-1:var(--color-brand)]"`. The engine resolves every
|
|
327
|
+
* token through a probe inside `Root`, so a declaration scoped there wins for
|
|
328
|
+
* that chart and leaves every other chart on the page alone.
|
|
329
|
+
*
|
|
283
330
|
* @see https://mantle.ngrok.com/components/charts/line-chart
|
|
284
331
|
*
|
|
285
332
|
* @example
|
package/dist/line-chart.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c}from"./chart-
|
|
1
|
+
import{a as e,c as t,i as n,l as r,n as i,o as a,r as o,s,t as c}from"./chart-DBxT9BNl.js";import{jsx as l}from"react/jsx-runtime";const u={Root:e=>l(o,{kind:`line`,componentName:`LineChart`,slotName:`line-chart`,...e}),Line:e=>a(`LineChart.Line`,`line`,e),Grid:e=>n(`LineChart.Grid`,e),XAxis:e=>t(`LineChart.XAxis`,e),YAxis:e=>r(`LineChart.YAxis`,e),ReferenceLine:t=>e(`LineChart.ReferenceLine`,t),Tooltip:e=>s(`LineChart.Tooltip`,e),Legend:e=>l(i,{partName:`LineChart.Legend`,slotName:`line-chart`,...e}),CopyButton:e=>l(c,{partName:`LineChart.CopyButton`,slotName:`line-chart`,...e})};export{u as LineChart};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./compose-refs-BdBMM9ga.js";import{t}from"./cx-IiQEAKf5.js";import{t as n}from"./slot-DpNWVci8.js";import{Children as r,createContext as i,isValidElement as a,useCallback as o,useContext as s,useEffect as c,useId as l,useMemo as u,useRef as d,useState as f}from"react";import p from"tiny-invariant";import{jsx as m}from"react/jsx-runtime";import{useVirtualizer as h}from"@tanstack/react-virtual";const g=i(null);function _(e){let t=s(g);return p(t,`List.${e} must be composed inside List.Root / List.VirtualRoot (or a SelectableList viewport).`),t}const v=i(null),y=i(null);function b(e){return a(e)?e.props.disabled===!0:!1}function x({start:e,step:t,count:n,isItemDisabled:r}){for(let i=e;i>=0&&i<n;i+=t)if(!r(i))return i;return-1}const S=`a[href]:not([tabindex="-1"]), button:not(:disabled):not([tabindex="-1"]), [tabindex]:not([tabindex="-1"])`;function C(e){let t=e.matches(S)?e:e.querySelector(S);return t instanceof HTMLElement?t:null}function w(e){let t=e instanceof Element?e.closest(`[data-index]`):null;if(t==null)return null;let n=Number(t.getAttribute(`data-index`));return!Number.isInteger(n)||n<0?null:{item:t,index:n}}function T(e,t){if(!(e instanceof Element))return!1;let n=e.closest(`a[href], button, input, select, textarea, label, [role="button"], [role="link"], [role="menuitem"], [contenteditable="true"]`);return n!=null&&t.contains(n)}function E({count:e,isItemDisabled:t,focusItemAt:n}){return{onKeyDown:r=>{if(r.target instanceof HTMLElement&&(r.target.isContentEditable||r.target.tagName===`INPUT`||r.target.tagName===`TEXTAREA`||r.target.tagName===`SELECT`)||r.altKey||r.ctrlKey||r.metaKey)return;let i=w(r.target);if(i==null)return;let a=-1,o=1;switch(r.key){case`ArrowDown`:o=1,a=x({start:i.index+1,step:o,count:e,isItemDisabled:t});break;case`ArrowUp`:o=-1,a=x({start:i.index-1,step:o,count:e,isItemDisabled:t});break;case`Home`:o=1,a=x({start:0,step:o,count:e,isItemDisabled:t});break;case`End`:o=-1,a=x({start:e-1,step:o,count:e,isItemDisabled:t});break;default:return}r.preventDefault(),a>=0&&a!==i.index&&n(a,o)}}}function D({count:e,enabled:t,isItemDisabled:n,onActivate:r,itemId:i,scrollToIndex:a}){let[o,s]=f(-1),l=d(!1),u=o>=e?e-1:o;if(c(()=>{o>=e&&s(e-1)},[o,e]),!t)return{activeIndex:-1,collectionProps:{}};let p=e=>n?.(e)??!1,m=(t,n)=>x({start:t,step:n,count:e,isItemDisabled:p}),h=e=>{e<0||(s(e),a(e))};return{activeIndex:u,collectionProps:{tabIndex:0,"aria-activedescendant":u>=0?i(u):void 0,onMouseDown:e=>{let t=w(e.target);if(t!=null&&!p(t.index)){s(t.index),l.current=!1;return}l.current=!0},onClick:e=>{if(e.defaultPrevented)return;let t=w(e.target);t==null||p(t.index)||T(e.target,t.item)||(s(t.index),r?.(t.index))},onFocus:t=>{if(t.target!==t.currentTarget){let e=w(t.target);e!=null&&!p(e.index)&&s(e.index),t.target instanceof HTMLElement&&t.target.tabIndex>=0||t.currentTarget.focus({preventScroll:!0}),l.current=!1;return}let n=l.current;l.current=!1,e>0&&!n&&s(e=>e<0?m(0,1):e)},onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||(s(-1),l.current=!1)},onKeyDown:t=>{if(t.target===t.currentTarget&&!(t.altKey||t.ctrlKey||t.metaKey))switch(l.current=!1,t.key){case`ArrowDown`:t.preventDefault(),h(m(u<0?0:u+1,1));break;case`ArrowUp`:t.preventDefault(),h(u<0?m(0,1):m(u-1,-1));break;case`Home`:t.preventDefault(),h(m(0,1));break;case`End`:t.preventDefault(),h(m(e-1,-1));break;case` `:case`Enter`:!t.repeat&&u>=0&&!p(u)&&(t.preventDefault(),r?.(u))}}}}}function O({count:e,focusItemAt:t,isItemDisabled:n,onActivate:r,itemId:i,scrollToIndex:a,semantics:o}){let s=l(),c=u(()=>({semantics:o}),[o]),d=u(()=>i??(e=>`${s}-item-${e}`),[i,s]),{activeIndex:f,collectionProps:p}=D({count:e,enabled:o===`grid`,isItemDisabled:n,onActivate:r,itemId:d,scrollToIndex:a}),m=u(()=>({activeIndex:f,stampItemId:i==null?d:null}),[f,d,i]);return{collectionProps:o===`list`?E({count:e,isItemDisabled:n,focusItemAt:t}):p,gridNav:m,listContext:c}}function k({"aria-label":e,"aria-labelledby":n,"aria-multiselectable":r,children:i,className:a,collectionProps:o,gridNav:s,listContext:c,viewportProps:l,ref:u}){return m(g.Provider,{value:c,children:m(y.Provider,{value:s,children:m(`div`,{ref:u,"data-slot":`list`,className:t(`border-popover bg-popover scrollbar overscroll-none overflow-x-hidden overflow-y-auto rounded-md border p-1`,a),...l,children:m(`div`,{"data-slot":`list-collection`,role:c.semantics===`grid`?`grid`:`list`,"aria-label":e,"aria-labelledby":n,"aria-multiselectable":r,className:`relative flex w-full flex-col gap-px outline-hidden`,...o,children:i})})})})}const A=({asChild:r,children:i,className:a,disabled:o=!1,ref:c,selected:l=!1,style:u,...d})=>{let{semantics:f}=_(`Item`),p=s(v),h=s(y),g=f===`grid`,b=r?n:`div`,x=p?.placement??null,S=p?.index,C=g&&h!=null&&S!=null&&h.activeIndex===S,w=x?.measureRef??null,T=e(c,w);return m(b,{ref:T,"data-slot":`list-item`,...d,id:g&&S!=null&&h?.stampItemId!=null?h.stampItemId(S):d.id,"data-index":S,"data-state":l?`selected`:`unselected`,"data-disabled":o||void 0,"data-active":C||void 0,role:g?`row`:`listitem`,"aria-selected":g?l:void 0,"aria-disabled":g&&o?!0:d[`aria-disabled`],"aria-rowindex":g?x?.posInSet:void 0,"aria-posinset":g?void 0:x?.posInSet,"aria-setsize":g?void 0:x?.setSize,className:t(`rounded-md data-[state=selected]:bg-selected-menu-item data-[active]:bg-active-menu-item data-[active]:data-[state=selected]:bg-active-selected-menu-item`,!o&&`hover:bg-active-menu-item hover:data-[state=selected]:bg-active-selected-menu-item`,!g&&!o&&`has-[:focus-visible]:bg-active-menu-item has-[:focus-visible]:data-[state=selected]:bg-active-selected-menu-item`,a),style:x?{...u,...x.style}:u,children:i})};function j({children:e,index:t}){let n=u(()=>({index:t,placement:null}),[t]);return m(v.Provider,{value:n,children:e})}const M=({"aria-label":t,"aria-labelledby":n,"aria-multiselectable":i,children:s,className:c,isItemDisabled:l,onActivate:f,itemId:p,ref:h,semantics:g=`list`,..._})=>{let v=d(null),y=e(v,h),x=u(()=>r.toArray(s).filter(a),[s]),S=o(e=>{v.current?.querySelector(`[data-index="${e}"]`)?.scrollIntoView({block:`nearest`})},[]),w=o((e,t)=>{let n=v.current;if(n!=null)for(let r=e;r>=0&&r<x.length;r+=t){let e=n.querySelector(`[data-index="${r}"]`);if(e==null)continue;let t=C(e);if(t!=null){t.focus({preventScroll:!0}),e.scrollIntoView({block:`nearest`});return}}},[x.length]),{collectionProps:T,gridNav:E,listContext:D}=O({count:x.length,focusItemAt:w,isItemDisabled:l??(e=>b(x[e])),onActivate:f,itemId:p,scrollToIndex:S,semantics:g});return m(k,{"aria-label":t,"aria-labelledby":n,"aria-multiselectable":i,className:c,collectionProps:T,gridNav:E,listContext:D,viewportProps:_,ref:y,children:x.map((e,t)=>m(j,{index:t,children:e},e.key??t))})};function N({virtualItem:e,count:t,measureRef:n}){return{posInSet:e.index+1,setSize:t,measureRef:n,style:{position:`absolute`,left:0,top:0,width:`100%`,transform:`translateY(${e.start}px)`}}}function P({children:e,count:t,measureRef:n,virtualItem:r}){let i=u(()=>({index:r.index,placement:N({virtualItem:r,count:t,measureRef:n})}),[r,t,n]);return m(v.Provider,{value:i,children:e})}const F=({"aria-label":t,"aria-labelledby":n,"aria-multiselectable":i,children:s,className:l,estimateItemHeight:f=44,isItemDisabled:p,onActivate:g,overscan:_=8,itemId:v,ref:y,semantics:x=`list`,...S})=>{let w=d(null),T=e(w,y),E=u(()=>r.toArray(s).filter(a),[s]),D=E.length,A=h({count:D,getScrollElement:()=>w.current,estimateSize:()=>f,getItemKey:e=>E[e]?.key??e,overscan:_,gap:1}),j=o(e=>A.scrollToIndex(e,{align:`auto`}),[A]),M=d(null);c(()=>()=>{M.current!=null&&cancelAnimationFrame(M.current)},[]);let{collectionProps:N,gridNav:F,listContext:I}=O({count:D,focusItemAt:o((e,t)=>{M.current!=null&&(cancelAnimationFrame(M.current),M.current=null);let n=e,r=0,i=()=>{M.current=null;let e=w.current;if(e==null||n<0||n>=D)return;A.scrollToIndex(n,{align:`auto`});let a=e.querySelector(`[data-index="${n}"]`);if(a!=null){let e=C(a);if(e!=null){e.focus({preventScroll:!0});return}n+=t,r=0}r+=1,r<10&&(M.current=requestAnimationFrame(i))};i()},[D,A]),isItemDisabled:p??(e=>b(E[e])),onActivate:g,itemId:v,scrollToIndex:j,semantics:x}),L=A.getVirtualItems(),R=L.some(e=>e.index===F.activeIndex);return m(k,{"aria-label":t,"aria-labelledby":n,"aria-multiselectable":i,className:l,collectionProps:{...N,"aria-activedescendant":R?N[`aria-activedescendant`]:void 0,"aria-rowcount":x===`grid`?D:void 0,style:{height:`${A.getTotalSize()}px`}},gridNav:F,listContext:I,viewportProps:S,ref:T,children:L.map(e=>{let t=E[e.index];return t==null?null:m(P,{virtualItem:e,count:D,measureRef:A.measureElement,children:t},e.key)})})};export{A as n,M as r,F as t};
|
package/dist/list.d.ts
CHANGED
|
@@ -212,8 +212,8 @@ type ListItemProps = Omit<ComponentProps<"button">, "type"> & WithAsChild & {
|
|
|
212
212
|
* from the internal list primitive; renders a `<button>` by default (with
|
|
213
213
|
* `onClick`), or your own element via `asChild` — e.g. an `<a>` for navigation
|
|
214
214
|
* (account switching, SSO selection). The button/link fills its pill, so
|
|
215
|
-
* clicking anywhere on the item triggers it, and the
|
|
216
|
-
*
|
|
215
|
+
* clicking anywhere on the item triggers it, and the enclosing listitem carries
|
|
216
|
+
* the pill's hover / `current` accent.
|
|
217
217
|
*
|
|
218
218
|
* @see https://mantle.ngrok.com/components/data-display/list
|
|
219
219
|
*
|
package/dist/list.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./slot-DpNWVci8.js";import{n,r,t as i}from"./list-
|
|
1
|
+
import{t as e}from"./cx-IiQEAKf5.js";import{t}from"./slot-DpNWVci8.js";import{n,r,t as i}from"./list-CwL23L_B.js";import{jsx as a}from"react/jsx-runtime";const o={Root:e=>a(r,{semantics:`list`,...e}),VirtualRoot:e=>a(i,{semantics:`list`,...e}),Item:({asChild:r,className:i,current:o,disabled:s,onClick:c,ref:l,...u})=>a(n,{selected:o,disabled:s,children:a(r?t:`button`,{ref:l,"data-slot":`list-item-control`,"aria-current":o||void 0,...r?{"aria-disabled":s||void 0,tabIndex:s?-1:void 0}:{type:`button`,disabled:s},onClick:e=>{if(r&&s){e.preventDefault(),e.stopPropagation();return}c?.(e)},className:e(`flex w-full cursor-pointer flex-col gap-0.5 rounded-md bg-transparent px-2 py-1.5 text-left text-sm`,`disabled:cursor-default disabled:opacity-50 aria-disabled:cursor-default aria-disabled:opacity-50 aria-disabled:pointer-events-none`,`focus-visible:outline-hidden`,i),...u,onClickCapture:r&&s?e=>{e.preventDefault(),e.stopPropagation()}:u.onClickCapture})}),ItemTitle:({className:t,ref:n,...r})=>a(`span`,{ref:n,"data-slot":`list-item-title`,className:e(`text-strong font-medium`,t),...r}),ItemDescription:({className:t,ref:n,...r})=>a(`span`,{ref:n,"data-slot":`list-item-description`,className:e(`text-body leading-4`,t),...r})};export{o as List};
|
package/dist/llms.txt
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# @ngrok/mantle (0.
|
|
1
|
+
# @ngrok/mantle (0.83.1)
|
|
2
2
|
|
|
3
3
|
> Offline discovery hint shipped inside the @ngrok/mantle npm package. Authoritative metadata lives at https://mantle.ngrok.com/for-ai-agents.
|
|
4
4
|
|
|
@@ -26,6 +26,7 @@ Full text: https://mantle.ngrok.com/llms-full.txt
|
|
|
26
26
|
- `@ngrok/mantle/anchor`
|
|
27
27
|
- `@ngrok/mantle/app-layout`
|
|
28
28
|
- `@ngrok/mantle/area-chart`
|
|
29
|
+
- `@ngrok/mantle/avatar`
|
|
29
30
|
- `@ngrok/mantle/badge`
|
|
30
31
|
- `@ngrok/mantle/bar-chart`
|
|
31
32
|
- `@ngrok/mantle/breadcrumb`
|
|
@@ -68,6 +69,7 @@ Full text: https://mantle.ngrok.com/llms-full.txt
|
|
|
68
69
|
- `@ngrok/mantle/progress`
|
|
69
70
|
- `@ngrok/mantle/qr-code`
|
|
70
71
|
- `@ngrok/mantle/radio-group`
|
|
72
|
+
- `@ngrok/mantle/sandbar`
|
|
71
73
|
- `@ngrok/mantle/sandboxed-on-click`
|
|
72
74
|
- `@ngrok/mantle/scatter-plot`
|
|
73
75
|
- `@ngrok/mantle/select`
|
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
MARK: DARK HICON DEFS
|
|
3
|
+
|
|
4
|
+
The last selector applies this entire block to `.invert-theme` subtrees on
|
|
5
|
+
light-high-contrast pages: an inverted island is the opposite theme's own
|
|
6
|
+
definitions re-declared on the island element. See MARK: INVERT THEME in
|
|
7
|
+
mantle.css for the full strategy.
|
|
3
8
|
*/
|
|
4
9
|
:root.dark-high-contrast,
|
|
5
|
-
:root[data-theme="dark-high-contrast"],
|
|
6
|
-
:root[data-applied-theme="dark-high-contrast"]
|
|
10
|
+
:root[data-theme="dark-high-contrast"]:not([data-applied-theme]),
|
|
11
|
+
:root[data-applied-theme="dark-high-contrast"],
|
|
12
|
+
:root:is(
|
|
13
|
+
.light-high-contrast,
|
|
14
|
+
[data-theme="light-high-contrast"]:not([data-applied-theme]),
|
|
15
|
+
[data-applied-theme="light-high-contrast"]
|
|
16
|
+
)
|
|
17
|
+
.invert-theme {
|
|
7
18
|
color-scheme: dark;
|
|
8
19
|
|
|
9
20
|
/* Semantic colors: white becomes black and black becomes white in dark mode */
|
|
@@ -284,21 +295,23 @@ MARK: DARK HICON DEFS
|
|
|
284
295
|
--color-selected-menu-item: var(--color-accent-50);
|
|
285
296
|
--color-active-selected-menu-item: var(--color-accent-100);
|
|
286
297
|
|
|
287
|
-
/* Chart series tokens — dark-high-contrast
|
|
288
|
-
|
|
289
|
-
(
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
--color-chart-
|
|
297
|
-
--color-chart-
|
|
298
|
-
--color-chart-
|
|
299
|
-
--color-chart-
|
|
300
|
-
--color-chart-
|
|
301
|
-
--color-chart-
|
|
298
|
+
/* Chart series tokens — dark-high-contrast's eight marks, in slot order: blue,
|
|
299
|
+
green, pink, red-orange, teal, magenta, violet, amber. Measured on the card
|
|
300
|
+
surface (#121212): worst pair ΔE 15.05 for full-color vision, 9.57 under
|
|
301
|
+
simulated protanopia or deuteranopia, 6.76:1 lowest contrast. All eight marks
|
|
302
|
+
sit above the standard dark lightness ceiling (L 0.67) on purpose. At that
|
|
303
|
+
ceiling only a narrow green window — hue 141 to 151 — reaches the 6.76:1 this
|
|
304
|
+
theme holds, and all eight hues below fall outside it. Each caps under the
|
|
305
|
+
floor there, the magenta lowest at 6.27:1.
|
|
306
|
+
chart/tokens.test.ts records that waiver and runs every other gate unwaived. */
|
|
307
|
+
--color-chart-1: oklch(0.689 0.171 248.8); /* #2da0ff */
|
|
308
|
+
--color-chart-2: oklch(0.673 0.163 155.7); /* #07b269 */
|
|
309
|
+
--color-chart-3: oklch(0.813 0.107 12.6); /* #ffa5af */
|
|
310
|
+
--color-chart-4: oklch(0.71 0.19 42.7); /* #ff702c */
|
|
311
|
+
--color-chart-5: oklch(0.898 0.107 195.2); /* #7ef4f3 */
|
|
312
|
+
--color-chart-6: oklch(0.717 0.198 344.4); /* #f567c1 */
|
|
313
|
+
--color-chart-7: oklch(0.803 0.1 279.4); /* #b1b8ff */
|
|
314
|
+
--color-chart-8: oklch(0.835 0.133 88.5); /* #ecc458 */
|
|
302
315
|
--color-chart-other: var(--color-neutral-500);
|
|
303
316
|
|
|
304
317
|
--text-color-strong: var(--color-black);
|