@moving-walls/design-system 1.0.17 → 1.0.19

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/index.esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import require$$1, { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import React__default, { forwardRef, createElement, useLayoutEffect, useState, useRef, useEffect, useContext, createContext, useCallback, useMemo, isValidElement, cloneElement } from 'react';
3
+ import React__default, { forwardRef, createElement, useLayoutEffect, useState, useRef, useEffect, createContext, useContext, useCallback, useMemo, isValidElement, cloneElement } from 'react';
4
4
  import * as ReactDOM from 'react-dom';
5
5
  import ReactDOM__default, { createPortal } from 'react-dom';
6
6
  import { ModuleRegistry, AllCommunityModule } from 'ag-grid-community';
@@ -31677,6 +31677,10 @@ const oppositeSideMap = {
31677
31677
  bottom: 'top',
31678
31678
  top: 'bottom'
31679
31679
  };
31680
+ const oppositeAlignmentMap = {
31681
+ start: 'end',
31682
+ end: 'start'
31683
+ };
31680
31684
  function clamp(start, value, end) {
31681
31685
  return max(start, min(value, end));
31682
31686
  }
@@ -31695,9 +31699,9 @@ function getOppositeAxis(axis) {
31695
31699
  function getAxisLength(axis) {
31696
31700
  return axis === 'y' ? 'height' : 'width';
31697
31701
  }
31702
+ const yAxisSides = /*#__PURE__*/ new Set(['top', 'bottom']);
31698
31703
  function getSideAxis(placement) {
31699
- const firstChar = placement[0];
31700
- return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';
31704
+ return yAxisSides.has(getSide(placement)) ? 'y' : 'x';
31701
31705
  }
31702
31706
  function getAlignmentAxis(placement) {
31703
31707
  return getOppositeAxis(getSideAxis(placement));
@@ -31720,7 +31724,7 @@ function getExpandedPlacements(placement) {
31720
31724
  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
31721
31725
  }
31722
31726
  function getOppositeAlignmentPlacement(placement) {
31723
- return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');
31727
+ return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
31724
31728
  }
31725
31729
  const lrPlacement = ['left', 'right'];
31726
31730
  const rlPlacement = ['right', 'left'];
@@ -31752,8 +31756,7 @@ function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
31752
31756
  return list;
31753
31757
  }
31754
31758
  function getOppositePlacement(placement) {
31755
- const side = getSide(placement);
31756
- return oppositeSideMap[side] + placement.slice(side.length);
31759
+ return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);
31757
31760
  }
31758
31761
  function expandPaddingObject(padding) {
31759
31762
  return Object.assign({ top: 0, right: 0, bottom: 0, left: 0 }, padding);
@@ -31883,8 +31886,6 @@ async function detectOverflow(state, options) {
31883
31886
  right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
31884
31887
  };
31885
31888
  }
31886
- // Maximum number of resets that can occur before bailing to avoid infinite reset loops.
31887
- const MAX_RESET_COUNT = 50;
31888
31889
  /**
31889
31890
  * Computes the `x` and `y` coordinates that will place the floating element
31890
31891
  * next to a given reference element.
@@ -31894,7 +31895,7 @@ const MAX_RESET_COUNT = 50;
31894
31895
  */
31895
31896
  const computePosition$1 = async (reference, floating, config) => {
31896
31897
  const { placement = 'bottom', strategy = 'absolute', middleware = [], platform } = config;
31897
- const platformWithDetectOverflow = platform.detectOverflow ? platform : Object.assign(Object.assign({}, platform), { detectOverflow });
31898
+ const validMiddleware = middleware.filter(Boolean);
31898
31899
  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));
31899
31900
  let rects = await platform.getElementRects({
31900
31901
  reference,
@@ -31903,14 +31904,11 @@ const computePosition$1 = async (reference, floating, config) => {
31903
31904
  });
31904
31905
  let { x, y } = computeCoordsFromPlacement(rects, placement, rtl);
31905
31906
  let statefulPlacement = placement;
31907
+ let middlewareData = {};
31906
31908
  let resetCount = 0;
31907
- const middlewareData = {};
31908
- for (let i = 0; i < middleware.length; i++) {
31909
- const currentMiddleware = middleware[i];
31910
- if (!currentMiddleware) {
31911
- continue;
31912
- }
31913
- const { name, fn } = currentMiddleware;
31909
+ for (let i = 0; i < validMiddleware.length; i++) {
31910
+ var _platform$detectOverf;
31911
+ const { name, fn } = validMiddleware[i];
31914
31912
  const { x: nextX, y: nextY, data, reset } = await fn({
31915
31913
  x,
31916
31914
  y,
@@ -31919,7 +31917,7 @@ const computePosition$1 = async (reference, floating, config) => {
31919
31917
  strategy,
31920
31918
  middlewareData,
31921
31919
  rects,
31922
- platform: platformWithDetectOverflow,
31920
+ platform: Object.assign(Object.assign({}, platform), { detectOverflow: (_platform$detectOverf = platform.detectOverflow) != null ? _platform$detectOverf : detectOverflow }),
31923
31921
  elements: {
31924
31922
  reference,
31925
31923
  floating
@@ -31927,8 +31925,8 @@ const computePosition$1 = async (reference, floating, config) => {
31927
31925
  });
31928
31926
  x = nextX != null ? nextX : x;
31929
31927
  y = nextY != null ? nextY : y;
31930
- middlewareData[name] = Object.assign(Object.assign({}, middlewareData[name]), data);
31931
- if (reset && resetCount < MAX_RESET_COUNT) {
31928
+ middlewareData = Object.assign(Object.assign({}, middlewareData), { [name]: Object.assign(Object.assign({}, middlewareData[name]), data) });
31929
+ if (reset && resetCount <= 50) {
31932
31930
  resetCount++;
31933
31931
  if (typeof reset === 'object') {
31934
31932
  if (reset.placement) {
@@ -32482,38 +32480,35 @@ function isShadowRoot(value) {
32482
32480
  }
32483
32481
  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
32484
32482
  }
32483
+ const invalidOverflowDisplayValues = /*#__PURE__*/ new Set(['inline', 'contents']);
32485
32484
  function isOverflowElement(element) {
32486
32485
  const { overflow, overflowX, overflowY, display } = getComputedStyle$1(element);
32487
- return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';
32486
+ return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
32488
32487
  }
32488
+ const tableElements = /*#__PURE__*/ new Set(['table', 'td', 'th']);
32489
32489
  function isTableElement(element) {
32490
- return /^(table|td|th)$/.test(getNodeName(element));
32490
+ return tableElements.has(getNodeName(element));
32491
32491
  }
32492
+ const topLayerSelectors = [':popover-open', ':modal'];
32492
32493
  function isTopLayer(element) {
32493
- try {
32494
- if (element.matches(':popover-open')) {
32495
- return true;
32494
+ return topLayerSelectors.some(selector => {
32495
+ try {
32496
+ return element.matches(selector);
32496
32497
  }
32497
- }
32498
- catch (_e) {
32499
- // no-op
32500
- }
32501
- try {
32502
- return element.matches(':modal');
32503
- }
32504
- catch (_e) {
32505
- return false;
32506
- }
32498
+ catch (_e) {
32499
+ return false;
32500
+ }
32501
+ });
32507
32502
  }
32508
- const willChangeRe = /transform|translate|scale|rotate|perspective|filter/;
32509
- const containRe = /paint|layout|strict|content/;
32510
- const isNotNone = value => !!value && value !== 'none';
32511
- let isWebKitValue;
32503
+ const transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];
32504
+ const willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];
32505
+ const containValues = ['paint', 'layout', 'strict', 'content'];
32512
32506
  function isContainingBlock(elementOrCss) {
32507
+ const webkit = isWebKit();
32513
32508
  const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
32514
32509
  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
32515
32510
  // https://drafts.csswg.org/css-transforms-2/#individual-transforms
32516
- return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');
32511
+ return transformProperties.some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || willChangeValues.some(value => (css.willChange || '').includes(value)) || containValues.some(value => (css.contain || '').includes(value));
32517
32512
  }
32518
32513
  function getContainingBlock(element) {
32519
32514
  let currentNode = getParentNode(element);
@@ -32529,13 +32524,13 @@ function getContainingBlock(element) {
32529
32524
  return null;
32530
32525
  }
32531
32526
  function isWebKit() {
32532
- if (isWebKitValue == null) {
32533
- isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');
32534
- }
32535
- return isWebKitValue;
32527
+ if (typeof CSS === 'undefined' || !CSS.supports)
32528
+ return false;
32529
+ return CSS.supports('-webkit-backdrop-filter', 'none');
32536
32530
  }
32531
+ const lastTraversableNodeNames = /*#__PURE__*/ new Set(['html', 'body', '#document']);
32537
32532
  function isLastTraversableNode(node) {
32538
- return /^(html|body|#document)$/.test(getNodeName(node));
32533
+ return lastTraversableNodeNames.has(getNodeName(node));
32539
32534
  }
32540
32535
  function getComputedStyle$1(element) {
32541
32536
  return getWindow(element).getComputedStyle(element);
@@ -32592,9 +32587,7 @@ function getOverflowAncestors(node, list, traverseIframes) {
32592
32587
  const frameElement = getFrameElement(win);
32593
32588
  return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
32594
32589
  }
32595
- else {
32596
- return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
32597
- }
32590
+ return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
32598
32591
  }
32599
32592
  function getFrameElement(win) {
32600
32593
  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
@@ -32754,7 +32747,7 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
32754
32747
  if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
32755
32748
  scroll = getNodeScroll(offsetParent);
32756
32749
  }
32757
- if (isOffsetParentAnElement) {
32750
+ if (isHTMLElement(offsetParent)) {
32758
32751
  const offsetRect = getBoundingClientRect(offsetParent);
32759
32752
  scale = getScale(offsetParent);
32760
32753
  offsets.x = offsetRect.x + offsetParent.clientLeft;
@@ -32839,6 +32832,7 @@ function getViewportRect(element, strategy) {
32839
32832
  y
32840
32833
  };
32841
32834
  }
32835
+ const absoluteOrFixed = /*#__PURE__*/ new Set(['absolute', 'fixed']);
32842
32836
  // Returns the inner client rect, subtracting scrollbars if present.
32843
32837
  function getInnerBoundingClientRect(element, strategy) {
32844
32838
  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
@@ -32904,7 +32898,7 @@ function getClippingElementAncestors(element, cache) {
32904
32898
  if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
32905
32899
  currentContainingBlockComputedStyle = null;
32906
32900
  }
32907
- const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
32901
+ const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
32908
32902
  if (shouldDropCurrentNode) {
32909
32903
  // Drop non-containing blocks.
32910
32904
  result = result.filter(ancestor => ancestor !== currentNode);
@@ -32924,23 +32918,20 @@ function getClippingRect(_ref) {
32924
32918
  let { element, boundary, rootBoundary, strategy } = _ref;
32925
32919
  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
32926
32920
  const clippingAncestors = [...elementClippingAncestors, rootBoundary];
32927
- const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);
32928
- let top = firstRect.top;
32929
- let right = firstRect.right;
32930
- let bottom = firstRect.bottom;
32931
- let left = firstRect.left;
32932
- for (let i = 1; i < clippingAncestors.length; i++) {
32933
- const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);
32934
- top = max(rect.top, top);
32935
- right = min(rect.right, right);
32936
- bottom = min(rect.bottom, bottom);
32937
- left = max(rect.left, left);
32938
- }
32921
+ const firstClippingAncestor = clippingAncestors[0];
32922
+ const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
32923
+ const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
32924
+ accRect.top = max(rect.top, accRect.top);
32925
+ accRect.right = min(rect.right, accRect.right);
32926
+ accRect.bottom = min(rect.bottom, accRect.bottom);
32927
+ accRect.left = max(rect.left, accRect.left);
32928
+ return accRect;
32929
+ }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
32939
32930
  return {
32940
- width: right - left,
32941
- height: bottom - top,
32942
- x: left,
32943
- y: top
32931
+ width: clippingRect.right - clippingRect.left,
32932
+ height: clippingRect.bottom - clippingRect.top,
32933
+ x: clippingRect.left,
32934
+ y: clippingRect.top
32944
32935
  };
32945
32936
  }
32946
32937
  function getDimensions(element) {
@@ -33164,7 +33155,7 @@ function autoUpdate(reference, floating, update, options) {
33164
33155
  }
33165
33156
  const { ancestorScroll = true, ancestorResize = true, elementResize = typeof ResizeObserver === 'function', layoutShift = typeof IntersectionObserver === 'function', animationFrame = false } = options;
33166
33157
  const referenceEl = unwrapElement(reference);
33167
- const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];
33158
+ const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];
33168
33159
  ancestors.forEach(ancestor => {
33169
33160
  ancestorScroll && ancestor.addEventListener('scroll', update, {
33170
33161
  passive: true
@@ -33177,7 +33168,7 @@ function autoUpdate(reference, floating, update, options) {
33177
33168
  if (elementResize) {
33178
33169
  resizeObserver = new ResizeObserver(_ref => {
33179
33170
  let [firstEntry] = _ref;
33180
- if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {
33171
+ if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {
33181
33172
  // Prevent update loops when using the `size` middleware.
33182
33173
  // https://github.com/floating-ui/floating-ui/issues/1740
33183
33174
  resizeObserver.unobserve(floating);
@@ -33192,9 +33183,7 @@ function autoUpdate(reference, floating, update, options) {
33192
33183
  if (referenceEl && !animationFrame) {
33193
33184
  resizeObserver.observe(referenceEl);
33194
33185
  }
33195
- if (floating) {
33196
- resizeObserver.observe(floating);
33197
- }
33186
+ resizeObserver.observe(floating);
33198
33187
  }
33199
33188
  let frameId;
33200
33189
  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
@@ -33527,92 +33516,44 @@ const arrow$1 = options => {
33527
33516
  * object may be passed.
33528
33517
  * @see https://floating-ui.com/docs/offset
33529
33518
  */
33530
- const offset = (options, deps) => {
33531
- const result = offset$1(options);
33532
- return {
33533
- name: result.name,
33534
- fn: result.fn,
33535
- options: [options, deps]
33536
- };
33537
- };
33519
+ const offset = (options, deps) => (Object.assign(Object.assign({}, offset$1(options)), { options: [options, deps] }));
33538
33520
  /**
33539
33521
  * Optimizes the visibility of the floating element by shifting it in order to
33540
33522
  * keep it in view when it will overflow the clipping boundary.
33541
33523
  * @see https://floating-ui.com/docs/shift
33542
33524
  */
33543
- const shift = (options, deps) => {
33544
- const result = shift$1(options);
33545
- return {
33546
- name: result.name,
33547
- fn: result.fn,
33548
- options: [options, deps]
33549
- };
33550
- };
33525
+ const shift = (options, deps) => (Object.assign(Object.assign({}, shift$1(options)), { options: [options, deps] }));
33551
33526
  /**
33552
33527
  * Built-in `limiter` that will stop `shift()` at a certain point.
33553
33528
  */
33554
- const limitShift = (options, deps) => {
33555
- const result = limitShift$1(options);
33556
- return {
33557
- fn: result.fn,
33558
- options: [options, deps]
33559
- };
33560
- };
33529
+ const limitShift = (options, deps) => (Object.assign(Object.assign({}, limitShift$1(options)), { options: [options, deps] }));
33561
33530
  /**
33562
33531
  * Optimizes the visibility of the floating element by flipping the `placement`
33563
33532
  * in order to keep it in view when the preferred placement(s) will overflow the
33564
33533
  * clipping boundary. Alternative to `autoPlacement`.
33565
33534
  * @see https://floating-ui.com/docs/flip
33566
33535
  */
33567
- const flip = (options, deps) => {
33568
- const result = flip$1(options);
33569
- return {
33570
- name: result.name,
33571
- fn: result.fn,
33572
- options: [options, deps]
33573
- };
33574
- };
33536
+ const flip = (options, deps) => (Object.assign(Object.assign({}, flip$1(options)), { options: [options, deps] }));
33575
33537
  /**
33576
33538
  * Provides data that allows you to change the size of the floating element —
33577
33539
  * for instance, prevent it from overflowing the clipping boundary or match the
33578
33540
  * width of the reference element.
33579
33541
  * @see https://floating-ui.com/docs/size
33580
33542
  */
33581
- const size = (options, deps) => {
33582
- const result = size$1(options);
33583
- return {
33584
- name: result.name,
33585
- fn: result.fn,
33586
- options: [options, deps]
33587
- };
33588
- };
33543
+ const size = (options, deps) => (Object.assign(Object.assign({}, size$1(options)), { options: [options, deps] }));
33589
33544
  /**
33590
33545
  * Provides data to hide the floating element in applicable situations, such as
33591
33546
  * when it is not in the same clipping context as the reference element.
33592
33547
  * @see https://floating-ui.com/docs/hide
33593
33548
  */
33594
- const hide = (options, deps) => {
33595
- const result = hide$1(options);
33596
- return {
33597
- name: result.name,
33598
- fn: result.fn,
33599
- options: [options, deps]
33600
- };
33601
- };
33549
+ const hide = (options, deps) => (Object.assign(Object.assign({}, hide$1(options)), { options: [options, deps] }));
33602
33550
  /**
33603
33551
  * Provides data to position an inner element of the floating element so that it
33604
33552
  * appears centered to the reference element.
33605
33553
  * This wraps the core `arrow` middleware to allow React refs as the element.
33606
33554
  * @see https://floating-ui.com/docs/arrow
33607
33555
  */
33608
- const arrow = (options, deps) => {
33609
- const result = arrow$1(options);
33610
- return {
33611
- name: result.name,
33612
- fn: result.fn,
33613
- options: [options, deps]
33614
- };
33615
- };
33556
+ const arrow = (options, deps) => (Object.assign(Object.assign({}, arrow$1(options)), { options: [options, deps] }));
33616
33557
 
33617
33558
  var NAME$1 = "Arrow";
33618
33559
  var Arrow$1 = React.forwardRef((props, forwardedRef) => {
@@ -45941,7 +45882,7 @@ function SheetHeader(_a) {
45941
45882
  className = _a.className,
45942
45883
  props = __rest$1(_a, ["children", "className"]);
45943
45884
  return jsx("div", Object.assign({
45944
- className: clsx("flex items-center justify-between px-6 py-4 border-b border-mw-neutral-200 dark:border-mw-neutral-700", className)
45885
+ className: clsx("flex flex-col gap-1 px-6 pr-14 py-4 border-b border-mw-neutral-200 dark:border-mw-neutral-700", className)
45945
45886
  }, props, {
45946
45887
  children: children
45947
45888
  }));
@@ -49312,6 +49253,169 @@ function getRowSelectionOption(rowSelection, serverSidePagination) {
49312
49253
  }
49313
49254
  return rowSelection;
49314
49255
  }
49256
+ /* ------------------------------------------------------------------ */
49257
+ /* Server-side pagination bar – replaces AG Grid's built-in panel */
49258
+ /* when serverSidePagination=true to avoid page-reset feedback loops */
49259
+ /* ------------------------------------------------------------------ */
49260
+ var paginationBtnStyle = function paginationBtnStyle(disabled) {
49261
+ return {
49262
+ display: 'inline-flex',
49263
+ alignItems: 'center',
49264
+ justifyContent: 'center',
49265
+ width: 32,
49266
+ height: 32,
49267
+ border: '1px solid #e2e8f0',
49268
+ borderRadius: 6,
49269
+ background: disabled ? 'transparent' : '#fff',
49270
+ color: disabled ? '#cbd5e1' : '#475569',
49271
+ cursor: disabled ? 'default' : 'pointer',
49272
+ fontSize: 16,
49273
+ lineHeight: 1,
49274
+ transition: 'background 0.15s, border-color 0.15s'
49275
+ };
49276
+ };
49277
+ var ServerSidePaginationBar = /*#__PURE__*/React__default.memo(function ServerSidePaginationBar(_ref) {
49278
+ var totalCount = _ref.totalCount,
49279
+ currentPage = _ref.currentPage,
49280
+ pageSize = _ref.pageSize,
49281
+ onPageChange = _ref.onPageChange,
49282
+ onPageSizeChange = _ref.onPageSizeChange,
49283
+ _ref$pageSizeSelector = _ref.pageSizeSelector,
49284
+ pageSizeSelector = _ref$pageSizeSelector === void 0 ? DEFAULT_PAGE_SIZE_SELECTOR : _ref$pageSizeSelector;
49285
+ var totalPages = Math.max(1, Math.ceil(totalCount / pageSize));
49286
+ var start = totalCount === 0 ? 0 : (currentPage - 1) * pageSize + 1;
49287
+ var end = Math.min(currentPage * pageSize, totalCount);
49288
+ var atFirst = currentPage <= 1;
49289
+ var atLast = currentPage >= totalPages;
49290
+ return jsxs("div", {
49291
+ style: {
49292
+ display: 'flex',
49293
+ alignItems: 'center',
49294
+ justifyContent: 'flex-end',
49295
+ gap: 16,
49296
+ padding: '10px 16px',
49297
+ borderTop: '1px solid #e2e8f0',
49298
+ fontSize: 13,
49299
+ color: '#64748b',
49300
+ background: '#fff',
49301
+ flexShrink: 0,
49302
+ minHeight: 48
49303
+ },
49304
+ role: "navigation",
49305
+ "aria-label": "Pagination",
49306
+ children: [jsxs("span", {
49307
+ style: {
49308
+ display: 'flex',
49309
+ alignItems: 'center',
49310
+ gap: 6
49311
+ },
49312
+ children: [jsx("span", {
49313
+ children: "Page Size:"
49314
+ }), jsx("select", {
49315
+ value: pageSize,
49316
+ onChange: function onChange(e) {
49317
+ return onPageSizeChange(Number(e.target.value));
49318
+ },
49319
+ style: {
49320
+ border: '1px solid #e2e8f0',
49321
+ borderRadius: 6,
49322
+ padding: '4px 8px',
49323
+ fontSize: 13,
49324
+ background: '#fff',
49325
+ color: '#334155',
49326
+ cursor: 'pointer',
49327
+ outline: 'none'
49328
+ },
49329
+ children: pageSizeSelector.map(function (size) {
49330
+ return jsx("option", {
49331
+ value: size,
49332
+ children: size
49333
+ }, size);
49334
+ })
49335
+ })]
49336
+ }), jsxs("span", {
49337
+ style: {
49338
+ display: 'flex',
49339
+ gap: 4
49340
+ },
49341
+ children: [jsx("strong", {
49342
+ style: {
49343
+ color: '#334155'
49344
+ },
49345
+ children: start
49346
+ }), ' to ', jsx("strong", {
49347
+ style: {
49348
+ color: '#334155'
49349
+ },
49350
+ children: end
49351
+ }), ' of ', jsx("strong", {
49352
+ style: {
49353
+ color: '#334155'
49354
+ },
49355
+ children: totalCount
49356
+ })]
49357
+ }), jsxs("span", {
49358
+ style: {
49359
+ display: 'flex',
49360
+ alignItems: 'center',
49361
+ gap: 4
49362
+ },
49363
+ children: [jsx("button", {
49364
+ type: "button",
49365
+ disabled: atFirst,
49366
+ onClick: function onClick() {
49367
+ return onPageChange(1);
49368
+ },
49369
+ style: paginationBtnStyle(atFirst),
49370
+ "aria-label": "First Page",
49371
+ children: "\u226A"
49372
+ }), jsx("button", {
49373
+ type: "button",
49374
+ disabled: atFirst,
49375
+ onClick: function onClick() {
49376
+ return onPageChange(currentPage - 1);
49377
+ },
49378
+ style: paginationBtnStyle(atFirst),
49379
+ "aria-label": "Previous Page",
49380
+ children: "\u2039"
49381
+ }), jsxs("span", {
49382
+ style: {
49383
+ margin: '0 8px',
49384
+ fontSize: 13
49385
+ },
49386
+ children: ["Page ", jsx("strong", {
49387
+ style: {
49388
+ color: '#334155'
49389
+ },
49390
+ children: currentPage
49391
+ }), " of ", jsx("strong", {
49392
+ style: {
49393
+ color: '#334155'
49394
+ },
49395
+ children: totalPages
49396
+ })]
49397
+ }), jsx("button", {
49398
+ type: "button",
49399
+ disabled: atLast,
49400
+ onClick: function onClick() {
49401
+ return onPageChange(currentPage + 1);
49402
+ },
49403
+ style: paginationBtnStyle(atLast),
49404
+ "aria-label": "Next Page",
49405
+ children: "\u203A"
49406
+ }), jsx("button", {
49407
+ type: "button",
49408
+ disabled: atLast,
49409
+ onClick: function onClick() {
49410
+ return onPageChange(totalPages);
49411
+ },
49412
+ style: paginationBtnStyle(atLast),
49413
+ "aria-label": "Last Page",
49414
+ children: "\u226B"
49415
+ })]
49416
+ })]
49417
+ });
49418
+ });
49315
49419
  function AgGridTableInner(props) {
49316
49420
  var _a, _b;
49317
49421
  var rowData = props.rowData,
@@ -49356,7 +49460,8 @@ function AgGridTableInner(props) {
49356
49460
  state: sortStateToColumnState(sortState)
49357
49461
  });
49358
49462
  }
49359
- if (serverSidePagination && serverSideConfig) {
49463
+ // For non-server-side pagination, sync AG Grid's internal page
49464
+ if (!serverSidePagination && serverSideConfig) {
49360
49465
  isPaginationFromExternalRef.current = true;
49361
49466
  event.api.paginationGoToPage(serverSideConfig.currentPage - 1);
49362
49467
  event.api.setGridOption("paginationPageSize", serverSideConfig.pageSize);
@@ -49369,8 +49474,9 @@ function AgGridTableInner(props) {
49369
49474
  state: sortStateToColumnState(sortState)
49370
49475
  });
49371
49476
  }, [sortState]);
49477
+ // Sync AG Grid internal page — only for NON-server-side pagination
49372
49478
  useEffect(function () {
49373
- if (!serverSidePagination || !serverSideConfig || !apiRef.current) return;
49479
+ if (serverSidePagination || !serverSideConfig || !apiRef.current) return;
49374
49480
  var api = apiRef.current;
49375
49481
  var currentGridPage = api.paginationGetCurrentPage();
49376
49482
  var currentGridSize = api.paginationGetPageSize();
@@ -49383,8 +49489,12 @@ function AgGridTableInner(props) {
49383
49489
  },
49384
49490
  // eslint-disable-next-line react-hooks/exhaustive-deps
49385
49491
  [serverSidePagination, serverSideConfig === null || serverSideConfig === void 0 ? void 0 : serverSideConfig.currentPage, serverSideConfig === null || serverSideConfig === void 0 ? void 0 : serverSideConfig.pageSize]);
49492
+ // onPaginationChanged — only relevant for NON-server-side mode
49386
49493
  var onPaginationChanged = useCallback(function (event) {
49387
- if (!serverSidePagination || !serverSideConfig || !event.api) return;
49494
+ // When serverSidePagination is true, AG Grid's pagination is disabled;
49495
+ // our custom bar handles page changes directly. Ignore all grid events.
49496
+ if (serverSidePagination) return;
49497
+ if (!serverSideConfig || !event.api) return;
49388
49498
  if (event.newData) return;
49389
49499
  if (isPaginationFromExternalRef.current) {
49390
49500
  isPaginationFromExternalRef.current = false;
@@ -49455,45 +49565,57 @@ function AgGridTableInner(props) {
49455
49565
  width: "100%"
49456
49566
  };
49457
49567
  }, [height]);
49458
- return jsx("div", {
49459
- className: "".concat(AG_GRID_THEME_CLASS, " ag-grid-table-wrapper ").concat(className),
49460
- style: containerStyle !== null && containerStyle !== void 0 ? containerStyle : {
49461
- height: "100%",
49462
- width: "100%"
49463
- },
49464
- children: jsx(AgGridReact, {
49465
- ref: gridRef,
49466
- rowData: rowData,
49467
- columnDefs: columnDefsWithVisibility,
49468
- getRowId: function getRowId(params) {
49469
- return _getRowId(params.data);
49568
+ // When serverSidePagination is true, disable AG Grid's built-in pagination.
49569
+ // We render our own bar below with proper React click handlers.
49570
+ var useGridPagination = !serverSidePagination && pagination;
49571
+ return jsxs(Fragment, {
49572
+ children: [jsx("div", {
49573
+ className: "".concat(AG_GRID_THEME_CLASS, " ag-grid-table-wrapper ").concat(className),
49574
+ style: containerStyle !== null && containerStyle !== void 0 ? containerStyle : {
49575
+ height: "100%",
49576
+ width: "100%"
49470
49577
  },
49471
- loading: loading,
49472
- overlayNoRowsTemplate: "<span class=\"ag-overlay-no-rows-center\">".concat(escapeOverlayText(emptyMessage), "</span>"),
49473
- rowSelection: getRowSelectionOption(rowSelection, serverSidePagination),
49474
- popupParent: typeof document !== "undefined" ? document.body : null,
49475
- onGridReady: onGridReady,
49476
- onSortChanged: onSortChanged,
49477
- onPaginationChanged: onPaginationChanged,
49478
- onSelectionChanged: rowSelection !== false ? onSelectionChanged : undefined,
49479
- defaultColDef: Object.assign({
49480
- sortable: false,
49481
- resizable: true
49482
- }, defaultColDef),
49483
- domLayout: domLayout,
49484
- rowHeight: 60,
49485
- suppressRowTransform: true,
49486
- headerHeight: 44,
49487
- pagination: pagination,
49488
- paginationPageSize: (_a = serverSideConfig === null || serverSideConfig === void 0 ? void 0 : serverSideConfig.pageSize) !== null && _a !== void 0 ? _a : 10,
49489
- paginationPageSizeSelector: (_b = serverSideConfig === null || serverSideConfig === void 0 ? void 0 : serverSideConfig.pageSizeSelector) !== null && _b !== void 0 ? _b : DEFAULT_PAGE_SIZE_SELECTOR,
49490
- cacheBlockSize: cacheBlockSize,
49491
- pinnedBottomRowData: footerData === null || footerData === void 0 ? void 0 : footerData.map(function (row, i) {
49492
- return _typeof(row) === "object" && row !== null && !("id" in row) ? Object.assign(Object.assign({}, row), {
49493
- id: "pinned-bottom-".concat(i)
49494
- }) : row;
49578
+ children: jsx(AgGridReact, {
49579
+ ref: gridRef,
49580
+ rowData: rowData,
49581
+ columnDefs: columnDefsWithVisibility,
49582
+ getRowId: function getRowId(params) {
49583
+ return _getRowId(params.data);
49584
+ },
49585
+ loading: loading,
49586
+ overlayNoRowsTemplate: "<span class=\"ag-overlay-no-rows-center\">".concat(escapeOverlayText(emptyMessage), "</span>"),
49587
+ rowSelection: getRowSelectionOption(rowSelection, serverSidePagination),
49588
+ popupParent: typeof document !== "undefined" ? document.body : null,
49589
+ onGridReady: onGridReady,
49590
+ onSortChanged: onSortChanged,
49591
+ onPaginationChanged: useGridPagination ? onPaginationChanged : undefined,
49592
+ onSelectionChanged: rowSelection !== false ? onSelectionChanged : undefined,
49593
+ defaultColDef: Object.assign({
49594
+ sortable: false,
49595
+ resizable: true
49596
+ }, defaultColDef),
49597
+ domLayout: domLayout,
49598
+ rowHeight: 60,
49599
+ suppressRowTransform: true,
49600
+ headerHeight: 44,
49601
+ pagination: useGridPagination,
49602
+ paginationPageSize: useGridPagination ? (_a = serverSideConfig === null || serverSideConfig === void 0 ? void 0 : serverSideConfig.pageSize) !== null && _a !== void 0 ? _a : 10 : undefined,
49603
+ paginationPageSizeSelector: useGridPagination ? (_b = serverSideConfig === null || serverSideConfig === void 0 ? void 0 : serverSideConfig.pageSizeSelector) !== null && _b !== void 0 ? _b : DEFAULT_PAGE_SIZE_SELECTOR : undefined,
49604
+ cacheBlockSize: cacheBlockSize,
49605
+ pinnedBottomRowData: footerData === null || footerData === void 0 ? void 0 : footerData.map(function (row, i) {
49606
+ return _typeof(row) === "object" && row !== null && !("id" in row) ? Object.assign(Object.assign({}, row), {
49607
+ id: "pinned-bottom-".concat(i)
49608
+ }) : row;
49609
+ })
49495
49610
  })
49496
- })
49611
+ }), serverSidePagination && serverSideConfig && jsx(ServerSidePaginationBar, {
49612
+ totalCount: serverSideConfig.totalCount,
49613
+ currentPage: serverSideConfig.currentPage,
49614
+ pageSize: serverSideConfig.pageSize,
49615
+ onPageChange: serverSideConfig.onPageChange,
49616
+ onPageSizeChange: serverSideConfig.onPageSizeChange,
49617
+ pageSizeSelector: serverSideConfig.pageSizeSelector
49618
+ })]
49497
49619
  });
49498
49620
  }
49499
49621
  var AgGridTable = AgGridTableInner;
@@ -51040,471 +51162,6 @@ var interpolateAs = {};
51040
51162
 
51041
51163
  var routeMatcher = {};
51042
51164
 
51043
- var routeMatchUtils = {};
51044
-
51045
- var pathToRegexp = {exports: {}};
51046
-
51047
- var hasRequiredPathToRegexp;
51048
-
51049
- function requirePathToRegexp () {
51050
- if (hasRequiredPathToRegexp) return pathToRegexp.exports;
51051
- hasRequiredPathToRegexp = 1;
51052
- (() => {
51053
- if (typeof __nccwpck_require__ !== "undefined")
51054
- __nccwpck_require__.ab = __dirname + "/";
51055
- var e = {};
51056
- (() => { var n = e; Object.defineProperty(n, "__esModule", { value: true }); n.pathToRegexp = n.tokensToRegexp = n.regexpToFunction = n.match = n.tokensToFunction = n.compile = n.parse = void 0; function lexer(e) { var n = []; var r = 0; while (r < e.length) {
51057
- var t = e[r];
51058
- if (t === "*" || t === "+" || t === "?") {
51059
- n.push({ type: "MODIFIER", index: r, value: e[r++] });
51060
- continue;
51061
- }
51062
- if (t === "\\") {
51063
- n.push({ type: "ESCAPED_CHAR", index: r++, value: e[r++] });
51064
- continue;
51065
- }
51066
- if (t === "{") {
51067
- n.push({ type: "OPEN", index: r, value: e[r++] });
51068
- continue;
51069
- }
51070
- if (t === "}") {
51071
- n.push({ type: "CLOSE", index: r, value: e[r++] });
51072
- continue;
51073
- }
51074
- if (t === ":") {
51075
- var a = "";
51076
- var i = r + 1;
51077
- while (i < e.length) {
51078
- var o = e.charCodeAt(i);
51079
- if (o >= 48 && o <= 57 || o >= 65 && o <= 90 || o >= 97 && o <= 122 || o === 95) {
51080
- a += e[i++];
51081
- continue;
51082
- }
51083
- break;
51084
- }
51085
- if (!a)
51086
- throw new TypeError("Missing parameter name at ".concat(r));
51087
- n.push({ type: "NAME", index: r, value: a });
51088
- r = i;
51089
- continue;
51090
- }
51091
- if (t === "(") {
51092
- var c = 1;
51093
- var f = "";
51094
- var i = r + 1;
51095
- if (e[i] === "?") {
51096
- throw new TypeError('Pattern cannot start with "?" at '.concat(i));
51097
- }
51098
- while (i < e.length) {
51099
- if (e[i] === "\\") {
51100
- f += e[i++] + e[i++];
51101
- continue;
51102
- }
51103
- if (e[i] === ")") {
51104
- c--;
51105
- if (c === 0) {
51106
- i++;
51107
- break;
51108
- }
51109
- }
51110
- else if (e[i] === "(") {
51111
- c++;
51112
- if (e[i + 1] !== "?") {
51113
- throw new TypeError("Capturing groups are not allowed at ".concat(i));
51114
- }
51115
- }
51116
- f += e[i++];
51117
- }
51118
- if (c)
51119
- throw new TypeError("Unbalanced pattern at ".concat(r));
51120
- if (!f)
51121
- throw new TypeError("Missing pattern at ".concat(r));
51122
- n.push({ type: "PATTERN", index: r, value: f });
51123
- r = i;
51124
- continue;
51125
- }
51126
- n.push({ type: "CHAR", index: r, value: e[r++] });
51127
- } n.push({ type: "END", index: r, value: "" }); return n; } function parse(e, n) { if (n === void 0) {
51128
- n = {};
51129
- } var r = lexer(e); var t = n.prefixes, a = t === void 0 ? "./" : t, i = n.delimiter, o = i === void 0 ? "/#?" : i; var c = []; var f = 0; var u = 0; var p = ""; var tryConsume = function (e) { if (u < r.length && r[u].type === e)
51130
- return r[u++].value; }; var mustConsume = function (e) { var n = tryConsume(e); if (n !== undefined)
51131
- return n; var t = r[u], a = t.type, i = t.index; throw new TypeError("Unexpected ".concat(a, " at ").concat(i, ", expected ").concat(e)); }; var consumeText = function () { var e = ""; var n; while (n = tryConsume("CHAR") || tryConsume("ESCAPED_CHAR")) {
51132
- e += n;
51133
- } return e; }; var isSafe = function (e) { for (var n = 0, r = o; n < r.length; n++) {
51134
- var t = r[n];
51135
- if (e.indexOf(t) > -1)
51136
- return true;
51137
- } return false; }; var safePattern = function (e) { var n = c[c.length - 1]; var r = e || (n && typeof n === "string" ? n : ""); if (n && !r) {
51138
- throw new TypeError('Must have text between two parameters, missing text after "'.concat(n.name, '"'));
51139
- } if (!r || isSafe(r))
51140
- return "[^".concat(escapeString(o), "]+?"); return "(?:(?!".concat(escapeString(r), ")[^").concat(escapeString(o), "])+?"); }; while (u < r.length) {
51141
- var v = tryConsume("CHAR");
51142
- var s = tryConsume("NAME");
51143
- var d = tryConsume("PATTERN");
51144
- if (s || d) {
51145
- var g = v || "";
51146
- if (a.indexOf(g) === -1) {
51147
- p += g;
51148
- g = "";
51149
- }
51150
- if (p) {
51151
- c.push(p);
51152
- p = "";
51153
- }
51154
- c.push({ name: s || f++, prefix: g, suffix: "", pattern: d || safePattern(g), modifier: tryConsume("MODIFIER") || "" });
51155
- continue;
51156
- }
51157
- var x = v || tryConsume("ESCAPED_CHAR");
51158
- if (x) {
51159
- p += x;
51160
- continue;
51161
- }
51162
- if (p) {
51163
- c.push(p);
51164
- p = "";
51165
- }
51166
- var h = tryConsume("OPEN");
51167
- if (h) {
51168
- var g = consumeText();
51169
- var l = tryConsume("NAME") || "";
51170
- var m = tryConsume("PATTERN") || "";
51171
- var T = consumeText();
51172
- mustConsume("CLOSE");
51173
- c.push({ name: l || (m ? f++ : ""), pattern: l && !m ? safePattern(g) : m, prefix: g, suffix: T, modifier: tryConsume("MODIFIER") || "" });
51174
- continue;
51175
- }
51176
- mustConsume("END");
51177
- } return c; } n.parse = parse; function compile(e, n) { return tokensToFunction(parse(e, n), n); } n.compile = compile; function tokensToFunction(e, n) { if (n === void 0) {
51178
- n = {};
51179
- } var r = flags(n); var t = n.encode, a = t === void 0 ? function (e) { return e; } : t, i = n.validate, o = i === void 0 ? true : i; var c = e.map((function (e) { if (typeof e === "object") {
51180
- return new RegExp("^(?:".concat(e.pattern, ")$"), r);
51181
- } })); return function (n) { var r = ""; for (var t = 0; t < e.length; t++) {
51182
- var i = e[t];
51183
- if (typeof i === "string") {
51184
- r += i;
51185
- continue;
51186
- }
51187
- var f = n ? n[i.name] : undefined;
51188
- var u = i.modifier === "?" || i.modifier === "*";
51189
- var p = i.modifier === "*" || i.modifier === "+";
51190
- if (Array.isArray(f)) {
51191
- if (!p) {
51192
- throw new TypeError('Expected "'.concat(i.name, '" to not repeat, but got an array'));
51193
- }
51194
- if (f.length === 0) {
51195
- if (u)
51196
- continue;
51197
- throw new TypeError('Expected "'.concat(i.name, '" to not be empty'));
51198
- }
51199
- for (var v = 0; v < f.length; v++) {
51200
- var s = a(f[v], i);
51201
- if (o && !c[t].test(s)) {
51202
- throw new TypeError('Expected all "'.concat(i.name, '" to match "').concat(i.pattern, '", but got "').concat(s, '"'));
51203
- }
51204
- r += i.prefix + s + i.suffix;
51205
- }
51206
- continue;
51207
- }
51208
- if (typeof f === "string" || typeof f === "number") {
51209
- var s = a(String(f), i);
51210
- if (o && !c[t].test(s)) {
51211
- throw new TypeError('Expected "'.concat(i.name, '" to match "').concat(i.pattern, '", but got "').concat(s, '"'));
51212
- }
51213
- r += i.prefix + s + i.suffix;
51214
- continue;
51215
- }
51216
- if (u)
51217
- continue;
51218
- var d = p ? "an array" : "a string";
51219
- throw new TypeError('Expected "'.concat(i.name, '" to be ').concat(d));
51220
- } return r; }; } n.tokensToFunction = tokensToFunction; function match(e, n) { var r = []; var t = pathToRegexp(e, r, n); return regexpToFunction(t, r, n); } n.match = match; function regexpToFunction(e, n, r) { if (r === void 0) {
51221
- r = {};
51222
- } var t = r.decode, a = t === void 0 ? function (e) { return e; } : t; return function (r) { var t = e.exec(r); if (!t)
51223
- return false; var i = t[0], o = t.index; var c = Object.create(null); var _loop_1 = function (e) { if (t[e] === undefined)
51224
- return "continue"; var r = n[e - 1]; if (r.modifier === "*" || r.modifier === "+") {
51225
- c[r.name] = t[e].split(r.prefix + r.suffix).map((function (e) { return a(e, r); }));
51226
- }
51227
- else {
51228
- c[r.name] = a(t[e], r);
51229
- } }; for (var f = 1; f < t.length; f++) {
51230
- _loop_1(f);
51231
- } return { path: i, index: o, params: c }; }; } n.regexpToFunction = regexpToFunction; function escapeString(e) { return e.replace(/([.+*?=^!:${}()[\]|/\\])/g, "\\$1"); } function flags(e) { return e && e.sensitive ? "" : "i"; } function regexpToRegexp(e, n) { if (!n)
51232
- return e; var r = /\((?:\?<(.*?)>)?(?!\?)/g; var t = 0; var a = r.exec(e.source); while (a) {
51233
- n.push({ name: a[1] || t++, prefix: "", suffix: "", modifier: "", pattern: "" });
51234
- a = r.exec(e.source);
51235
- } return e; } function arrayToRegexp(e, n, r) { var t = e.map((function (e) { return pathToRegexp(e, n, r).source; })); return new RegExp("(?:".concat(t.join("|"), ")"), flags(r)); } function stringToRegexp(e, n, r) { return tokensToRegexp(parse(e, r), n, r); } function tokensToRegexp(e, n, r) { if (r === void 0) {
51236
- r = {};
51237
- } var t = r.strict, a = t === void 0 ? false : t, i = r.start, o = i === void 0 ? true : i, c = r.end, f = c === void 0 ? true : c, u = r.encode, p = u === void 0 ? function (e) { return e; } : u, v = r.delimiter, s = v === void 0 ? "/#?" : v, d = r.endsWith, g = d === void 0 ? "" : d; var x = "[".concat(escapeString(g), "]|$"); var h = "[".concat(escapeString(s), "]"); var l = o ? "^" : ""; for (var m = 0, T = e; m < T.length; m++) {
51238
- var E = T[m];
51239
- if (typeof E === "string") {
51240
- l += escapeString(p(E));
51241
- }
51242
- else {
51243
- var w = escapeString(p(E.prefix));
51244
- var y = escapeString(p(E.suffix));
51245
- if (E.pattern) {
51246
- if (n)
51247
- n.push(E);
51248
- if (w || y) {
51249
- if (E.modifier === "+" || E.modifier === "*") {
51250
- var R = E.modifier === "*" ? "?" : "";
51251
- l += "(?:".concat(w, "((?:").concat(E.pattern, ")(?:").concat(y).concat(w, "(?:").concat(E.pattern, "))*)").concat(y, ")").concat(R);
51252
- }
51253
- else {
51254
- l += "(?:".concat(w, "(").concat(E.pattern, ")").concat(y, ")").concat(E.modifier);
51255
- }
51256
- }
51257
- else {
51258
- if (E.modifier === "+" || E.modifier === "*") {
51259
- throw new TypeError('Can not repeat "'.concat(E.name, '" without a prefix and suffix'));
51260
- }
51261
- l += "(".concat(E.pattern, ")").concat(E.modifier);
51262
- }
51263
- }
51264
- else {
51265
- l += "(?:".concat(w).concat(y, ")").concat(E.modifier);
51266
- }
51267
- }
51268
- } if (f) {
51269
- if (!a)
51270
- l += "".concat(h, "?");
51271
- l += !r.endsWith ? "$" : "(?=".concat(x, ")");
51272
- }
51273
- else {
51274
- var A = e[e.length - 1];
51275
- var _ = typeof A === "string" ? h.indexOf(A[A.length - 1]) > -1 : A === undefined;
51276
- if (!a) {
51277
- l += "(?:".concat(h, "(?=").concat(x, "))?");
51278
- }
51279
- if (!_) {
51280
- l += "(?=".concat(h, "|").concat(x, ")");
51281
- }
51282
- } return new RegExp(l, flags(r)); } n.tokensToRegexp = tokensToRegexp; function pathToRegexp(e, n, r) { if (e instanceof RegExp)
51283
- return regexpToRegexp(e, n); if (Array.isArray(e))
51284
- return arrayToRegexp(e, n, r); return stringToRegexp(e, n, r); } n.pathToRegexp = pathToRegexp; })();
51285
- pathToRegexp.exports = e;
51286
- })();
51287
-
51288
- return pathToRegexp.exports;
51289
- }
51290
-
51291
- var routePatternNormalizer = {};
51292
-
51293
- var hasRequiredRoutePatternNormalizer;
51294
-
51295
- function requireRoutePatternNormalizer () {
51296
- if (hasRequiredRoutePatternNormalizer) return routePatternNormalizer;
51297
- hasRequiredRoutePatternNormalizer = 1;
51298
- (function (exports$1) {
51299
- Object.defineProperty(exports$1, "__esModule", {
51300
- value: true
51301
- });
51302
- function _export(target, all) {
51303
- for (var name in all)
51304
- Object.defineProperty(target, name, {
51305
- enumerable: true,
51306
- get: all[name]
51307
- });
51308
- }
51309
- _export(exports$1, {
51310
- hasAdjacentParameterIssues: function () {
51311
- return hasAdjacentParameterIssues;
51312
- },
51313
- normalizeAdjacentParameters: function () {
51314
- return normalizeAdjacentParameters;
51315
- },
51316
- normalizeTokensForRegexp: function () {
51317
- return normalizeTokensForRegexp;
51318
- },
51319
- stripParameterSeparators: function () {
51320
- return stripParameterSeparators;
51321
- }
51322
- });
51323
- /**
51324
- * Route pattern normalization utilities for path-to-regexp compatibility.
51325
- *
51326
- * path-to-regexp 6.3.0+ introduced stricter validation that rejects certain
51327
- * patterns commonly used in Next.js interception routes. This module provides
51328
- * normalization functions to make Next.js route patterns compatible with the
51329
- * updated library while preserving all functionality.
51330
- */ /**
51331
- * Internal separator used to normalize adjacent parameter patterns.
51332
- * This unique marker is inserted between adjacent parameters and stripped out
51333
- * during parameter extraction to avoid conflicts with real URL content.
51334
- */ const PARAM_SEPARATOR = '_NEXTSEP_';
51335
- function hasAdjacentParameterIssues(route) {
51336
- if (typeof route !== 'string')
51337
- return false;
51338
- // Check for interception route markers followed immediately by parameters
51339
- // Pattern: /(.):param, /(..):param, /(...):param, /(.)(.):param etc.
51340
- // These patterns cause "Must have text between two parameters" errors
51341
- if (/\/\(\.{1,3}\):[^/\s]+/.test(route)) {
51342
- return true;
51343
- }
51344
- // Check for basic adjacent parameters without separators
51345
- // Pattern: :param1:param2 (but not :param* or other URL patterns)
51346
- if (/:[a-zA-Z_][a-zA-Z0-9_]*:[a-zA-Z_][a-zA-Z0-9_]*/.test(route)) {
51347
- return true;
51348
- }
51349
- return false;
51350
- }
51351
- function normalizeAdjacentParameters(route) {
51352
- let normalized = route;
51353
- // Handle interception route patterns: (.):param -> (.)_NEXTSEP_:param
51354
- normalized = normalized.replace(/(\([^)]*\)):([^/\s]+)/g, `$1${PARAM_SEPARATOR}:$2`);
51355
- // Handle other adjacent parameter patterns: :param1:param2 -> :param1_NEXTSEP_:param2
51356
- normalized = normalized.replace(/:([^:/\s)]+)(?=:)/g, `:$1${PARAM_SEPARATOR}`);
51357
- return normalized;
51358
- }
51359
- function normalizeTokensForRegexp(tokens) {
51360
- return tokens.map((token) => {
51361
- // Token union type: Token = string | TokenObject
51362
- // Literal path segments are strings, parameters/wildcards are objects
51363
- if (typeof token === 'object' && token !== null && // Not all token objects have 'modifier' property (e.g., simple text tokens)
51364
- 'modifier' in token && // Only repeating modifiers (* or +) cause the validation error
51365
- // Other modifiers like '?' (optional) are fine
51366
- (token.modifier === '*' || token.modifier === '+') && // Token objects can have different shapes depending on route pattern
51367
- 'prefix' in token && 'suffix' in token && // Both prefix and suffix must be empty strings
51368
- // This is what causes the validation error in path-to-regexp
51369
- token.prefix === '' && token.suffix === '') {
51370
- // Add minimal prefix to satisfy path-to-regexp validation
51371
- // We use '/' as it's the most common path delimiter and won't break route matching
51372
- // The prefix gets used in regex generation but doesn't affect parameter extraction
51373
- return Object.assign(Object.assign({}, token), { prefix: '/' });
51374
- }
51375
- return token;
51376
- });
51377
- }
51378
- function stripParameterSeparators(params) {
51379
- const cleaned = {};
51380
- for (const [key, value] of Object.entries(params)) {
51381
- if (typeof value === 'string') {
51382
- // Remove the separator if it appears at the start of parameter values
51383
- cleaned[key] = value.replace(new RegExp(`^${PARAM_SEPARATOR}`), '');
51384
- }
51385
- else if (Array.isArray(value)) {
51386
- // Handle array parameters (from repeated route segments)
51387
- cleaned[key] = value.map((item) => typeof item === 'string' ? item.replace(new RegExp(`^${PARAM_SEPARATOR}`), '') : item);
51388
- }
51389
- else {
51390
- cleaned[key] = value;
51391
- }
51392
- }
51393
- return cleaned;
51394
- }
51395
-
51396
- } (routePatternNormalizer));
51397
- return routePatternNormalizer;
51398
- }
51399
-
51400
- /**
51401
- * Client-safe utilities for route matching that don't import server-side
51402
- * utilities to avoid bundling issues with Turbopack
51403
- */
51404
-
51405
- var hasRequiredRouteMatchUtils;
51406
-
51407
- function requireRouteMatchUtils () {
51408
- if (hasRequiredRouteMatchUtils) return routeMatchUtils;
51409
- hasRequiredRouteMatchUtils = 1;
51410
- (function (exports$1) {
51411
- Object.defineProperty(exports$1, "__esModule", {
51412
- value: true
51413
- });
51414
- function _export(target, all) {
51415
- for (var name in all)
51416
- Object.defineProperty(target, name, {
51417
- enumerable: true,
51418
- get: all[name]
51419
- });
51420
- }
51421
- _export(exports$1, {
51422
- safeCompile: function () {
51423
- return safeCompile;
51424
- },
51425
- safePathToRegexp: function () {
51426
- return safePathToRegexp;
51427
- },
51428
- safeRegexpToFunction: function () {
51429
- return safeRegexpToFunction;
51430
- },
51431
- safeRouteMatcher: function () {
51432
- return safeRouteMatcher;
51433
- }
51434
- });
51435
- const _pathtoregexp = requirePathToRegexp();
51436
- const _routepatternnormalizer = requireRoutePatternNormalizer();
51437
- function safePathToRegexp(route, keys, options) {
51438
- if (typeof route !== 'string') {
51439
- return (0, _pathtoregexp.pathToRegexp)(route, keys, options);
51440
- }
51441
- // Check if normalization is needed and cache the result
51442
- const needsNormalization = (0, _routepatternnormalizer.hasAdjacentParameterIssues)(route);
51443
- const routeToUse = needsNormalization ? (0, _routepatternnormalizer.normalizeAdjacentParameters)(route) : route;
51444
- try {
51445
- return (0, _pathtoregexp.pathToRegexp)(routeToUse, keys, options);
51446
- }
51447
- catch (error) {
51448
- // Only try normalization if we haven't already normalized
51449
- if (!needsNormalization) {
51450
- try {
51451
- const normalizedRoute = (0, _routepatternnormalizer.normalizeAdjacentParameters)(route);
51452
- return (0, _pathtoregexp.pathToRegexp)(normalizedRoute, keys, options);
51453
- }
51454
- catch (retryError) {
51455
- // If that doesn't work, fall back to original error
51456
- throw error;
51457
- }
51458
- }
51459
- throw error;
51460
- }
51461
- }
51462
- function safeCompile(route, options) {
51463
- // Check if normalization is needed and cache the result
51464
- const needsNormalization = (0, _routepatternnormalizer.hasAdjacentParameterIssues)(route);
51465
- const routeToUse = needsNormalization ? (0, _routepatternnormalizer.normalizeAdjacentParameters)(route) : route;
51466
- try {
51467
- return (0, _pathtoregexp.compile)(routeToUse, options);
51468
- }
51469
- catch (error) {
51470
- // Only try normalization if we haven't already normalized
51471
- if (!needsNormalization) {
51472
- try {
51473
- const normalizedRoute = (0, _routepatternnormalizer.normalizeAdjacentParameters)(route);
51474
- return (0, _pathtoregexp.compile)(normalizedRoute, options);
51475
- }
51476
- catch (retryError) {
51477
- // If that doesn't work, fall back to original error
51478
- throw error;
51479
- }
51480
- }
51481
- throw error;
51482
- }
51483
- }
51484
- function safeRegexpToFunction(regexp, keys) {
51485
- const originalMatcher = (0, _pathtoregexp.regexpToFunction)(regexp, keys || []);
51486
- return (pathname) => {
51487
- const result = originalMatcher(pathname);
51488
- if (!result)
51489
- return false;
51490
- // Clean parameters before returning
51491
- return Object.assign(Object.assign({}, result), { params: (0, _routepatternnormalizer.stripParameterSeparators)(result.params) });
51492
- };
51493
- }
51494
- function safeRouteMatcher(matcherFn) {
51495
- return (pathname) => {
51496
- const result = matcherFn(pathname);
51497
- if (!result)
51498
- return false;
51499
- // Clean parameters before returning
51500
- return (0, _routepatternnormalizer.stripParameterSeparators)(result);
51501
- };
51502
- }
51503
-
51504
- } (routeMatchUtils));
51505
- return routeMatchUtils;
51506
- }
51507
-
51508
51165
  var hasRequiredRouteMatcher;
51509
51166
 
51510
51167
  function requireRouteMatcher () {
@@ -51521,10 +51178,9 @@ function requireRouteMatcher () {
51521
51178
  }
51522
51179
  });
51523
51180
  const _utils = requireUtils$1();
51524
- const _routematchutils = requireRouteMatchUtils();
51525
51181
  function getRouteMatcher(param) {
51526
51182
  let { re, groups } = param;
51527
- const rawMatcher = (pathname) => {
51183
+ return (pathname) => {
51528
51184
  const routeMatch = re.exec(pathname);
51529
51185
  if (!routeMatch)
51530
51186
  return false;
@@ -51554,8 +51210,6 @@ function requireRouteMatcher () {
51554
51210
  }
51555
51211
  return params;
51556
51212
  };
51557
- // Wrap with safe matcher to handle parameter cleaning
51558
- return (0, _routematchutils.safeRouteMatcher)(rawMatcher);
51559
51213
  }
51560
51214
 
51561
51215
  } (routeMatcher));
@@ -51607,18 +51261,12 @@ function requireConstants () {
51607
51261
  GSSP_NO_RETURNED_VALUE: function () {
51608
51262
  return GSSP_NO_RETURNED_VALUE;
51609
51263
  },
51610
- HTML_CONTENT_TYPE_HEADER: function () {
51611
- return HTML_CONTENT_TYPE_HEADER;
51612
- },
51613
51264
  INFINITE_CACHE: function () {
51614
51265
  return INFINITE_CACHE;
51615
51266
  },
51616
51267
  INSTRUMENTATION_HOOK_FILENAME: function () {
51617
51268
  return INSTRUMENTATION_HOOK_FILENAME;
51618
51269
  },
51619
- JSON_CONTENT_TYPE_HEADER: function () {
51620
- return JSON_CONTENT_TYPE_HEADER;
51621
- },
51622
51270
  MATCHED_PATH_HEADER: function () {
51623
51271
  return MATCHED_PATH_HEADER;
51624
51272
  },
@@ -51739,9 +51387,6 @@ function requireConstants () {
51739
51387
  STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR: function () {
51740
51388
  return STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR;
51741
51389
  },
51742
- TEXT_PLAIN_CONTENT_TYPE_HEADER: function () {
51743
- return TEXT_PLAIN_CONTENT_TYPE_HEADER;
51744
- },
51745
51390
  UNSTABLE_REVALIDATE_RENAME_ERROR: function () {
51746
51391
  return UNSTABLE_REVALIDATE_RENAME_ERROR;
51747
51392
  },
@@ -51752,9 +51397,6 @@ function requireConstants () {
51752
51397
  return WEBPACK_RESOURCE_QUERIES;
51753
51398
  }
51754
51399
  });
51755
- const TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain';
51756
- const HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8';
51757
- const JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8';
51758
51400
  const NEXT_QUERY_PARAM_PREFIX = 'nxtP';
51759
51401
  const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI';
51760
51402
  const MATCHED_PATH_HEADER = 'x-matched-path';
@@ -51940,13 +51582,11 @@ function requireEscapeRegexp () {
51940
51582
  return escapeRegexp;
51941
51583
  }
51942
51584
 
51943
- var getDynamicParam = {};
51944
-
51945
- var hasRequiredGetDynamicParam;
51585
+ var hasRequiredRouteRegex;
51946
51586
 
51947
- function requireGetDynamicParam () {
51948
- if (hasRequiredGetDynamicParam) return getDynamicParam;
51949
- hasRequiredGetDynamicParam = 1;
51587
+ function requireRouteRegex () {
51588
+ if (hasRequiredRouteRegex) return routeRegex;
51589
+ hasRequiredRouteRegex = 1;
51950
51590
  (function (exports$1) {
51951
51591
  Object.defineProperty(exports$1, "__esModule", {
51952
51592
  value: true
@@ -51959,86 +51599,32 @@ function requireGetDynamicParam () {
51959
51599
  });
51960
51600
  }
51961
51601
  _export(exports$1, {
51962
- PARAMETER_PATTERN: function () {
51963
- return PARAMETER_PATTERN;
51602
+ getNamedMiddlewareRegex: function () {
51603
+ return getNamedMiddlewareRegex;
51964
51604
  },
51965
- getDynamicParam: function () {
51966
- return getDynamicParam;
51605
+ getNamedRouteRegex: function () {
51606
+ return getNamedRouteRegex;
51967
51607
  },
51968
- parseMatchedParameter: function () {
51969
- return parseMatchedParameter;
51608
+ getRouteRegex: function () {
51609
+ return getRouteRegex;
51970
51610
  },
51971
51611
  parseParameter: function () {
51972
51612
  return parseParameter;
51973
51613
  }
51974
51614
  });
51975
- function getDynamicParam(params, segmentKey, dynamicParamType, pagePath, fallbackRouteParams) {
51976
- let value = params[segmentKey];
51977
- if (fallbackRouteParams && fallbackRouteParams.has(segmentKey)) {
51978
- value = fallbackRouteParams.get(segmentKey);
51979
- }
51980
- else if (Array.isArray(value)) {
51981
- value = value.map((i) => encodeURIComponent(i));
51982
- }
51983
- else if (typeof value === 'string') {
51984
- value = encodeURIComponent(value);
51985
- }
51986
- if (!value) {
51987
- const isCatchall = dynamicParamType === 'c';
51988
- const isOptionalCatchall = dynamicParamType === 'oc';
51989
- if (isCatchall || isOptionalCatchall) {
51990
- // handle the case where an optional catchall does not have a value,
51991
- // e.g. `/dashboard/[[...slug]]` when requesting `/dashboard`
51992
- if (isOptionalCatchall) {
51993
- return {
51994
- param: segmentKey,
51995
- value: null,
51996
- type: dynamicParamType,
51997
- treeSegment: [
51998
- segmentKey,
51999
- '',
52000
- dynamicParamType
52001
- ]
52002
- };
52003
- }
52004
- // handle the case where a catchall or optional catchall does not have a value,
52005
- // e.g. `/foo/bar/hello` and `@slot/[...catchall]` or `@slot/[[...catchall]]` is matched
52006
- value = pagePath.split('/') // remove the first empty string
52007
- .slice(1) // replace any dynamic params with the actual values
52008
- .flatMap((pathSegment) => {
52009
- const param = parseParameter(pathSegment);
52010
- var _params_param_key;
52011
- // if the segment matches a param, return the param value
52012
- // otherwise, it's a static segment, so just return that
52013
- return (_params_param_key = params[param.key]) != null ? _params_param_key : param.key;
52014
- });
52015
- return {
52016
- param: segmentKey,
52017
- value,
52018
- type: dynamicParamType,
52019
- // This value always has to be a string.
52020
- treeSegment: [
52021
- segmentKey,
52022
- value.join('/'),
52023
- dynamicParamType
52024
- ]
52025
- };
52026
- }
52027
- }
52028
- return {
52029
- param: segmentKey,
52030
- // The value that is passed to user code.
52031
- value: value,
52032
- // The value that is rendered in the router tree.
52033
- treeSegment: [
52034
- segmentKey,
52035
- Array.isArray(value) ? value.join('/') : value,
52036
- dynamicParamType
52037
- ],
52038
- type: dynamicParamType
52039
- };
52040
- }
52041
- const PARAMETER_PATTERN = /^([^[]*)\[((?:\[[^\]]*\])|[^\]]+)\](.*)$/;
51615
+ const _constants = requireConstants();
51616
+ const _interceptionroutes = requireInterceptionRoutes();
51617
+ const _escaperegexp = requireEscapeRegexp();
51618
+ const _removetrailingslash = requireRemoveTrailingSlash();
51619
+ /**
51620
+ * Regular expression pattern used to match route parameters.
51621
+ * Matches both single parameters and parameter groups.
51622
+ * Examples:
51623
+ * - `[[...slug]]` matches parameter group with key 'slug', repeat: true, optional: true
51624
+ * - `[...slug]` matches parameter group with key 'slug', repeat: true, optional: false
51625
+ * - `[[foo]]` matches parameter with key 'foo', repeat: false, optional: true
51626
+ * - `[bar]` matches parameter with key 'bar', repeat: false, optional: false
51627
+ */ const PARAMETER_PATTERN = /^([^[]*)\[((?:\[[^\]]*\])|[^\]]+)\](.*)$/;
52042
51628
  function parseParameter(param) {
52043
51629
  const match = param.match(PARAMETER_PATTERN);
52044
51630
  if (!match) {
@@ -52046,7 +51632,17 @@ function requireGetDynamicParam () {
52046
51632
  }
52047
51633
  return parseMatchedParameter(match[2]);
52048
51634
  }
52049
- function parseMatchedParameter(param) {
51635
+ /**
51636
+ * Parses a matched parameter from the PARAMETER_PATTERN regex to a data structure that can be used
51637
+ * to generate the parametrized route.
51638
+ * Examples:
51639
+ * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: true }`
51640
+ * - `...slug` -> `{ key: 'slug', repeat: true, optional: false }`
51641
+ * - `[foo]` -> `{ key: 'foo', repeat: false, optional: true }`
51642
+ * - `bar` -> `{ key: 'bar', repeat: false, optional: false }`
51643
+ * @param param - The matched parameter to parse.
51644
+ * @returns The parsed parameter as a data structure.
51645
+ */ function parseMatchedParameter(param) {
52050
51646
  const optional = param.startsWith('[') && param.endsWith(']');
52051
51647
  if (optional) {
52052
51648
  param = param.slice(1, -1);
@@ -52061,53 +51657,16 @@ function requireGetDynamicParam () {
52061
51657
  optional
52062
51658
  };
52063
51659
  }
52064
-
52065
- } (getDynamicParam));
52066
- return getDynamicParam;
52067
- }
52068
-
52069
- var hasRequiredRouteRegex;
52070
-
52071
- function requireRouteRegex () {
52072
- if (hasRequiredRouteRegex) return routeRegex;
52073
- hasRequiredRouteRegex = 1;
52074
- (function (exports$1) {
52075
- Object.defineProperty(exports$1, "__esModule", {
52076
- value: true
52077
- });
52078
- function _export(target, all) {
52079
- for (var name in all)
52080
- Object.defineProperty(target, name, {
52081
- enumerable: true,
52082
- get: all[name]
52083
- });
52084
- }
52085
- _export(exports$1, {
52086
- getNamedMiddlewareRegex: function () {
52087
- return getNamedMiddlewareRegex;
52088
- },
52089
- getNamedRouteRegex: function () {
52090
- return getNamedRouteRegex;
52091
- },
52092
- getRouteRegex: function () {
52093
- return getRouteRegex;
52094
- }
52095
- });
52096
- const _constants = requireConstants();
52097
- const _interceptionroutes = requireInterceptionRoutes();
52098
- const _escaperegexp = requireEscapeRegexp();
52099
- const _removetrailingslash = requireRemoveTrailingSlash();
52100
- const _getdynamicparam = requireGetDynamicParam();
52101
51660
  function getParametrizedRoute(route, includeSuffix, includePrefix) {
52102
51661
  const groups = {};
52103
51662
  let groupIndex = 1;
52104
51663
  const segments = [];
52105
51664
  for (const segment of (0, _removetrailingslash.removeTrailingSlash)(route).slice(1).split('/')) {
52106
51665
  const markerMatch = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.find((m) => segment.startsWith(m));
52107
- const paramMatches = segment.match(_getdynamicparam.PARAMETER_PATTERN) // Check for parameters
51666
+ const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters
52108
51667
  ;
52109
51668
  if (markerMatch && paramMatches && paramMatches[2]) {
52110
- const { key, optional, repeat } = (0, _getdynamicparam.parseMatchedParameter)(paramMatches[2]);
51669
+ const { key, optional, repeat } = parseMatchedParameter(paramMatches[2]);
52111
51670
  groups[key] = {
52112
51671
  pos: groupIndex++,
52113
51672
  repeat,
@@ -52116,7 +51675,7 @@ function requireRouteRegex () {
52116
51675
  segments.push("/" + (0, _escaperegexp.escapeStringRegexp)(markerMatch) + "([^/]+?)");
52117
51676
  }
52118
51677
  else if (paramMatches && paramMatches[2]) {
52119
- const { key, repeat, optional } = (0, _getdynamicparam.parseMatchedParameter)(paramMatches[2]);
51678
+ const { key, repeat, optional } = parseMatchedParameter(paramMatches[2]);
52120
51679
  groups[key] = {
52121
51680
  pos: groupIndex++,
52122
51681
  repeat,
@@ -52174,7 +51733,7 @@ function requireRouteRegex () {
52174
51733
  }
52175
51734
  function getSafeKeyFromSegment(param) {
52176
51735
  let { interceptionMarker, getSafeRouteKey, segment, routeKeys, keyPrefix, backreferenceDuplicateKeys } = param;
52177
- const { key, optional, repeat } = (0, _getdynamicparam.parseMatchedParameter)(segment);
51736
+ const { key, optional, repeat } = parseMatchedParameter(segment);
52178
51737
  // replace any non-word characters since they can break
52179
51738
  // the named regex
52180
51739
  let cleanedKey = key.replace(/\W/g, '');
@@ -52224,7 +51783,7 @@ function requireRouteRegex () {
52224
51783
  const segments = [];
52225
51784
  for (const segment of (0, _removetrailingslash.removeTrailingSlash)(route).slice(1).split('/')) {
52226
51785
  const hasInterceptionMarker = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.some((m) => segment.startsWith(m));
52227
- const paramMatches = segment.match(_getdynamicparam.PARAMETER_PATTERN) // Check for parameters
51786
+ const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters
52228
51787
  ;
52229
51788
  if (hasInterceptionMarker && paramMatches && paramMatches[2]) {
52230
51789
  // If there's an interception marker, add it to the segments.
@@ -52382,8 +51941,6 @@ function requireResolveHref () {
52382
51941
  const _islocalurl = requireIsLocalUrl();
52383
51942
  const _utils1 = requireUtils();
52384
51943
  const _interpolateas = requireInterpolateAs();
52385
- const _routeregex = requireRouteRegex();
52386
- const _routematcher = requireRouteMatcher();
52387
51944
  function resolveHref(router, href, resolveAs) {
52388
51945
  // we use a dummy base url for relative urls
52389
51946
  let base;
@@ -52406,31 +51963,7 @@ function requireResolveHref () {
52406
51963
  ] : urlAsString;
52407
51964
  }
52408
51965
  try {
52409
- let baseBase = urlAsString.startsWith('#') ? router.asPath : router.pathname;
52410
- // If the provided href is only a query string, it is safer to use the asPath
52411
- // considering rewrites.
52412
- if (urlAsString.startsWith('?')) {
52413
- baseBase = router.asPath;
52414
- // However, if is a dynamic route, we need to use the pathname to preserve the
52415
- // query interpolation and rewrites (router.pathname will look like "/[slug]").
52416
- if ((0, _utils1.isDynamicRoute)(router.pathname)) {
52417
- baseBase = router.pathname;
52418
- const routeRegex = (0, _routeregex.getRouteRegex)(router.pathname);
52419
- const match = (0, _routematcher.getRouteMatcher)(routeRegex)(router.asPath);
52420
- // For dynamic routes, if asPath doesn't match the pathname regex, it is a rewritten path.
52421
- // In this case, should use asPath to preserve the current URL.
52422
- if (!match) {
52423
- baseBase = router.asPath;
52424
- }
52425
- // Note: There is an edge case where the pathname is dynamic, and also a rewrite path to the same segment.
52426
- // E.g. in "/[slug]" path, rewrite "/foo" -> "/bar"
52427
- // In this case, it will be treated as a non-rewritten path and possibly interpolate the query string.
52428
- // E.g., "/any?slug=foo" will become the content of "/foo", not rewritten as "/bar"
52429
- // This is currently a trade-off of not resolving rewrite paths on every Router/Link call,
52430
- // but using a lighter route regex pattern check.
52431
- }
52432
- }
52433
- base = new URL(baseBase, 'http://n');
51966
+ base = new URL(urlAsString.startsWith('#') ? router.asPath : router.pathname, 'http://n');
52434
51967
  }
52435
51968
  catch (_) {
52436
51969
  // fallback to / for invalid asPath values e.g. //
@@ -53897,7 +53430,7 @@ function PageHero(_ref) {
53897
53430
  }), jsx("h1", {
53898
53431
  className: "text-4xl sm:text-5xl lg:text-6xl font-bold text-mw-primary-700 dark:text-mw-primary-400 mb-6",
53899
53432
  children: jsx("span", {
53900
- className: "bg-gradient-to-r from-mw-primary-600 to-mw-primary-800 bg-clip-text \n supports-[background-clip:text]:text-transparent",
53433
+ className: "bg-gradient-to-r from-mw-primary-600 to-mw-primary-800 bg-clip-text \r\n supports-[background-clip:text]:text-transparent",
53901
53434
  children: title
53902
53435
  })
53903
53436
  }), jsx("p", {
@@ -55063,7 +54596,7 @@ const fromTheme = key => {
55063
54596
  };
55064
54597
  const arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i;
55065
54598
  const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
55066
- const fractionRegex = /^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/;
54599
+ const fractionRegex = /^\d+\/\d+$/;
55067
54600
  const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
55068
54601
  const lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/;
55069
54602
  const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
@@ -55089,8 +54622,6 @@ const isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever
55089
54622
  const isArbitraryValue = value => arbitraryValueRegex.test(value);
55090
54623
  const isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);
55091
54624
  const isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);
55092
- const isArbitraryWeight = value => getIsArbitraryValue(value, isLabelWeight, isAny);
55093
- const isArbitraryFamilyName = value => getIsArbitraryValue(value, isLabelFamilyName, isNever);
55094
54625
  const isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);
55095
54626
  const isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);
55096
54627
  const isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);
@@ -55101,7 +54632,6 @@ const isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLab
55101
54632
  const isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);
55102
54633
  const isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);
55103
54634
  const isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);
55104
- const isArbitraryVariableWeight = value => getIsArbitraryVariable(value, isLabelWeight, true);
55105
54635
  // Helpers
55106
54636
  const getIsArbitraryValue = (value, testLabel, testValue) => {
55107
54637
  const result = arbitraryValueRegex.exec(value);
@@ -55130,7 +54660,6 @@ const isLabelSize = label => label === 'length' || label === 'size' || label ===
55130
54660
  const isLabelLength = label => label === 'length';
55131
54661
  const isLabelNumber = label => label === 'number';
55132
54662
  const isLabelFamilyName = label => label === 'family-name';
55133
- const isLabelWeight = label => label === 'number' || label === 'weight';
55134
54663
  const isLabelShadow = label => label === 'shadow';
55135
54664
  const getDefaultConfig = () => {
55136
54665
  /**
@@ -55189,8 +54718,6 @@ const getDefaultConfig = () => {
55189
54718
  const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];
55190
54719
  const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];
55191
54720
  const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
55192
- const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
55193
- const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
55194
54721
  const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];
55195
54722
  const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {
55196
54723
  position: [isArbitraryVariable, isArbitraryValue]
@@ -55391,66 +54918,40 @@ const getDefaultConfig = () => {
55391
54918
  */
55392
54919
  position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],
55393
54920
  /**
55394
- * Inset
54921
+ * Top / Right / Bottom / Left
55395
54922
  * @see https://tailwindcss.com/docs/top-right-bottom-left
55396
54923
  */
55397
54924
  inset: [{
55398
54925
  inset: scaleInset()
55399
54926
  }],
55400
54927
  /**
55401
- * Inset Inline
54928
+ * Right / Left
55402
54929
  * @see https://tailwindcss.com/docs/top-right-bottom-left
55403
54930
  */
55404
54931
  'inset-x': [{
55405
54932
  'inset-x': scaleInset()
55406
54933
  }],
55407
54934
  /**
55408
- * Inset Block
54935
+ * Top / Bottom
55409
54936
  * @see https://tailwindcss.com/docs/top-right-bottom-left
55410
54937
  */
55411
54938
  'inset-y': [{
55412
54939
  'inset-y': scaleInset()
55413
54940
  }],
55414
54941
  /**
55415
- * Inset Inline Start
54942
+ * Start
55416
54943
  * @see https://tailwindcss.com/docs/top-right-bottom-left
55417
- * @todo class group will be renamed to `inset-s` in next major release
55418
54944
  */
55419
54945
  start: [{
55420
- 'inset-s': scaleInset(),
55421
- /**
55422
- * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.
55423
- * @see https://github.com/tailwindlabs/tailwindcss/pull/19613
55424
- */
55425
54946
  start: scaleInset()
55426
54947
  }],
55427
54948
  /**
55428
- * Inset Inline End
54949
+ * End
55429
54950
  * @see https://tailwindcss.com/docs/top-right-bottom-left
55430
- * @todo class group will be renamed to `inset-e` in next major release
55431
54951
  */
55432
54952
  end: [{
55433
- 'inset-e': scaleInset(),
55434
- /**
55435
- * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.
55436
- * @see https://github.com/tailwindlabs/tailwindcss/pull/19613
55437
- */
55438
54953
  end: scaleInset()
55439
54954
  }],
55440
- /**
55441
- * Inset Block Start
55442
- * @see https://tailwindcss.com/docs/top-right-bottom-left
55443
- */
55444
- 'inset-bs': [{
55445
- 'inset-bs': scaleInset()
55446
- }],
55447
- /**
55448
- * Inset Block End
55449
- * @see https://tailwindcss.com/docs/top-right-bottom-left
55450
- */
55451
- 'inset-be': [{
55452
- 'inset-be': scaleInset()
55453
- }],
55454
54955
  /**
55455
54956
  * Top
55456
54957
  * @see https://tailwindcss.com/docs/top-right-bottom-left
@@ -55717,47 +55218,33 @@ const getDefaultConfig = () => {
55717
55218
  p: scaleUnambiguousSpacing()
55718
55219
  }],
55719
55220
  /**
55720
- * Padding Inline
55221
+ * Padding X
55721
55222
  * @see https://tailwindcss.com/docs/padding
55722
55223
  */
55723
55224
  px: [{
55724
55225
  px: scaleUnambiguousSpacing()
55725
55226
  }],
55726
55227
  /**
55727
- * Padding Block
55228
+ * Padding Y
55728
55229
  * @see https://tailwindcss.com/docs/padding
55729
55230
  */
55730
55231
  py: [{
55731
55232
  py: scaleUnambiguousSpacing()
55732
55233
  }],
55733
55234
  /**
55734
- * Padding Inline Start
55235
+ * Padding Start
55735
55236
  * @see https://tailwindcss.com/docs/padding
55736
55237
  */
55737
55238
  ps: [{
55738
55239
  ps: scaleUnambiguousSpacing()
55739
55240
  }],
55740
55241
  /**
55741
- * Padding Inline End
55242
+ * Padding End
55742
55243
  * @see https://tailwindcss.com/docs/padding
55743
55244
  */
55744
55245
  pe: [{
55745
55246
  pe: scaleUnambiguousSpacing()
55746
55247
  }],
55747
- /**
55748
- * Padding Block Start
55749
- * @see https://tailwindcss.com/docs/padding
55750
- */
55751
- pbs: [{
55752
- pbs: scaleUnambiguousSpacing()
55753
- }],
55754
- /**
55755
- * Padding Block End
55756
- * @see https://tailwindcss.com/docs/padding
55757
- */
55758
- pbe: [{
55759
- pbe: scaleUnambiguousSpacing()
55760
- }],
55761
55248
  /**
55762
55249
  * Padding Top
55763
55250
  * @see https://tailwindcss.com/docs/padding
@@ -55794,47 +55281,33 @@ const getDefaultConfig = () => {
55794
55281
  m: scaleMargin()
55795
55282
  }],
55796
55283
  /**
55797
- * Margin Inline
55284
+ * Margin X
55798
55285
  * @see https://tailwindcss.com/docs/margin
55799
55286
  */
55800
55287
  mx: [{
55801
55288
  mx: scaleMargin()
55802
55289
  }],
55803
55290
  /**
55804
- * Margin Block
55291
+ * Margin Y
55805
55292
  * @see https://tailwindcss.com/docs/margin
55806
55293
  */
55807
55294
  my: [{
55808
55295
  my: scaleMargin()
55809
55296
  }],
55810
55297
  /**
55811
- * Margin Inline Start
55298
+ * Margin Start
55812
55299
  * @see https://tailwindcss.com/docs/margin
55813
55300
  */
55814
55301
  ms: [{
55815
55302
  ms: scaleMargin()
55816
55303
  }],
55817
55304
  /**
55818
- * Margin Inline End
55305
+ * Margin End
55819
55306
  * @see https://tailwindcss.com/docs/margin
55820
55307
  */
55821
55308
  me: [{
55822
55309
  me: scaleMargin()
55823
55310
  }],
55824
- /**
55825
- * Margin Block Start
55826
- * @see https://tailwindcss.com/docs/margin
55827
- */
55828
- mbs: [{
55829
- mbs: scaleMargin()
55830
- }],
55831
- /**
55832
- * Margin Block End
55833
- * @see https://tailwindcss.com/docs/margin
55834
- */
55835
- mbe: [{
55836
- mbe: scaleMargin()
55837
- }],
55838
55311
  /**
55839
55312
  * Margin Top
55840
55313
  * @see https://tailwindcss.com/docs/margin
@@ -55897,48 +55370,6 @@ const getDefaultConfig = () => {
55897
55370
  size: [{
55898
55371
  size: scaleSizing()
55899
55372
  }],
55900
- /**
55901
- * Inline Size
55902
- * @see https://tailwindcss.com/docs/width
55903
- */
55904
- 'inline-size': [{
55905
- inline: ['auto', ...scaleSizingInline()]
55906
- }],
55907
- /**
55908
- * Min-Inline Size
55909
- * @see https://tailwindcss.com/docs/min-width
55910
- */
55911
- 'min-inline-size': [{
55912
- 'min-inline': ['auto', ...scaleSizingInline()]
55913
- }],
55914
- /**
55915
- * Max-Inline Size
55916
- * @see https://tailwindcss.com/docs/max-width
55917
- */
55918
- 'max-inline-size': [{
55919
- 'max-inline': ['none', ...scaleSizingInline()]
55920
- }],
55921
- /**
55922
- * Block Size
55923
- * @see https://tailwindcss.com/docs/height
55924
- */
55925
- 'block-size': [{
55926
- block: ['auto', ...scaleSizingBlock()]
55927
- }],
55928
- /**
55929
- * Min-Block Size
55930
- * @see https://tailwindcss.com/docs/min-height
55931
- */
55932
- 'min-block-size': [{
55933
- 'min-block': ['auto', ...scaleSizingBlock()]
55934
- }],
55935
- /**
55936
- * Max-Block Size
55937
- * @see https://tailwindcss.com/docs/max-height
55938
- */
55939
- 'max-block-size': [{
55940
- 'max-block': ['none', ...scaleSizingBlock()]
55941
- }],
55942
55373
  /**
55943
55374
  * Width
55944
55375
  * @see https://tailwindcss.com/docs/width
@@ -56011,7 +55442,7 @@ const getDefaultConfig = () => {
56011
55442
  * @see https://tailwindcss.com/docs/font-weight
56012
55443
  */
56013
55444
  'font-weight': [{
56014
- font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight]
55445
+ font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]
56015
55446
  }],
56016
55447
  /**
56017
55448
  * Font Stretch
@@ -56025,14 +55456,7 @@ const getDefaultConfig = () => {
56025
55456
  * @see https://tailwindcss.com/docs/font-family
56026
55457
  */
56027
55458
  'font-family': [{
56028
- font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont]
56029
- }],
56030
- /**
56031
- * Font Feature Settings
56032
- * @see https://tailwindcss.com/docs/font-feature-settings
56033
- */
56034
- 'font-features': [{
56035
- 'font-features': [isArbitraryValue]
55459
+ font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]
56036
55460
  }],
56037
55461
  /**
56038
55462
  * Font Variant Numeric
@@ -56452,47 +55876,33 @@ const getDefaultConfig = () => {
56452
55876
  border: scaleBorderWidth()
56453
55877
  }],
56454
55878
  /**
56455
- * Border Width Inline
55879
+ * Border Width X
56456
55880
  * @see https://tailwindcss.com/docs/border-width
56457
55881
  */
56458
55882
  'border-w-x': [{
56459
55883
  'border-x': scaleBorderWidth()
56460
55884
  }],
56461
55885
  /**
56462
- * Border Width Block
55886
+ * Border Width Y
56463
55887
  * @see https://tailwindcss.com/docs/border-width
56464
55888
  */
56465
55889
  'border-w-y': [{
56466
55890
  'border-y': scaleBorderWidth()
56467
55891
  }],
56468
55892
  /**
56469
- * Border Width Inline Start
55893
+ * Border Width Start
56470
55894
  * @see https://tailwindcss.com/docs/border-width
56471
55895
  */
56472
55896
  'border-w-s': [{
56473
55897
  'border-s': scaleBorderWidth()
56474
55898
  }],
56475
55899
  /**
56476
- * Border Width Inline End
55900
+ * Border Width End
56477
55901
  * @see https://tailwindcss.com/docs/border-width
56478
55902
  */
56479
55903
  'border-w-e': [{
56480
55904
  'border-e': scaleBorderWidth()
56481
55905
  }],
56482
- /**
56483
- * Border Width Block Start
56484
- * @see https://tailwindcss.com/docs/border-width
56485
- */
56486
- 'border-w-bs': [{
56487
- 'border-bs': scaleBorderWidth()
56488
- }],
56489
- /**
56490
- * Border Width Block End
56491
- * @see https://tailwindcss.com/docs/border-width
56492
- */
56493
- 'border-w-be': [{
56494
- 'border-be': scaleBorderWidth()
56495
- }],
56496
55906
  /**
56497
55907
  * Border Width Top
56498
55908
  * @see https://tailwindcss.com/docs/border-width
@@ -56567,47 +55977,33 @@ const getDefaultConfig = () => {
56567
55977
  border: scaleColor()
56568
55978
  }],
56569
55979
  /**
56570
- * Border Color Inline
55980
+ * Border Color X
56571
55981
  * @see https://tailwindcss.com/docs/border-color
56572
55982
  */
56573
55983
  'border-color-x': [{
56574
55984
  'border-x': scaleColor()
56575
55985
  }],
56576
55986
  /**
56577
- * Border Color Block
55987
+ * Border Color Y
56578
55988
  * @see https://tailwindcss.com/docs/border-color
56579
55989
  */
56580
55990
  'border-color-y': [{
56581
55991
  'border-y': scaleColor()
56582
55992
  }],
56583
55993
  /**
56584
- * Border Color Inline Start
55994
+ * Border Color S
56585
55995
  * @see https://tailwindcss.com/docs/border-color
56586
55996
  */
56587
55997
  'border-color-s': [{
56588
55998
  'border-s': scaleColor()
56589
55999
  }],
56590
56000
  /**
56591
- * Border Color Inline End
56001
+ * Border Color E
56592
56002
  * @see https://tailwindcss.com/docs/border-color
56593
56003
  */
56594
56004
  'border-color-e': [{
56595
56005
  'border-e': scaleColor()
56596
56006
  }],
56597
- /**
56598
- * Border Color Block Start
56599
- * @see https://tailwindcss.com/docs/border-color
56600
- */
56601
- 'border-color-bs': [{
56602
- 'border-bs': scaleColor()
56603
- }],
56604
- /**
56605
- * Border Color Block End
56606
- * @see https://tailwindcss.com/docs/border-color
56607
- */
56608
- 'border-color-be': [{
56609
- 'border-be': scaleColor()
56610
- }],
56611
56007
  /**
56612
56008
  * Border Color Top
56613
56009
  * @see https://tailwindcss.com/docs/border-color
@@ -57472,47 +56868,33 @@ const getDefaultConfig = () => {
57472
56868
  'scroll-m': scaleUnambiguousSpacing()
57473
56869
  }],
57474
56870
  /**
57475
- * Scroll Margin Inline
56871
+ * Scroll Margin X
57476
56872
  * @see https://tailwindcss.com/docs/scroll-margin
57477
56873
  */
57478
56874
  'scroll-mx': [{
57479
56875
  'scroll-mx': scaleUnambiguousSpacing()
57480
56876
  }],
57481
56877
  /**
57482
- * Scroll Margin Block
56878
+ * Scroll Margin Y
57483
56879
  * @see https://tailwindcss.com/docs/scroll-margin
57484
56880
  */
57485
56881
  'scroll-my': [{
57486
56882
  'scroll-my': scaleUnambiguousSpacing()
57487
56883
  }],
57488
56884
  /**
57489
- * Scroll Margin Inline Start
56885
+ * Scroll Margin Start
57490
56886
  * @see https://tailwindcss.com/docs/scroll-margin
57491
56887
  */
57492
56888
  'scroll-ms': [{
57493
56889
  'scroll-ms': scaleUnambiguousSpacing()
57494
56890
  }],
57495
56891
  /**
57496
- * Scroll Margin Inline End
56892
+ * Scroll Margin End
57497
56893
  * @see https://tailwindcss.com/docs/scroll-margin
57498
56894
  */
57499
56895
  'scroll-me': [{
57500
56896
  'scroll-me': scaleUnambiguousSpacing()
57501
56897
  }],
57502
- /**
57503
- * Scroll Margin Block Start
57504
- * @see https://tailwindcss.com/docs/scroll-margin
57505
- */
57506
- 'scroll-mbs': [{
57507
- 'scroll-mbs': scaleUnambiguousSpacing()
57508
- }],
57509
- /**
57510
- * Scroll Margin Block End
57511
- * @see https://tailwindcss.com/docs/scroll-margin
57512
- */
57513
- 'scroll-mbe': [{
57514
- 'scroll-mbe': scaleUnambiguousSpacing()
57515
- }],
57516
56898
  /**
57517
56899
  * Scroll Margin Top
57518
56900
  * @see https://tailwindcss.com/docs/scroll-margin
@@ -57549,47 +56931,33 @@ const getDefaultConfig = () => {
57549
56931
  'scroll-p': scaleUnambiguousSpacing()
57550
56932
  }],
57551
56933
  /**
57552
- * Scroll Padding Inline
56934
+ * Scroll Padding X
57553
56935
  * @see https://tailwindcss.com/docs/scroll-padding
57554
56936
  */
57555
56937
  'scroll-px': [{
57556
56938
  'scroll-px': scaleUnambiguousSpacing()
57557
56939
  }],
57558
56940
  /**
57559
- * Scroll Padding Block
56941
+ * Scroll Padding Y
57560
56942
  * @see https://tailwindcss.com/docs/scroll-padding
57561
56943
  */
57562
56944
  'scroll-py': [{
57563
56945
  'scroll-py': scaleUnambiguousSpacing()
57564
56946
  }],
57565
56947
  /**
57566
- * Scroll Padding Inline Start
56948
+ * Scroll Padding Start
57567
56949
  * @see https://tailwindcss.com/docs/scroll-padding
57568
56950
  */
57569
56951
  'scroll-ps': [{
57570
56952
  'scroll-ps': scaleUnambiguousSpacing()
57571
56953
  }],
57572
56954
  /**
57573
- * Scroll Padding Inline End
56955
+ * Scroll Padding End
57574
56956
  * @see https://tailwindcss.com/docs/scroll-padding
57575
56957
  */
57576
56958
  'scroll-pe': [{
57577
56959
  'scroll-pe': scaleUnambiguousSpacing()
57578
56960
  }],
57579
- /**
57580
- * Scroll Padding Block Start
57581
- * @see https://tailwindcss.com/docs/scroll-padding
57582
- */
57583
- 'scroll-pbs': [{
57584
- 'scroll-pbs': scaleUnambiguousSpacing()
57585
- }],
57586
- /**
57587
- * Scroll Padding Block End
57588
- * @see https://tailwindcss.com/docs/scroll-padding
57589
- */
57590
- 'scroll-pbe': [{
57591
- 'scroll-pbe': scaleUnambiguousSpacing()
57592
- }],
57593
56961
  /**
57594
56962
  * Scroll Padding Top
57595
56963
  * @see https://tailwindcss.com/docs/scroll-padding
@@ -57724,15 +57092,15 @@ const getDefaultConfig = () => {
57724
57092
  conflictingClassGroups: {
57725
57093
  overflow: ['overflow-x', 'overflow-y'],
57726
57094
  overscroll: ['overscroll-x', 'overscroll-y'],
57727
- inset: ['inset-x', 'inset-y', 'inset-bs', 'inset-be', 'start', 'end', 'top', 'right', 'bottom', 'left'],
57095
+ inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],
57728
57096
  'inset-x': ['right', 'left'],
57729
57097
  'inset-y': ['top', 'bottom'],
57730
57098
  flex: ['basis', 'grow', 'shrink'],
57731
57099
  gap: ['gap-x', 'gap-y'],
57732
- p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],
57100
+ p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],
57733
57101
  px: ['pr', 'pl'],
57734
57102
  py: ['pt', 'pb'],
57735
- m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],
57103
+ m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],
57736
57104
  mx: ['mr', 'ml'],
57737
57105
  my: ['mt', 'mb'],
57738
57106
  size: ['w', 'h'],
@@ -57752,18 +57120,18 @@ const getDefaultConfig = () => {
57752
57120
  'rounded-b': ['rounded-br', 'rounded-bl'],
57753
57121
  'rounded-l': ['rounded-tl', 'rounded-bl'],
57754
57122
  'border-spacing': ['border-spacing-x', 'border-spacing-y'],
57755
- 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-bs', 'border-w-be', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],
57123
+ 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],
57756
57124
  'border-w-x': ['border-w-r', 'border-w-l'],
57757
57125
  'border-w-y': ['border-w-t', 'border-w-b'],
57758
- 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-bs', 'border-color-be', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],
57126
+ 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],
57759
57127
  'border-color-x': ['border-color-r', 'border-color-l'],
57760
57128
  'border-color-y': ['border-color-t', 'border-color-b'],
57761
57129
  translate: ['translate-x', 'translate-y', 'translate-none'],
57762
57130
  'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],
57763
- 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],
57131
+ 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],
57764
57132
  'scroll-mx': ['scroll-mr', 'scroll-ml'],
57765
57133
  'scroll-my': ['scroll-mt', 'scroll-mb'],
57766
- 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],
57134
+ 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],
57767
57135
  'scroll-px': ['scroll-pr', 'scroll-pl'],
57768
57136
  'scroll-py': ['scroll-pt', 'scroll-pb'],
57769
57137
  touch: ['touch-x', 'touch-y', 'touch-pz'],