'use client'; import { __resetStyles, __styles, mergeClasses, shorthands } from '@griffel/react'; import { tokens, typographyStyles } from '@fluentui/react-theme'; export const spinButtonClassNames = { root: 'fui-SpinButton', input: 'fui-SpinButton__input', incrementButton: 'fui-SpinButton__incrementButton', decrementButton: 'fui-SpinButton__decrementButton' }; const spinButtonExtraClassNames = { buttonActive: 'fui-SpinButton__button_active' }; const fieldHeights = { small: '24px', medium: '32px' }; const useRootClassName = /*#__PURE__*/__resetStyles("r109xulx", "r1h2jnch", { r: [".r109xulx{display:inline-grid;grid-template-columns:1fr 24px;grid-template-rows:1fr 1fr;column-gap:var(--spacingHorizontalXS);row-gap:0;position:relative;isolation:isolate;vertical-align:middle;background-color:var(--colorNeutralBackground1);min-height:32px;padding:0 0 0 var(--spacingHorizontalMNudge);border-radius:var(--borderRadiusMedium);}", ".r109xulx::before{content:\"\";box-sizing:border-box;position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10;border:1px solid var(--colorNeutralStroke1);border-bottom-color:var(--colorNeutralStrokeAccessible);border-radius:var(--borderRadiusMedium);}", ".r109xulx::after{box-sizing:border-box;content:\"\";position:absolute;right:0;bottom:0;left:0;z-index:20;height:max(2px, var(--borderRadiusMedium));border-bottom-left-radius:var(--borderRadiusMedium);border-bottom-right-radius:var(--borderRadiusMedium);border-bottom:2px solid var(--colorCompoundBrandStroke);clip-path:inset(calc(100% - 2px) 0 0 0);transform:scaleX(0);transition-property:transform;transition-duration:var(--durationUltraFast);transition-delay:var(--curveAccelerateMid);}", ".r109xulx:focus-within::after{transform:scaleX(1);transition-property:transform;transition-duration:var(--durationNormal);transition-delay:var(--curveDecelerateMid);}", ".r109xulx:focus-within:active::after{border-bottom-color:var(--colorCompoundBrandStrokePressed);}", ".r109xulx:focus-within{outline:2px solid transparent;}", ".r1h2jnch{display:inline-grid;grid-template-columns:1fr 24px;grid-template-rows:1fr 1fr;column-gap:var(--spacingHorizontalXS);row-gap:0;position:relative;isolation:isolate;vertical-align:middle;background-color:var(--colorNeutralBackground1);min-height:32px;padding:0 var(--spacingHorizontalMNudge) 0 0;border-radius:var(--borderRadiusMedium);}", ".r1h2jnch::before{content:\"\";box-sizing:border-box;position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none;z-index:10;border:1px solid var(--colorNeutralStroke1);border-bottom-color:var(--colorNeutralStrokeAccessible);border-radius:var(--borderRadiusMedium);}", ".r1h2jnch::after{box-sizing:border-box;content:\"\";position:absolute;left:0;bottom:0;right:0;z-index:20;height:max(2px, var(--borderRadiusMedium));border-bottom-right-radius:var(--borderRadiusMedium);border-bottom-left-radius:var(--borderRadiusMedium);border-bottom:2px solid var(--colorCompoundBrandStroke);clip-path:inset(calc(100% - 2px) 0 0 0);transform:scaleX(0);transition-property:transform;transition-duration:var(--durationUltraFast);transition-delay:var(--curveAccelerateMid);}", ".r1h2jnch:focus-within::after{transform:scaleX(1);transition-property:transform;transition-duration:var(--durationNormal);transition-delay:var(--curveDecelerateMid);}", ".r1h2jnch:focus-within:active::after{border-bottom-color:var(--colorCompoundBrandStrokePressed);}", ".r1h2jnch:focus-within{outline:2px solid transparent;}"], s: ["@media screen and (prefers-reduced-motion: reduce){.r109xulx::after{transition-duration:0.01ms;transition-delay:0.01ms;}}", "@media screen and (prefers-reduced-motion: reduce){.r109xulx:focus-within::after{transition-duration:0.01ms;transition-delay:0.01ms;}}", "@media screen and (prefers-reduced-motion: reduce){.r1h2jnch::after{transition-duration:0.01ms;transition-delay:0.01ms;}}", "@media screen and (prefers-reduced-motion: reduce){.r1h2jnch:focus-within::after{transition-duration:0.01ms;transition-delay:0.01ms;}}"] }); const useRootStyles = /*#__PURE__*/__styles({ small: { sshi5w: "f1pha7fy", Bahqtrf: "fk6fouc", Be2twd7: "fy9rknc", Bhrd7zp: "figsok6", Bg96gwp: "fwrc4pm", uwmqm3: ["f1f5gg8d", "f1vdfbxk"] }, medium: {}, outline: {}, outlineInteractive: { Bo3r8zu: "f1w2y1rc", Hpvxnh: ["f1gofhvl", "f18htlvq"], Bx11ytk: "ffcnd28", B1rg0w0: ["f18htlvq", "f1gofhvl"], Bsg1tlv: "f6lmxco", Brjw370: ["fcoc0mf", "f15r4wkl"], xcfy85: "f1ipdth8", Bcc6kan: ["f15r4wkl", "fcoc0mf"] }, underline: { B0qfbqy: "f1o236ok", B4f6apu: ["faeg28l", "f64aojp"], y0oebl: "fdw6hkg", uvfttm: ["f64aojp", "faeg28l"], r59vdv: 0, Budzafs: 0, ck0cow: 0, n07z76: 0, Gng75u: "f1xyh2jw" }, underlineInteractive: { Bx11ytk: "ffcnd28", xcfy85: "f1ipdth8", d9w3h3: 0, B3778ie: 0, B4j8arr: 0, Bl18szs: 0, Blrzh8d: "fkp7w9h" }, filled: { Bcgcnre: 0, Bqjgrrk: 0, qa3bma: 0, y0oebl: 0, Biqmznv: 0, Bm6vgfq: 0, Bbv0w2i: 0, uvfttm: 0, eqrjj: 0, Bk5zm6e: 0, m598lv: 0, B4f6apu: 0, ydt019: 0, Bq4z7u6: 0, Bdkvgpv: 0, B0qfbqy: 0, kj8mxx: "f1kc0wz4" }, "filled-darker": { De3pzq: "f16xq7d1" }, "filled-lighter": { De3pzq: "fxugw4r" }, filledInteractive: { B05mzqr: "f1xqt08", tb9y6h: ["fzt5lgo", "f8tv3r9"], jcehpj: "fyhrops", B23o0hn: ["f8tv3r9", "fzt5lgo"] }, invalid: { emecyz: "fl48pg9", lz0pba: ["f1a168p3", "f1pvdymy"], Bo1k74p: "f11knvgl", Ba322q7: ["f1pvdymy", "f1a168p3"] }, disabled: { Bceei9c: "fdrzuqr", De3pzq: "f1c21dwh", Bq4z7u6: "f1a0lfh7", Bk5zm6e: ["f1p2ejm6", "fmzytvz"], Bqjgrrk: "fas2e61", Bm6vgfq: ["fmzytvz", "f1p2ejm6"], Bvljrlq: "f1p5b8em", Cqojjj: ["fs6f9xf", "f11b7h5x"], G3zxag: "f1vrn6tw", H8270r: ["f11b7h5x", "fs6f9xf"] } }, { d: [".f1pha7fy{min-height:24px;}", ".fk6fouc{font-family:var(--fontFamilyBase);}", ".fy9rknc{font-size:var(--fontSizeBase200);}", ".figsok6{font-weight:var(--fontWeightRegular);}", ".fwrc4pm{line-height:var(--lineHeightBase200);}", ".f1f5gg8d{padding-left:var(--spacingHorizontalS);}", ".f1vdfbxk{padding-right:var(--spacingHorizontalS);}", ".f1o236ok::before{border-top-width:0;}", ".faeg28l::before{border-right-width:0;}", ".f64aojp::before{border-left-width:0;}", ".fdw6hkg::before{border-bottom-width:1px;}", [".f1xyh2jw::before{border-radius:var(--borderRadiusNone);}", { p: -1 }], [".fkp7w9h::after{border-radius:var(--borderRadiusNone);}", { p: -1 }], [".f1kc0wz4::before{border:1px solid var(--colorTransparentStroke);}", { p: -2 }], ".f16xq7d1{background-color:var(--colorNeutralBackground3);}", ".fxugw4r{background-color:var(--colorNeutralBackground1);}", ".fl48pg9:not(:focus-within)::before,.fl48pg9:hover:not(:focus-within)::before{border-top-color:var(--colorPaletteRedBorder2);}", ".f1a168p3:not(:focus-within)::before,.f1a168p3:hover:not(:focus-within)::before{border-right-color:var(--colorPaletteRedBorder2);}", ".f1pvdymy:not(:focus-within)::before,.f1pvdymy:hover:not(:focus-within)::before{border-left-color:var(--colorPaletteRedBorder2);}", ".f11knvgl:not(:focus-within)::before,.f11knvgl:hover:not(:focus-within)::before{border-bottom-color:var(--colorPaletteRedBorder2);}", ".fdrzuqr{cursor:not-allowed;}", ".f1c21dwh{background-color:var(--colorTransparentBackground);}", ".f1a0lfh7::before{border-top-color:var(--colorNeutralStrokeDisabled);}", ".f1p2ejm6::before{border-right-color:var(--colorNeutralStrokeDisabled);}", ".fmzytvz::before{border-left-color:var(--colorNeutralStrokeDisabled);}", ".fas2e61::before{border-bottom-color:var(--colorNeutralStrokeDisabled);}"], h: [".f1w2y1rc:hover::before{border-top-color:var(--colorNeutralStroke1Hover);}", ".f1gofhvl:hover::before{border-right-color:var(--colorNeutralStroke1Hover);}", ".f18htlvq:hover::before{border-left-color:var(--colorNeutralStroke1Hover);}", ".ffcnd28:hover::before{border-bottom-color:var(--colorNeutralStrokeAccessibleHover);}", ".f1xqt08:hover::before,.f1xqt08:focus-within::before{border-top-color:var(--colorTransparentStrokeInteractive);}", ".fzt5lgo:hover::before,.fzt5lgo:focus-within::before{border-right-color:var(--colorTransparentStrokeInteractive);}", ".f8tv3r9:hover::before,.f8tv3r9:focus-within::before{border-left-color:var(--colorTransparentStrokeInteractive);}", ".fyhrops:hover::before,.fyhrops:focus-within::before{border-bottom-color:var(--colorTransparentStrokeInteractive);}"], a: [".f6lmxco:active::before,.f6lmxco:focus-within::before{border-top-color:var(--colorNeutralStroke1Pressed);}", ".fcoc0mf:active::before,.fcoc0mf:focus-within::before{border-right-color:var(--colorNeutralStroke1Pressed);}", ".f15r4wkl:active::before,.f15r4wkl:focus-within::before{border-left-color:var(--colorNeutralStroke1Pressed);}", ".f1ipdth8:active::before,.f1ipdth8:focus-within::before{border-bottom-color:var(--colorNeutralStrokeAccessiblePressed);}"], m: [["@media (forced-colors: active){.f1p5b8em::before{border-top-color:GrayText;}}", { m: "(forced-colors: active)" }], ["@media (forced-colors: active){.f11b7h5x::before{border-left-color:GrayText;}.fs6f9xf::before{border-right-color:GrayText;}}", { m: "(forced-colors: active)" }], ["@media (forced-colors: active){.f1vrn6tw::before{border-bottom-color:GrayText;}}", { m: "(forced-colors: active)" }]] }); const useInputClassName = /*#__PURE__*/__resetStyles("r1ljrqje", null, [".r1ljrqje{grid-column-start:1;grid-column-end:2;grid-row-start:1;grid-row-end:3;outline-style:none;border:0;padding:0;color:var(--colorNeutralForeground1);background-color:transparent;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;width:100%;}", ".r1ljrqje::-webkit-input-placeholder{color:var(--colorNeutralForeground4);opacity:1;}", ".r1ljrqje::-moz-placeholder{color:var(--colorNeutralForeground4);opacity:1;}", ".r1ljrqje::placeholder{color:var(--colorNeutralForeground4);opacity:1;}"]); const useInputStyles = /*#__PURE__*/__styles({ disabled: { sj55zd: "f1s2aq7o", Bceei9c: "fdrzuqr", De3pzq: "f1c21dwh", yvdlaj: "fahhnxm" } }, { d: [".f1s2aq7o{color:var(--colorNeutralForegroundDisabled);}", ".fdrzuqr{cursor:not-allowed;}", ".f1c21dwh{background-color:var(--colorTransparentBackground);}", ".fahhnxm::-webkit-input-placeholder{color:var(--colorNeutralForegroundDisabled);}", ".fahhnxm::-moz-placeholder{color:var(--colorNeutralForegroundDisabled);}"] }); const useBaseButtonClassName = /*#__PURE__*/__resetStyles("r1g4chgs", null, [".r1g4chgs{display:inline-flex;width:24px;align-items:center;justify-content:center;border:0;position:absolute;outline-style:none;height:16px;background-color:transparent;color:var(--colorNeutralForeground3);grid-column-start:2;border-radius:0;padding:0 5px 0 5px;}", ".r1g4chgs:active{outline-style:none;}", ".r1g4chgs:enabled:hover{cursor:pointer;color:var(--colorNeutralForeground3Hover);background-color:var(--colorSubtleBackgroundHover);}", ".r1g4chgs:enabled:active{color:var(--colorNeutralForeground3Pressed);background-color:var(--colorSubtleBackgroundPressed);}", ".r1g4chgs:enabled.fui-SpinButton__button_active{color:var(--colorNeutralForeground3Pressed);background-color:var(--colorSubtleBackgroundPressed);}", ".r1g4chgs:disabled{cursor:not-allowed;color:var(--colorNeutralForegroundDisabled);}"]); const useButtonStyles = /*#__PURE__*/__styles({ increment: { Ijaq50: "f16hsg94", B7oj6ja: ["f1jar5jt", "fyu767a"], z8tnut: "f10ra9hq", Byoj8tv: "f1brlhvm" }, decrement: { Ijaq50: "faunodf", Bbmb7ep: ["f1aa9q02", "f16jpd5f"], z8tnut: "f1sl3k7w", Byoj8tv: "f1y2xyjm" }, incrementButtonSmall: { Byoj8tv: 0, uwmqm3: 0, z189sj: 0, z8tnut: 0, B0ocmuz: ["f4lv8q1", "fm3uwd2"], Bqenvij: "fvblgha" }, decrementButtonSmall: { Byoj8tv: 0, uwmqm3: 0, z189sj: 0, z8tnut: 0, B0ocmuz: ["f1q86st8", "frkrfqj"], Bqenvij: "fvblgha" }, outline: {}, underline: { De3pzq: "f3rmtva", sj55zd: "f11d4kpn", r4wkhp: "f1no7wuu", B95qlz1: "f1bifk9c", p743kt: "fp1zg4s", B7xitij: "fo6hitd", B6siaa6: "f1wiab75", Ba9qmo4: "fj9zm5z", Dyrjrp: "f1cqwcg4" }, "filled-darker": { De3pzq: "f3rmtva", sj55zd: "f11d4kpn", r4wkhp: "f1no7wuu", B95qlz1: "fwwxidx", p743kt: "fp1zg4s", B7xitij: "f14i52sd", B6siaa6: "f1wiab75", Ba9qmo4: "fwry2ka", Dyrjrp: "f1cqwcg4" }, "filled-lighter": { De3pzq: "f3rmtva", sj55zd: "f11d4kpn", r4wkhp: "f1no7wuu", B95qlz1: "f1yywxnv", drw0cw: "fzaa11h", idzz8t: "f4fpmm9", Dyrjrp: "f1cqwcg4" } }, { d: [".f16hsg94{grid-row-start:1;}", ".f1jar5jt{border-top-right-radius:var(--borderRadiusMedium);}", ".fyu767a{border-top-left-radius:var(--borderRadiusMedium);}", ".f10ra9hq{padding-top:4px;}", ".f1brlhvm{padding-bottom:1px;}", ".faunodf{grid-row-start:2;}", ".f1aa9q02{border-bottom-right-radius:var(--borderRadiusMedium);}", ".f16jpd5f{border-bottom-left-radius:var(--borderRadiusMedium);}", ".f1sl3k7w{padding-top:1px;}", ".f1y2xyjm{padding-bottom:4px;}", [".f4lv8q1{padding:3px 6px 0px 4px;}", { p: -1 }], [".fm3uwd2{padding:3px 4px 0px 6px;}", { p: -1 }], ".fvblgha{height:12px;}", [".f1q86st8{padding:0px 6px 3px 4px;}", { p: -1 }], [".frkrfqj{padding:0px 4px 3px 6px;}", { p: -1 }], ".f3rmtva{background-color:transparent;}", ".f11d4kpn{color:var(--colorNeutralForeground3);}", ".f1no7wuu:enabled:hover{color:var(--colorNeutralForeground3Hover);}", ".f1bifk9c:enabled:hover{background-color:var(--colorSubtleBackgroundHover);}", ".fp1zg4s:enabled:active{color:var(--colorNeutralForeground3Pressed);}", ".fo6hitd:enabled:active{background-color:var(--colorSubtleBackgroundPressed);}", ".f1wiab75:enabled.fui-SpinButton__button_active{color:var(--colorNeutralForeground3Pressed);}", ".fj9zm5z:enabled.fui-SpinButton__button_active{background-color:var(--colorSubtleBackgroundPressed);}", ".f1cqwcg4:disabled{color:var(--colorNeutralForegroundDisabled);}", ".fwwxidx:enabled:hover{background-color:var(--colorNeutralBackground3Hover);}", ".f14i52sd:enabled:active{background-color:var(--colorNeutralBackground3Pressed);}", ".fwry2ka:enabled.fui-SpinButton__button_active{background-color:var(--colorNeutralBackground3Pressed);}", ".f1yywxnv:enabled:hover{background-color:var(--colorNeutralBackground1Hover);}", ".fzaa11h:enabled:active,.fzaa11h:enabled.fui-SpinButton__button_active{color:var(--colorNeutralForeground3Pressed);}", ".f4fpmm9:enabled:active,.f4fpmm9:enabled.fui-SpinButton__button_active{background-color:var(--colorNeutralBackground1Pressed);}"] }); /** * Apply styling to the SpinButton slots based on the state */ export const useSpinButtonStyles_unstable = state => { 'use no memo'; const { appearance, spinState, size } = state; const disabled = state.input.disabled; const invalid = `${state.input['aria-invalid']}` === 'true'; const filled = appearance.startsWith('filled'); const rootStyles = useRootStyles(); const buttonStyles = useButtonStyles(); const inputStyles = useInputStyles(); state.root.className = mergeClasses(spinButtonClassNames.root, useRootClassName(), rootStyles[size], rootStyles[appearance], filled && rootStyles.filled, !disabled && appearance === 'outline' && rootStyles.outlineInteractive, !disabled && appearance === 'underline' && rootStyles.underlineInteractive, !disabled && filled && rootStyles.filledInteractive, !disabled && invalid && rootStyles.invalid, disabled && rootStyles.disabled, state.root.className); state.incrementButton.className = mergeClasses(spinButtonClassNames.incrementButton, spinState === 'up' && `${spinButtonExtraClassNames.buttonActive}`, useBaseButtonClassName(), buttonStyles.increment, buttonStyles[appearance], size === 'small' && buttonStyles.incrementButtonSmall, state.incrementButton.className); state.decrementButton.className = mergeClasses(spinButtonClassNames.decrementButton, spinState === 'down' && `${spinButtonExtraClassNames.buttonActive}`, useBaseButtonClassName(), buttonStyles.decrement, buttonStyles[appearance], size === 'small' && buttonStyles.decrementButtonSmall, state.decrementButton.className); state.input.className = mergeClasses(spinButtonClassNames.input, useInputClassName(), disabled && inputStyles.disabled, state.input.className); return state; };