@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.js CHANGED
@@ -31697,6 +31697,10 @@ const oppositeSideMap = {
31697
31697
  bottom: 'top',
31698
31698
  top: 'bottom'
31699
31699
  };
31700
+ const oppositeAlignmentMap = {
31701
+ start: 'end',
31702
+ end: 'start'
31703
+ };
31700
31704
  function clamp(start, value, end) {
31701
31705
  return max(start, min(value, end));
31702
31706
  }
@@ -31715,9 +31719,9 @@ function getOppositeAxis(axis) {
31715
31719
  function getAxisLength(axis) {
31716
31720
  return axis === 'y' ? 'height' : 'width';
31717
31721
  }
31722
+ const yAxisSides = /*#__PURE__*/ new Set(['top', 'bottom']);
31718
31723
  function getSideAxis(placement) {
31719
- const firstChar = placement[0];
31720
- return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';
31724
+ return yAxisSides.has(getSide(placement)) ? 'y' : 'x';
31721
31725
  }
31722
31726
  function getAlignmentAxis(placement) {
31723
31727
  return getOppositeAxis(getSideAxis(placement));
@@ -31740,7 +31744,7 @@ function getExpandedPlacements(placement) {
31740
31744
  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
31741
31745
  }
31742
31746
  function getOppositeAlignmentPlacement(placement) {
31743
- return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');
31747
+ return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);
31744
31748
  }
31745
31749
  const lrPlacement = ['left', 'right'];
31746
31750
  const rlPlacement = ['right', 'left'];
@@ -31772,8 +31776,7 @@ function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
31772
31776
  return list;
31773
31777
  }
31774
31778
  function getOppositePlacement(placement) {
31775
- const side = getSide(placement);
31776
- return oppositeSideMap[side] + placement.slice(side.length);
31779
+ return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);
31777
31780
  }
31778
31781
  function expandPaddingObject(padding) {
31779
31782
  return Object.assign({ top: 0, right: 0, bottom: 0, left: 0 }, padding);
@@ -31903,8 +31906,6 @@ async function detectOverflow(state, options) {
31903
31906
  right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
31904
31907
  };
31905
31908
  }
31906
- // Maximum number of resets that can occur before bailing to avoid infinite reset loops.
31907
- const MAX_RESET_COUNT = 50;
31908
31909
  /**
31909
31910
  * Computes the `x` and `y` coordinates that will place the floating element
31910
31911
  * next to a given reference element.
@@ -31914,7 +31915,7 @@ const MAX_RESET_COUNT = 50;
31914
31915
  */
31915
31916
  const computePosition$1 = async (reference, floating, config) => {
31916
31917
  const { placement = 'bottom', strategy = 'absolute', middleware = [], platform } = config;
31917
- const platformWithDetectOverflow = platform.detectOverflow ? platform : Object.assign(Object.assign({}, platform), { detectOverflow });
31918
+ const validMiddleware = middleware.filter(Boolean);
31918
31919
  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));
31919
31920
  let rects = await platform.getElementRects({
31920
31921
  reference,
@@ -31923,14 +31924,11 @@ const computePosition$1 = async (reference, floating, config) => {
31923
31924
  });
31924
31925
  let { x, y } = computeCoordsFromPlacement(rects, placement, rtl);
31925
31926
  let statefulPlacement = placement;
31927
+ let middlewareData = {};
31926
31928
  let resetCount = 0;
31927
- const middlewareData = {};
31928
- for (let i = 0; i < middleware.length; i++) {
31929
- const currentMiddleware = middleware[i];
31930
- if (!currentMiddleware) {
31931
- continue;
31932
- }
31933
- const { name, fn } = currentMiddleware;
31929
+ for (let i = 0; i < validMiddleware.length; i++) {
31930
+ var _platform$detectOverf;
31931
+ const { name, fn } = validMiddleware[i];
31934
31932
  const { x: nextX, y: nextY, data, reset } = await fn({
31935
31933
  x,
31936
31934
  y,
@@ -31939,7 +31937,7 @@ const computePosition$1 = async (reference, floating, config) => {
31939
31937
  strategy,
31940
31938
  middlewareData,
31941
31939
  rects,
31942
- platform: platformWithDetectOverflow,
31940
+ platform: Object.assign(Object.assign({}, platform), { detectOverflow: (_platform$detectOverf = platform.detectOverflow) != null ? _platform$detectOverf : detectOverflow }),
31943
31941
  elements: {
31944
31942
  reference,
31945
31943
  floating
@@ -31947,8 +31945,8 @@ const computePosition$1 = async (reference, floating, config) => {
31947
31945
  });
31948
31946
  x = nextX != null ? nextX : x;
31949
31947
  y = nextY != null ? nextY : y;
31950
- middlewareData[name] = Object.assign(Object.assign({}, middlewareData[name]), data);
31951
- if (reset && resetCount < MAX_RESET_COUNT) {
31948
+ middlewareData = Object.assign(Object.assign({}, middlewareData), { [name]: Object.assign(Object.assign({}, middlewareData[name]), data) });
31949
+ if (reset && resetCount <= 50) {
31952
31950
  resetCount++;
31953
31951
  if (typeof reset === 'object') {
31954
31952
  if (reset.placement) {
@@ -32502,38 +32500,35 @@ function isShadowRoot(value) {
32502
32500
  }
32503
32501
  return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
32504
32502
  }
32503
+ const invalidOverflowDisplayValues = /*#__PURE__*/ new Set(['inline', 'contents']);
32505
32504
  function isOverflowElement(element) {
32506
32505
  const { overflow, overflowX, overflowY, display } = getComputedStyle$1(element);
32507
- return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';
32506
+ return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
32508
32507
  }
32508
+ const tableElements = /*#__PURE__*/ new Set(['table', 'td', 'th']);
32509
32509
  function isTableElement(element) {
32510
- return /^(table|td|th)$/.test(getNodeName(element));
32510
+ return tableElements.has(getNodeName(element));
32511
32511
  }
32512
+ const topLayerSelectors = [':popover-open', ':modal'];
32512
32513
  function isTopLayer(element) {
32513
- try {
32514
- if (element.matches(':popover-open')) {
32515
- return true;
32514
+ return topLayerSelectors.some(selector => {
32515
+ try {
32516
+ return element.matches(selector);
32516
32517
  }
32517
- }
32518
- catch (_e) {
32519
- // no-op
32520
- }
32521
- try {
32522
- return element.matches(':modal');
32523
- }
32524
- catch (_e) {
32525
- return false;
32526
- }
32518
+ catch (_e) {
32519
+ return false;
32520
+ }
32521
+ });
32527
32522
  }
32528
- const willChangeRe = /transform|translate|scale|rotate|perspective|filter/;
32529
- const containRe = /paint|layout|strict|content/;
32530
- const isNotNone = value => !!value && value !== 'none';
32531
- let isWebKitValue;
32523
+ const transformProperties = ['transform', 'translate', 'scale', 'rotate', 'perspective'];
32524
+ const willChangeValues = ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'];
32525
+ const containValues = ['paint', 'layout', 'strict', 'content'];
32532
32526
  function isContainingBlock(elementOrCss) {
32527
+ const webkit = isWebKit();
32533
32528
  const css = isElement(elementOrCss) ? getComputedStyle$1(elementOrCss) : elementOrCss;
32534
32529
  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
32535
32530
  // https://drafts.csswg.org/css-transforms-2/#individual-transforms
32536
- 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 || '');
32531
+ 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));
32537
32532
  }
32538
32533
  function getContainingBlock(element) {
32539
32534
  let currentNode = getParentNode(element);
@@ -32549,13 +32544,13 @@ function getContainingBlock(element) {
32549
32544
  return null;
32550
32545
  }
32551
32546
  function isWebKit() {
32552
- if (isWebKitValue == null) {
32553
- isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');
32554
- }
32555
- return isWebKitValue;
32547
+ if (typeof CSS === 'undefined' || !CSS.supports)
32548
+ return false;
32549
+ return CSS.supports('-webkit-backdrop-filter', 'none');
32556
32550
  }
32551
+ const lastTraversableNodeNames = /*#__PURE__*/ new Set(['html', 'body', '#document']);
32557
32552
  function isLastTraversableNode(node) {
32558
- return /^(html|body|#document)$/.test(getNodeName(node));
32553
+ return lastTraversableNodeNames.has(getNodeName(node));
32559
32554
  }
32560
32555
  function getComputedStyle$1(element) {
32561
32556
  return getWindow(element).getComputedStyle(element);
@@ -32612,9 +32607,7 @@ function getOverflowAncestors(node, list, traverseIframes) {
32612
32607
  const frameElement = getFrameElement(win);
32613
32608
  return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
32614
32609
  }
32615
- else {
32616
- return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
32617
- }
32610
+ return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
32618
32611
  }
32619
32612
  function getFrameElement(win) {
32620
32613
  return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
@@ -32774,7 +32767,7 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
32774
32767
  if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
32775
32768
  scroll = getNodeScroll(offsetParent);
32776
32769
  }
32777
- if (isOffsetParentAnElement) {
32770
+ if (isHTMLElement(offsetParent)) {
32778
32771
  const offsetRect = getBoundingClientRect(offsetParent);
32779
32772
  scale = getScale(offsetParent);
32780
32773
  offsets.x = offsetRect.x + offsetParent.clientLeft;
@@ -32859,6 +32852,7 @@ function getViewportRect(element, strategy) {
32859
32852
  y
32860
32853
  };
32861
32854
  }
32855
+ const absoluteOrFixed = /*#__PURE__*/ new Set(['absolute', 'fixed']);
32862
32856
  // Returns the inner client rect, subtracting scrollbars if present.
32863
32857
  function getInnerBoundingClientRect(element, strategy) {
32864
32858
  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');
@@ -32924,7 +32918,7 @@ function getClippingElementAncestors(element, cache) {
32924
32918
  if (!currentNodeIsContaining && computedStyle.position === 'fixed') {
32925
32919
  currentContainingBlockComputedStyle = null;
32926
32920
  }
32927
- const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
32921
+ const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
32928
32922
  if (shouldDropCurrentNode) {
32929
32923
  // Drop non-containing blocks.
32930
32924
  result = result.filter(ancestor => ancestor !== currentNode);
@@ -32944,23 +32938,20 @@ function getClippingRect(_ref) {
32944
32938
  let { element, boundary, rootBoundary, strategy } = _ref;
32945
32939
  const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
32946
32940
  const clippingAncestors = [...elementClippingAncestors, rootBoundary];
32947
- const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);
32948
- let top = firstRect.top;
32949
- let right = firstRect.right;
32950
- let bottom = firstRect.bottom;
32951
- let left = firstRect.left;
32952
- for (let i = 1; i < clippingAncestors.length; i++) {
32953
- const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);
32954
- top = max(rect.top, top);
32955
- right = min(rect.right, right);
32956
- bottom = min(rect.bottom, bottom);
32957
- left = max(rect.left, left);
32958
- }
32941
+ const firstClippingAncestor = clippingAncestors[0];
32942
+ const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
32943
+ const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
32944
+ accRect.top = max(rect.top, accRect.top);
32945
+ accRect.right = min(rect.right, accRect.right);
32946
+ accRect.bottom = min(rect.bottom, accRect.bottom);
32947
+ accRect.left = max(rect.left, accRect.left);
32948
+ return accRect;
32949
+ }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
32959
32950
  return {
32960
- width: right - left,
32961
- height: bottom - top,
32962
- x: left,
32963
- y: top
32951
+ width: clippingRect.right - clippingRect.left,
32952
+ height: clippingRect.bottom - clippingRect.top,
32953
+ x: clippingRect.left,
32954
+ y: clippingRect.top
32964
32955
  };
32965
32956
  }
32966
32957
  function getDimensions(element) {
@@ -33184,7 +33175,7 @@ function autoUpdate(reference, floating, update, options) {
33184
33175
  }
33185
33176
  const { ancestorScroll = true, ancestorResize = true, elementResize = typeof ResizeObserver === 'function', layoutShift = typeof IntersectionObserver === 'function', animationFrame = false } = options;
33186
33177
  const referenceEl = unwrapElement(reference);
33187
- const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];
33178
+ const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];
33188
33179
  ancestors.forEach(ancestor => {
33189
33180
  ancestorScroll && ancestor.addEventListener('scroll', update, {
33190
33181
  passive: true
@@ -33197,7 +33188,7 @@ function autoUpdate(reference, floating, update, options) {
33197
33188
  if (elementResize) {
33198
33189
  resizeObserver = new ResizeObserver(_ref => {
33199
33190
  let [firstEntry] = _ref;
33200
- if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {
33191
+ if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {
33201
33192
  // Prevent update loops when using the `size` middleware.
33202
33193
  // https://github.com/floating-ui/floating-ui/issues/1740
33203
33194
  resizeObserver.unobserve(floating);
@@ -33212,9 +33203,7 @@ function autoUpdate(reference, floating, update, options) {
33212
33203
  if (referenceEl && !animationFrame) {
33213
33204
  resizeObserver.observe(referenceEl);
33214
33205
  }
33215
- if (floating) {
33216
- resizeObserver.observe(floating);
33217
- }
33206
+ resizeObserver.observe(floating);
33218
33207
  }
33219
33208
  let frameId;
33220
33209
  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
@@ -33547,92 +33536,44 @@ const arrow$1 = options => {
33547
33536
  * object may be passed.
33548
33537
  * @see https://floating-ui.com/docs/offset
33549
33538
  */
33550
- const offset = (options, deps) => {
33551
- const result = offset$1(options);
33552
- return {
33553
- name: result.name,
33554
- fn: result.fn,
33555
- options: [options, deps]
33556
- };
33557
- };
33539
+ const offset = (options, deps) => (Object.assign(Object.assign({}, offset$1(options)), { options: [options, deps] }));
33558
33540
  /**
33559
33541
  * Optimizes the visibility of the floating element by shifting it in order to
33560
33542
  * keep it in view when it will overflow the clipping boundary.
33561
33543
  * @see https://floating-ui.com/docs/shift
33562
33544
  */
33563
- const shift = (options, deps) => {
33564
- const result = shift$1(options);
33565
- return {
33566
- name: result.name,
33567
- fn: result.fn,
33568
- options: [options, deps]
33569
- };
33570
- };
33545
+ const shift = (options, deps) => (Object.assign(Object.assign({}, shift$1(options)), { options: [options, deps] }));
33571
33546
  /**
33572
33547
  * Built-in `limiter` that will stop `shift()` at a certain point.
33573
33548
  */
33574
- const limitShift = (options, deps) => {
33575
- const result = limitShift$1(options);
33576
- return {
33577
- fn: result.fn,
33578
- options: [options, deps]
33579
- };
33580
- };
33549
+ const limitShift = (options, deps) => (Object.assign(Object.assign({}, limitShift$1(options)), { options: [options, deps] }));
33581
33550
  /**
33582
33551
  * Optimizes the visibility of the floating element by flipping the `placement`
33583
33552
  * in order to keep it in view when the preferred placement(s) will overflow the
33584
33553
  * clipping boundary. Alternative to `autoPlacement`.
33585
33554
  * @see https://floating-ui.com/docs/flip
33586
33555
  */
33587
- const flip = (options, deps) => {
33588
- const result = flip$1(options);
33589
- return {
33590
- name: result.name,
33591
- fn: result.fn,
33592
- options: [options, deps]
33593
- };
33594
- };
33556
+ const flip = (options, deps) => (Object.assign(Object.assign({}, flip$1(options)), { options: [options, deps] }));
33595
33557
  /**
33596
33558
  * Provides data that allows you to change the size of the floating element —
33597
33559
  * for instance, prevent it from overflowing the clipping boundary or match the
33598
33560
  * width of the reference element.
33599
33561
  * @see https://floating-ui.com/docs/size
33600
33562
  */
33601
- const size = (options, deps) => {
33602
- const result = size$1(options);
33603
- return {
33604
- name: result.name,
33605
- fn: result.fn,
33606
- options: [options, deps]
33607
- };
33608
- };
33563
+ const size = (options, deps) => (Object.assign(Object.assign({}, size$1(options)), { options: [options, deps] }));
33609
33564
  /**
33610
33565
  * Provides data to hide the floating element in applicable situations, such as
33611
33566
  * when it is not in the same clipping context as the reference element.
33612
33567
  * @see https://floating-ui.com/docs/hide
33613
33568
  */
33614
- const hide = (options, deps) => {
33615
- const result = hide$1(options);
33616
- return {
33617
- name: result.name,
33618
- fn: result.fn,
33619
- options: [options, deps]
33620
- };
33621
- };
33569
+ const hide = (options, deps) => (Object.assign(Object.assign({}, hide$1(options)), { options: [options, deps] }));
33622
33570
  /**
33623
33571
  * Provides data to position an inner element of the floating element so that it
33624
33572
  * appears centered to the reference element.
33625
33573
  * This wraps the core `arrow` middleware to allow React refs as the element.
33626
33574
  * @see https://floating-ui.com/docs/arrow
33627
33575
  */
33628
- const arrow = (options, deps) => {
33629
- const result = arrow$1(options);
33630
- return {
33631
- name: result.name,
33632
- fn: result.fn,
33633
- options: [options, deps]
33634
- };
33635
- };
33576
+ const arrow = (options, deps) => (Object.assign(Object.assign({}, arrow$1(options)), { options: [options, deps] }));
33636
33577
 
33637
33578
  var NAME$1 = "Arrow";
33638
33579
  var Arrow$1 = React__namespace.forwardRef((props, forwardedRef) => {
@@ -45961,7 +45902,7 @@ function SheetHeader(_a) {
45961
45902
  className = _a.className,
45962
45903
  props = __rest$1(_a, ["children", "className"]);
45963
45904
  return require$$1.jsx("div", Object.assign({
45964
- className: clsx("flex items-center justify-between px-6 py-4 border-b border-mw-neutral-200 dark:border-mw-neutral-700", className)
45905
+ 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)
45965
45906
  }, props, {
45966
45907
  children: children
45967
45908
  }));
@@ -49332,6 +49273,169 @@ function getRowSelectionOption(rowSelection, serverSidePagination) {
49332
49273
  }
49333
49274
  return rowSelection;
49334
49275
  }
49276
+ /* ------------------------------------------------------------------ */
49277
+ /* Server-side pagination bar – replaces AG Grid's built-in panel */
49278
+ /* when serverSidePagination=true to avoid page-reset feedback loops */
49279
+ /* ------------------------------------------------------------------ */
49280
+ var paginationBtnStyle = function paginationBtnStyle(disabled) {
49281
+ return {
49282
+ display: 'inline-flex',
49283
+ alignItems: 'center',
49284
+ justifyContent: 'center',
49285
+ width: 32,
49286
+ height: 32,
49287
+ border: '1px solid #e2e8f0',
49288
+ borderRadius: 6,
49289
+ background: disabled ? 'transparent' : '#fff',
49290
+ color: disabled ? '#cbd5e1' : '#475569',
49291
+ cursor: disabled ? 'default' : 'pointer',
49292
+ fontSize: 16,
49293
+ lineHeight: 1,
49294
+ transition: 'background 0.15s, border-color 0.15s'
49295
+ };
49296
+ };
49297
+ var ServerSidePaginationBar = /*#__PURE__*/React.memo(function ServerSidePaginationBar(_ref) {
49298
+ var totalCount = _ref.totalCount,
49299
+ currentPage = _ref.currentPage,
49300
+ pageSize = _ref.pageSize,
49301
+ onPageChange = _ref.onPageChange,
49302
+ onPageSizeChange = _ref.onPageSizeChange,
49303
+ _ref$pageSizeSelector = _ref.pageSizeSelector,
49304
+ pageSizeSelector = _ref$pageSizeSelector === void 0 ? DEFAULT_PAGE_SIZE_SELECTOR : _ref$pageSizeSelector;
49305
+ var totalPages = Math.max(1, Math.ceil(totalCount / pageSize));
49306
+ var start = totalCount === 0 ? 0 : (currentPage - 1) * pageSize + 1;
49307
+ var end = Math.min(currentPage * pageSize, totalCount);
49308
+ var atFirst = currentPage <= 1;
49309
+ var atLast = currentPage >= totalPages;
49310
+ return require$$1.jsxs("div", {
49311
+ style: {
49312
+ display: 'flex',
49313
+ alignItems: 'center',
49314
+ justifyContent: 'flex-end',
49315
+ gap: 16,
49316
+ padding: '10px 16px',
49317
+ borderTop: '1px solid #e2e8f0',
49318
+ fontSize: 13,
49319
+ color: '#64748b',
49320
+ background: '#fff',
49321
+ flexShrink: 0,
49322
+ minHeight: 48
49323
+ },
49324
+ role: "navigation",
49325
+ "aria-label": "Pagination",
49326
+ children: [require$$1.jsxs("span", {
49327
+ style: {
49328
+ display: 'flex',
49329
+ alignItems: 'center',
49330
+ gap: 6
49331
+ },
49332
+ children: [require$$1.jsx("span", {
49333
+ children: "Page Size:"
49334
+ }), require$$1.jsx("select", {
49335
+ value: pageSize,
49336
+ onChange: function onChange(e) {
49337
+ return onPageSizeChange(Number(e.target.value));
49338
+ },
49339
+ style: {
49340
+ border: '1px solid #e2e8f0',
49341
+ borderRadius: 6,
49342
+ padding: '4px 8px',
49343
+ fontSize: 13,
49344
+ background: '#fff',
49345
+ color: '#334155',
49346
+ cursor: 'pointer',
49347
+ outline: 'none'
49348
+ },
49349
+ children: pageSizeSelector.map(function (size) {
49350
+ return require$$1.jsx("option", {
49351
+ value: size,
49352
+ children: size
49353
+ }, size);
49354
+ })
49355
+ })]
49356
+ }), require$$1.jsxs("span", {
49357
+ style: {
49358
+ display: 'flex',
49359
+ gap: 4
49360
+ },
49361
+ children: [require$$1.jsx("strong", {
49362
+ style: {
49363
+ color: '#334155'
49364
+ },
49365
+ children: start
49366
+ }), ' to ', require$$1.jsx("strong", {
49367
+ style: {
49368
+ color: '#334155'
49369
+ },
49370
+ children: end
49371
+ }), ' of ', require$$1.jsx("strong", {
49372
+ style: {
49373
+ color: '#334155'
49374
+ },
49375
+ children: totalCount
49376
+ })]
49377
+ }), require$$1.jsxs("span", {
49378
+ style: {
49379
+ display: 'flex',
49380
+ alignItems: 'center',
49381
+ gap: 4
49382
+ },
49383
+ children: [require$$1.jsx("button", {
49384
+ type: "button",
49385
+ disabled: atFirst,
49386
+ onClick: function onClick() {
49387
+ return onPageChange(1);
49388
+ },
49389
+ style: paginationBtnStyle(atFirst),
49390
+ "aria-label": "First Page",
49391
+ children: "\u226A"
49392
+ }), require$$1.jsx("button", {
49393
+ type: "button",
49394
+ disabled: atFirst,
49395
+ onClick: function onClick() {
49396
+ return onPageChange(currentPage - 1);
49397
+ },
49398
+ style: paginationBtnStyle(atFirst),
49399
+ "aria-label": "Previous Page",
49400
+ children: "\u2039"
49401
+ }), require$$1.jsxs("span", {
49402
+ style: {
49403
+ margin: '0 8px',
49404
+ fontSize: 13
49405
+ },
49406
+ children: ["Page ", require$$1.jsx("strong", {
49407
+ style: {
49408
+ color: '#334155'
49409
+ },
49410
+ children: currentPage
49411
+ }), " of ", require$$1.jsx("strong", {
49412
+ style: {
49413
+ color: '#334155'
49414
+ },
49415
+ children: totalPages
49416
+ })]
49417
+ }), require$$1.jsx("button", {
49418
+ type: "button",
49419
+ disabled: atLast,
49420
+ onClick: function onClick() {
49421
+ return onPageChange(currentPage + 1);
49422
+ },
49423
+ style: paginationBtnStyle(atLast),
49424
+ "aria-label": "Next Page",
49425
+ children: "\u203A"
49426
+ }), require$$1.jsx("button", {
49427
+ type: "button",
49428
+ disabled: atLast,
49429
+ onClick: function onClick() {
49430
+ return onPageChange(totalPages);
49431
+ },
49432
+ style: paginationBtnStyle(atLast),
49433
+ "aria-label": "Last Page",
49434
+ children: "\u226B"
49435
+ })]
49436
+ })]
49437
+ });
49438
+ });
49335
49439
  function AgGridTableInner(props) {
49336
49440
  var _a, _b;
49337
49441
  var rowData = props.rowData,
@@ -49376,7 +49480,8 @@ function AgGridTableInner(props) {
49376
49480
  state: sortStateToColumnState(sortState)
49377
49481
  });
49378
49482
  }
49379
- if (serverSidePagination && serverSideConfig) {
49483
+ // For non-server-side pagination, sync AG Grid's internal page
49484
+ if (!serverSidePagination && serverSideConfig) {
49380
49485
  isPaginationFromExternalRef.current = true;
49381
49486
  event.api.paginationGoToPage(serverSideConfig.currentPage - 1);
49382
49487
  event.api.setGridOption("paginationPageSize", serverSideConfig.pageSize);
@@ -49389,8 +49494,9 @@ function AgGridTableInner(props) {
49389
49494
  state: sortStateToColumnState(sortState)
49390
49495
  });
49391
49496
  }, [sortState]);
49497
+ // Sync AG Grid internal page — only for NON-server-side pagination
49392
49498
  React.useEffect(function () {
49393
- if (!serverSidePagination || !serverSideConfig || !apiRef.current) return;
49499
+ if (serverSidePagination || !serverSideConfig || !apiRef.current) return;
49394
49500
  var api = apiRef.current;
49395
49501
  var currentGridPage = api.paginationGetCurrentPage();
49396
49502
  var currentGridSize = api.paginationGetPageSize();
@@ -49403,8 +49509,12 @@ function AgGridTableInner(props) {
49403
49509
  },
49404
49510
  // eslint-disable-next-line react-hooks/exhaustive-deps
49405
49511
  [serverSidePagination, serverSideConfig === null || serverSideConfig === void 0 ? void 0 : serverSideConfig.currentPage, serverSideConfig === null || serverSideConfig === void 0 ? void 0 : serverSideConfig.pageSize]);
49512
+ // onPaginationChanged — only relevant for NON-server-side mode
49406
49513
  var onPaginationChanged = React.useCallback(function (event) {
49407
- if (!serverSidePagination || !serverSideConfig || !event.api) return;
49514
+ // When serverSidePagination is true, AG Grid's pagination is disabled;
49515
+ // our custom bar handles page changes directly. Ignore all grid events.
49516
+ if (serverSidePagination) return;
49517
+ if (!serverSideConfig || !event.api) return;
49408
49518
  if (event.newData) return;
49409
49519
  if (isPaginationFromExternalRef.current) {
49410
49520
  isPaginationFromExternalRef.current = false;
@@ -49475,45 +49585,57 @@ function AgGridTableInner(props) {
49475
49585
  width: "100%"
49476
49586
  };
49477
49587
  }, [height]);
49478
- return require$$1.jsx("div", {
49479
- className: "".concat(AG_GRID_THEME_CLASS, " ag-grid-table-wrapper ").concat(className),
49480
- style: containerStyle !== null && containerStyle !== void 0 ? containerStyle : {
49481
- height: "100%",
49482
- width: "100%"
49483
- },
49484
- children: require$$1.jsx(agGridReact.AgGridReact, {
49485
- ref: gridRef,
49486
- rowData: rowData,
49487
- columnDefs: columnDefsWithVisibility,
49488
- getRowId: function getRowId(params) {
49489
- return _getRowId(params.data);
49588
+ // When serverSidePagination is true, disable AG Grid's built-in pagination.
49589
+ // We render our own bar below with proper React click handlers.
49590
+ var useGridPagination = !serverSidePagination && pagination;
49591
+ return require$$1.jsxs(require$$1.Fragment, {
49592
+ children: [require$$1.jsx("div", {
49593
+ className: "".concat(AG_GRID_THEME_CLASS, " ag-grid-table-wrapper ").concat(className),
49594
+ style: containerStyle !== null && containerStyle !== void 0 ? containerStyle : {
49595
+ height: "100%",
49596
+ width: "100%"
49490
49597
  },
49491
- loading: loading,
49492
- overlayNoRowsTemplate: "<span class=\"ag-overlay-no-rows-center\">".concat(escapeOverlayText(emptyMessage), "</span>"),
49493
- rowSelection: getRowSelectionOption(rowSelection, serverSidePagination),
49494
- popupParent: typeof document !== "undefined" ? document.body : null,
49495
- onGridReady: onGridReady,
49496
- onSortChanged: onSortChanged,
49497
- onPaginationChanged: onPaginationChanged,
49498
- onSelectionChanged: rowSelection !== false ? onSelectionChanged : undefined,
49499
- defaultColDef: Object.assign({
49500
- sortable: false,
49501
- resizable: true
49502
- }, defaultColDef),
49503
- domLayout: domLayout,
49504
- rowHeight: 60,
49505
- suppressRowTransform: true,
49506
- headerHeight: 44,
49507
- pagination: pagination,
49508
- paginationPageSize: (_a = serverSideConfig === null || serverSideConfig === void 0 ? void 0 : serverSideConfig.pageSize) !== null && _a !== void 0 ? _a : 10,
49509
- paginationPageSizeSelector: (_b = serverSideConfig === null || serverSideConfig === void 0 ? void 0 : serverSideConfig.pageSizeSelector) !== null && _b !== void 0 ? _b : DEFAULT_PAGE_SIZE_SELECTOR,
49510
- cacheBlockSize: cacheBlockSize,
49511
- pinnedBottomRowData: footerData === null || footerData === void 0 ? void 0 : footerData.map(function (row, i) {
49512
- return _typeof(row) === "object" && row !== null && !("id" in row) ? Object.assign(Object.assign({}, row), {
49513
- id: "pinned-bottom-".concat(i)
49514
- }) : row;
49598
+ children: require$$1.jsx(agGridReact.AgGridReact, {
49599
+ ref: gridRef,
49600
+ rowData: rowData,
49601
+ columnDefs: columnDefsWithVisibility,
49602
+ getRowId: function getRowId(params) {
49603
+ return _getRowId(params.data);
49604
+ },
49605
+ loading: loading,
49606
+ overlayNoRowsTemplate: "<span class=\"ag-overlay-no-rows-center\">".concat(escapeOverlayText(emptyMessage), "</span>"),
49607
+ rowSelection: getRowSelectionOption(rowSelection, serverSidePagination),
49608
+ popupParent: typeof document !== "undefined" ? document.body : null,
49609
+ onGridReady: onGridReady,
49610
+ onSortChanged: onSortChanged,
49611
+ onPaginationChanged: useGridPagination ? onPaginationChanged : undefined,
49612
+ onSelectionChanged: rowSelection !== false ? onSelectionChanged : undefined,
49613
+ defaultColDef: Object.assign({
49614
+ sortable: false,
49615
+ resizable: true
49616
+ }, defaultColDef),
49617
+ domLayout: domLayout,
49618
+ rowHeight: 60,
49619
+ suppressRowTransform: true,
49620
+ headerHeight: 44,
49621
+ pagination: useGridPagination,
49622
+ paginationPageSize: useGridPagination ? (_a = serverSideConfig === null || serverSideConfig === void 0 ? void 0 : serverSideConfig.pageSize) !== null && _a !== void 0 ? _a : 10 : undefined,
49623
+ paginationPageSizeSelector: useGridPagination ? (_b = serverSideConfig === null || serverSideConfig === void 0 ? void 0 : serverSideConfig.pageSizeSelector) !== null && _b !== void 0 ? _b : DEFAULT_PAGE_SIZE_SELECTOR : undefined,
49624
+ cacheBlockSize: cacheBlockSize,
49625
+ pinnedBottomRowData: footerData === null || footerData === void 0 ? void 0 : footerData.map(function (row, i) {
49626
+ return _typeof(row) === "object" && row !== null && !("id" in row) ? Object.assign(Object.assign({}, row), {
49627
+ id: "pinned-bottom-".concat(i)
49628
+ }) : row;
49629
+ })
49515
49630
  })
49516
- })
49631
+ }), serverSidePagination && serverSideConfig && require$$1.jsx(ServerSidePaginationBar, {
49632
+ totalCount: serverSideConfig.totalCount,
49633
+ currentPage: serverSideConfig.currentPage,
49634
+ pageSize: serverSideConfig.pageSize,
49635
+ onPageChange: serverSideConfig.onPageChange,
49636
+ onPageSizeChange: serverSideConfig.onPageSizeChange,
49637
+ pageSizeSelector: serverSideConfig.pageSizeSelector
49638
+ })]
49517
49639
  });
49518
49640
  }
49519
49641
  var AgGridTable = AgGridTableInner;
@@ -51060,471 +51182,6 @@ var interpolateAs = {};
51060
51182
 
51061
51183
  var routeMatcher = {};
51062
51184
 
51063
- var routeMatchUtils = {};
51064
-
51065
- var pathToRegexp = {exports: {}};
51066
-
51067
- var hasRequiredPathToRegexp;
51068
-
51069
- function requirePathToRegexp () {
51070
- if (hasRequiredPathToRegexp) return pathToRegexp.exports;
51071
- hasRequiredPathToRegexp = 1;
51072
- (() => {
51073
- if (typeof __nccwpck_require__ !== "undefined")
51074
- __nccwpck_require__.ab = __dirname + "/";
51075
- var e = {};
51076
- (() => { 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) {
51077
- var t = e[r];
51078
- if (t === "*" || t === "+" || t === "?") {
51079
- n.push({ type: "MODIFIER", index: r, value: e[r++] });
51080
- continue;
51081
- }
51082
- if (t === "\\") {
51083
- n.push({ type: "ESCAPED_CHAR", index: r++, value: e[r++] });
51084
- continue;
51085
- }
51086
- if (t === "{") {
51087
- n.push({ type: "OPEN", index: r, value: e[r++] });
51088
- continue;
51089
- }
51090
- if (t === "}") {
51091
- n.push({ type: "CLOSE", index: r, value: e[r++] });
51092
- continue;
51093
- }
51094
- if (t === ":") {
51095
- var a = "";
51096
- var i = r + 1;
51097
- while (i < e.length) {
51098
- var o = e.charCodeAt(i);
51099
- if (o >= 48 && o <= 57 || o >= 65 && o <= 90 || o >= 97 && o <= 122 || o === 95) {
51100
- a += e[i++];
51101
- continue;
51102
- }
51103
- break;
51104
- }
51105
- if (!a)
51106
- throw new TypeError("Missing parameter name at ".concat(r));
51107
- n.push({ type: "NAME", index: r, value: a });
51108
- r = i;
51109
- continue;
51110
- }
51111
- if (t === "(") {
51112
- var c = 1;
51113
- var f = "";
51114
- var i = r + 1;
51115
- if (e[i] === "?") {
51116
- throw new TypeError('Pattern cannot start with "?" at '.concat(i));
51117
- }
51118
- while (i < e.length) {
51119
- if (e[i] === "\\") {
51120
- f += e[i++] + e[i++];
51121
- continue;
51122
- }
51123
- if (e[i] === ")") {
51124
- c--;
51125
- if (c === 0) {
51126
- i++;
51127
- break;
51128
- }
51129
- }
51130
- else if (e[i] === "(") {
51131
- c++;
51132
- if (e[i + 1] !== "?") {
51133
- throw new TypeError("Capturing groups are not allowed at ".concat(i));
51134
- }
51135
- }
51136
- f += e[i++];
51137
- }
51138
- if (c)
51139
- throw new TypeError("Unbalanced pattern at ".concat(r));
51140
- if (!f)
51141
- throw new TypeError("Missing pattern at ".concat(r));
51142
- n.push({ type: "PATTERN", index: r, value: f });
51143
- r = i;
51144
- continue;
51145
- }
51146
- n.push({ type: "CHAR", index: r, value: e[r++] });
51147
- } n.push({ type: "END", index: r, value: "" }); return n; } function parse(e, n) { if (n === void 0) {
51148
- n = {};
51149
- } 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)
51150
- return r[u++].value; }; var mustConsume = function (e) { var n = tryConsume(e); if (n !== undefined)
51151
- 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")) {
51152
- e += n;
51153
- } return e; }; var isSafe = function (e) { for (var n = 0, r = o; n < r.length; n++) {
51154
- var t = r[n];
51155
- if (e.indexOf(t) > -1)
51156
- return true;
51157
- } return false; }; var safePattern = function (e) { var n = c[c.length - 1]; var r = e || (n && typeof n === "string" ? n : ""); if (n && !r) {
51158
- throw new TypeError('Must have text between two parameters, missing text after "'.concat(n.name, '"'));
51159
- } if (!r || isSafe(r))
51160
- return "[^".concat(escapeString(o), "]+?"); return "(?:(?!".concat(escapeString(r), ")[^").concat(escapeString(o), "])+?"); }; while (u < r.length) {
51161
- var v = tryConsume("CHAR");
51162
- var s = tryConsume("NAME");
51163
- var d = tryConsume("PATTERN");
51164
- if (s || d) {
51165
- var g = v || "";
51166
- if (a.indexOf(g) === -1) {
51167
- p += g;
51168
- g = "";
51169
- }
51170
- if (p) {
51171
- c.push(p);
51172
- p = "";
51173
- }
51174
- c.push({ name: s || f++, prefix: g, suffix: "", pattern: d || safePattern(g), modifier: tryConsume("MODIFIER") || "" });
51175
- continue;
51176
- }
51177
- var x = v || tryConsume("ESCAPED_CHAR");
51178
- if (x) {
51179
- p += x;
51180
- continue;
51181
- }
51182
- if (p) {
51183
- c.push(p);
51184
- p = "";
51185
- }
51186
- var h = tryConsume("OPEN");
51187
- if (h) {
51188
- var g = consumeText();
51189
- var l = tryConsume("NAME") || "";
51190
- var m = tryConsume("PATTERN") || "";
51191
- var T = consumeText();
51192
- mustConsume("CLOSE");
51193
- c.push({ name: l || (m ? f++ : ""), pattern: l && !m ? safePattern(g) : m, prefix: g, suffix: T, modifier: tryConsume("MODIFIER") || "" });
51194
- continue;
51195
- }
51196
- mustConsume("END");
51197
- } 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) {
51198
- n = {};
51199
- } 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") {
51200
- return new RegExp("^(?:".concat(e.pattern, ")$"), r);
51201
- } })); return function (n) { var r = ""; for (var t = 0; t < e.length; t++) {
51202
- var i = e[t];
51203
- if (typeof i === "string") {
51204
- r += i;
51205
- continue;
51206
- }
51207
- var f = n ? n[i.name] : undefined;
51208
- var u = i.modifier === "?" || i.modifier === "*";
51209
- var p = i.modifier === "*" || i.modifier === "+";
51210
- if (Array.isArray(f)) {
51211
- if (!p) {
51212
- throw new TypeError('Expected "'.concat(i.name, '" to not repeat, but got an array'));
51213
- }
51214
- if (f.length === 0) {
51215
- if (u)
51216
- continue;
51217
- throw new TypeError('Expected "'.concat(i.name, '" to not be empty'));
51218
- }
51219
- for (var v = 0; v < f.length; v++) {
51220
- var s = a(f[v], i);
51221
- if (o && !c[t].test(s)) {
51222
- throw new TypeError('Expected all "'.concat(i.name, '" to match "').concat(i.pattern, '", but got "').concat(s, '"'));
51223
- }
51224
- r += i.prefix + s + i.suffix;
51225
- }
51226
- continue;
51227
- }
51228
- if (typeof f === "string" || typeof f === "number") {
51229
- var s = a(String(f), i);
51230
- if (o && !c[t].test(s)) {
51231
- throw new TypeError('Expected "'.concat(i.name, '" to match "').concat(i.pattern, '", but got "').concat(s, '"'));
51232
- }
51233
- r += i.prefix + s + i.suffix;
51234
- continue;
51235
- }
51236
- if (u)
51237
- continue;
51238
- var d = p ? "an array" : "a string";
51239
- throw new TypeError('Expected "'.concat(i.name, '" to be ').concat(d));
51240
- } 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) {
51241
- r = {};
51242
- } var t = r.decode, a = t === void 0 ? function (e) { return e; } : t; return function (r) { var t = e.exec(r); if (!t)
51243
- return false; var i = t[0], o = t.index; var c = Object.create(null); var _loop_1 = function (e) { if (t[e] === undefined)
51244
- return "continue"; var r = n[e - 1]; if (r.modifier === "*" || r.modifier === "+") {
51245
- c[r.name] = t[e].split(r.prefix + r.suffix).map((function (e) { return a(e, r); }));
51246
- }
51247
- else {
51248
- c[r.name] = a(t[e], r);
51249
- } }; for (var f = 1; f < t.length; f++) {
51250
- _loop_1(f);
51251
- } 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)
51252
- return e; var r = /\((?:\?<(.*?)>)?(?!\?)/g; var t = 0; var a = r.exec(e.source); while (a) {
51253
- n.push({ name: a[1] || t++, prefix: "", suffix: "", modifier: "", pattern: "" });
51254
- a = r.exec(e.source);
51255
- } 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) {
51256
- r = {};
51257
- } 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++) {
51258
- var E = T[m];
51259
- if (typeof E === "string") {
51260
- l += escapeString(p(E));
51261
- }
51262
- else {
51263
- var w = escapeString(p(E.prefix));
51264
- var y = escapeString(p(E.suffix));
51265
- if (E.pattern) {
51266
- if (n)
51267
- n.push(E);
51268
- if (w || y) {
51269
- if (E.modifier === "+" || E.modifier === "*") {
51270
- var R = E.modifier === "*" ? "?" : "";
51271
- l += "(?:".concat(w, "((?:").concat(E.pattern, ")(?:").concat(y).concat(w, "(?:").concat(E.pattern, "))*)").concat(y, ")").concat(R);
51272
- }
51273
- else {
51274
- l += "(?:".concat(w, "(").concat(E.pattern, ")").concat(y, ")").concat(E.modifier);
51275
- }
51276
- }
51277
- else {
51278
- if (E.modifier === "+" || E.modifier === "*") {
51279
- throw new TypeError('Can not repeat "'.concat(E.name, '" without a prefix and suffix'));
51280
- }
51281
- l += "(".concat(E.pattern, ")").concat(E.modifier);
51282
- }
51283
- }
51284
- else {
51285
- l += "(?:".concat(w).concat(y, ")").concat(E.modifier);
51286
- }
51287
- }
51288
- } if (f) {
51289
- if (!a)
51290
- l += "".concat(h, "?");
51291
- l += !r.endsWith ? "$" : "(?=".concat(x, ")");
51292
- }
51293
- else {
51294
- var A = e[e.length - 1];
51295
- var _ = typeof A === "string" ? h.indexOf(A[A.length - 1]) > -1 : A === undefined;
51296
- if (!a) {
51297
- l += "(?:".concat(h, "(?=").concat(x, "))?");
51298
- }
51299
- if (!_) {
51300
- l += "(?=".concat(h, "|").concat(x, ")");
51301
- }
51302
- } return new RegExp(l, flags(r)); } n.tokensToRegexp = tokensToRegexp; function pathToRegexp(e, n, r) { if (e instanceof RegExp)
51303
- return regexpToRegexp(e, n); if (Array.isArray(e))
51304
- return arrayToRegexp(e, n, r); return stringToRegexp(e, n, r); } n.pathToRegexp = pathToRegexp; })();
51305
- pathToRegexp.exports = e;
51306
- })();
51307
-
51308
- return pathToRegexp.exports;
51309
- }
51310
-
51311
- var routePatternNormalizer = {};
51312
-
51313
- var hasRequiredRoutePatternNormalizer;
51314
-
51315
- function requireRoutePatternNormalizer () {
51316
- if (hasRequiredRoutePatternNormalizer) return routePatternNormalizer;
51317
- hasRequiredRoutePatternNormalizer = 1;
51318
- (function (exports$1) {
51319
- Object.defineProperty(exports$1, "__esModule", {
51320
- value: true
51321
- });
51322
- function _export(target, all) {
51323
- for (var name in all)
51324
- Object.defineProperty(target, name, {
51325
- enumerable: true,
51326
- get: all[name]
51327
- });
51328
- }
51329
- _export(exports$1, {
51330
- hasAdjacentParameterIssues: function () {
51331
- return hasAdjacentParameterIssues;
51332
- },
51333
- normalizeAdjacentParameters: function () {
51334
- return normalizeAdjacentParameters;
51335
- },
51336
- normalizeTokensForRegexp: function () {
51337
- return normalizeTokensForRegexp;
51338
- },
51339
- stripParameterSeparators: function () {
51340
- return stripParameterSeparators;
51341
- }
51342
- });
51343
- /**
51344
- * Route pattern normalization utilities for path-to-regexp compatibility.
51345
- *
51346
- * path-to-regexp 6.3.0+ introduced stricter validation that rejects certain
51347
- * patterns commonly used in Next.js interception routes. This module provides
51348
- * normalization functions to make Next.js route patterns compatible with the
51349
- * updated library while preserving all functionality.
51350
- */ /**
51351
- * Internal separator used to normalize adjacent parameter patterns.
51352
- * This unique marker is inserted between adjacent parameters and stripped out
51353
- * during parameter extraction to avoid conflicts with real URL content.
51354
- */ const PARAM_SEPARATOR = '_NEXTSEP_';
51355
- function hasAdjacentParameterIssues(route) {
51356
- if (typeof route !== 'string')
51357
- return false;
51358
- // Check for interception route markers followed immediately by parameters
51359
- // Pattern: /(.):param, /(..):param, /(...):param, /(.)(.):param etc.
51360
- // These patterns cause "Must have text between two parameters" errors
51361
- if (/\/\(\.{1,3}\):[^/\s]+/.test(route)) {
51362
- return true;
51363
- }
51364
- // Check for basic adjacent parameters without separators
51365
- // Pattern: :param1:param2 (but not :param* or other URL patterns)
51366
- if (/:[a-zA-Z_][a-zA-Z0-9_]*:[a-zA-Z_][a-zA-Z0-9_]*/.test(route)) {
51367
- return true;
51368
- }
51369
- return false;
51370
- }
51371
- function normalizeAdjacentParameters(route) {
51372
- let normalized = route;
51373
- // Handle interception route patterns: (.):param -> (.)_NEXTSEP_:param
51374
- normalized = normalized.replace(/(\([^)]*\)):([^/\s]+)/g, `$1${PARAM_SEPARATOR}:$2`);
51375
- // Handle other adjacent parameter patterns: :param1:param2 -> :param1_NEXTSEP_:param2
51376
- normalized = normalized.replace(/:([^:/\s)]+)(?=:)/g, `:$1${PARAM_SEPARATOR}`);
51377
- return normalized;
51378
- }
51379
- function normalizeTokensForRegexp(tokens) {
51380
- return tokens.map((token) => {
51381
- // Token union type: Token = string | TokenObject
51382
- // Literal path segments are strings, parameters/wildcards are objects
51383
- if (typeof token === 'object' && token !== null && // Not all token objects have 'modifier' property (e.g., simple text tokens)
51384
- 'modifier' in token && // Only repeating modifiers (* or +) cause the validation error
51385
- // Other modifiers like '?' (optional) are fine
51386
- (token.modifier === '*' || token.modifier === '+') && // Token objects can have different shapes depending on route pattern
51387
- 'prefix' in token && 'suffix' in token && // Both prefix and suffix must be empty strings
51388
- // This is what causes the validation error in path-to-regexp
51389
- token.prefix === '' && token.suffix === '') {
51390
- // Add minimal prefix to satisfy path-to-regexp validation
51391
- // We use '/' as it's the most common path delimiter and won't break route matching
51392
- // The prefix gets used in regex generation but doesn't affect parameter extraction
51393
- return Object.assign(Object.assign({}, token), { prefix: '/' });
51394
- }
51395
- return token;
51396
- });
51397
- }
51398
- function stripParameterSeparators(params) {
51399
- const cleaned = {};
51400
- for (const [key, value] of Object.entries(params)) {
51401
- if (typeof value === 'string') {
51402
- // Remove the separator if it appears at the start of parameter values
51403
- cleaned[key] = value.replace(new RegExp(`^${PARAM_SEPARATOR}`), '');
51404
- }
51405
- else if (Array.isArray(value)) {
51406
- // Handle array parameters (from repeated route segments)
51407
- cleaned[key] = value.map((item) => typeof item === 'string' ? item.replace(new RegExp(`^${PARAM_SEPARATOR}`), '') : item);
51408
- }
51409
- else {
51410
- cleaned[key] = value;
51411
- }
51412
- }
51413
- return cleaned;
51414
- }
51415
-
51416
- } (routePatternNormalizer));
51417
- return routePatternNormalizer;
51418
- }
51419
-
51420
- /**
51421
- * Client-safe utilities for route matching that don't import server-side
51422
- * utilities to avoid bundling issues with Turbopack
51423
- */
51424
-
51425
- var hasRequiredRouteMatchUtils;
51426
-
51427
- function requireRouteMatchUtils () {
51428
- if (hasRequiredRouteMatchUtils) return routeMatchUtils;
51429
- hasRequiredRouteMatchUtils = 1;
51430
- (function (exports$1) {
51431
- Object.defineProperty(exports$1, "__esModule", {
51432
- value: true
51433
- });
51434
- function _export(target, all) {
51435
- for (var name in all)
51436
- Object.defineProperty(target, name, {
51437
- enumerable: true,
51438
- get: all[name]
51439
- });
51440
- }
51441
- _export(exports$1, {
51442
- safeCompile: function () {
51443
- return safeCompile;
51444
- },
51445
- safePathToRegexp: function () {
51446
- return safePathToRegexp;
51447
- },
51448
- safeRegexpToFunction: function () {
51449
- return safeRegexpToFunction;
51450
- },
51451
- safeRouteMatcher: function () {
51452
- return safeRouteMatcher;
51453
- }
51454
- });
51455
- const _pathtoregexp = requirePathToRegexp();
51456
- const _routepatternnormalizer = requireRoutePatternNormalizer();
51457
- function safePathToRegexp(route, keys, options) {
51458
- if (typeof route !== 'string') {
51459
- return (0, _pathtoregexp.pathToRegexp)(route, keys, options);
51460
- }
51461
- // Check if normalization is needed and cache the result
51462
- const needsNormalization = (0, _routepatternnormalizer.hasAdjacentParameterIssues)(route);
51463
- const routeToUse = needsNormalization ? (0, _routepatternnormalizer.normalizeAdjacentParameters)(route) : route;
51464
- try {
51465
- return (0, _pathtoregexp.pathToRegexp)(routeToUse, keys, options);
51466
- }
51467
- catch (error) {
51468
- // Only try normalization if we haven't already normalized
51469
- if (!needsNormalization) {
51470
- try {
51471
- const normalizedRoute = (0, _routepatternnormalizer.normalizeAdjacentParameters)(route);
51472
- return (0, _pathtoregexp.pathToRegexp)(normalizedRoute, keys, options);
51473
- }
51474
- catch (retryError) {
51475
- // If that doesn't work, fall back to original error
51476
- throw error;
51477
- }
51478
- }
51479
- throw error;
51480
- }
51481
- }
51482
- function safeCompile(route, options) {
51483
- // Check if normalization is needed and cache the result
51484
- const needsNormalization = (0, _routepatternnormalizer.hasAdjacentParameterIssues)(route);
51485
- const routeToUse = needsNormalization ? (0, _routepatternnormalizer.normalizeAdjacentParameters)(route) : route;
51486
- try {
51487
- return (0, _pathtoregexp.compile)(routeToUse, options);
51488
- }
51489
- catch (error) {
51490
- // Only try normalization if we haven't already normalized
51491
- if (!needsNormalization) {
51492
- try {
51493
- const normalizedRoute = (0, _routepatternnormalizer.normalizeAdjacentParameters)(route);
51494
- return (0, _pathtoregexp.compile)(normalizedRoute, options);
51495
- }
51496
- catch (retryError) {
51497
- // If that doesn't work, fall back to original error
51498
- throw error;
51499
- }
51500
- }
51501
- throw error;
51502
- }
51503
- }
51504
- function safeRegexpToFunction(regexp, keys) {
51505
- const originalMatcher = (0, _pathtoregexp.regexpToFunction)(regexp, keys || []);
51506
- return (pathname) => {
51507
- const result = originalMatcher(pathname);
51508
- if (!result)
51509
- return false;
51510
- // Clean parameters before returning
51511
- return Object.assign(Object.assign({}, result), { params: (0, _routepatternnormalizer.stripParameterSeparators)(result.params) });
51512
- };
51513
- }
51514
- function safeRouteMatcher(matcherFn) {
51515
- return (pathname) => {
51516
- const result = matcherFn(pathname);
51517
- if (!result)
51518
- return false;
51519
- // Clean parameters before returning
51520
- return (0, _routepatternnormalizer.stripParameterSeparators)(result);
51521
- };
51522
- }
51523
-
51524
- } (routeMatchUtils));
51525
- return routeMatchUtils;
51526
- }
51527
-
51528
51185
  var hasRequiredRouteMatcher;
51529
51186
 
51530
51187
  function requireRouteMatcher () {
@@ -51541,10 +51198,9 @@ function requireRouteMatcher () {
51541
51198
  }
51542
51199
  });
51543
51200
  const _utils = requireUtils$1();
51544
- const _routematchutils = requireRouteMatchUtils();
51545
51201
  function getRouteMatcher(param) {
51546
51202
  let { re, groups } = param;
51547
- const rawMatcher = (pathname) => {
51203
+ return (pathname) => {
51548
51204
  const routeMatch = re.exec(pathname);
51549
51205
  if (!routeMatch)
51550
51206
  return false;
@@ -51574,8 +51230,6 @@ function requireRouteMatcher () {
51574
51230
  }
51575
51231
  return params;
51576
51232
  };
51577
- // Wrap with safe matcher to handle parameter cleaning
51578
- return (0, _routematchutils.safeRouteMatcher)(rawMatcher);
51579
51233
  }
51580
51234
 
51581
51235
  } (routeMatcher));
@@ -51627,18 +51281,12 @@ function requireConstants () {
51627
51281
  GSSP_NO_RETURNED_VALUE: function () {
51628
51282
  return GSSP_NO_RETURNED_VALUE;
51629
51283
  },
51630
- HTML_CONTENT_TYPE_HEADER: function () {
51631
- return HTML_CONTENT_TYPE_HEADER;
51632
- },
51633
51284
  INFINITE_CACHE: function () {
51634
51285
  return INFINITE_CACHE;
51635
51286
  },
51636
51287
  INSTRUMENTATION_HOOK_FILENAME: function () {
51637
51288
  return INSTRUMENTATION_HOOK_FILENAME;
51638
51289
  },
51639
- JSON_CONTENT_TYPE_HEADER: function () {
51640
- return JSON_CONTENT_TYPE_HEADER;
51641
- },
51642
51290
  MATCHED_PATH_HEADER: function () {
51643
51291
  return MATCHED_PATH_HEADER;
51644
51292
  },
@@ -51759,9 +51407,6 @@ function requireConstants () {
51759
51407
  STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR: function () {
51760
51408
  return STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR;
51761
51409
  },
51762
- TEXT_PLAIN_CONTENT_TYPE_HEADER: function () {
51763
- return TEXT_PLAIN_CONTENT_TYPE_HEADER;
51764
- },
51765
51410
  UNSTABLE_REVALIDATE_RENAME_ERROR: function () {
51766
51411
  return UNSTABLE_REVALIDATE_RENAME_ERROR;
51767
51412
  },
@@ -51772,9 +51417,6 @@ function requireConstants () {
51772
51417
  return WEBPACK_RESOURCE_QUERIES;
51773
51418
  }
51774
51419
  });
51775
- const TEXT_PLAIN_CONTENT_TYPE_HEADER = 'text/plain';
51776
- const HTML_CONTENT_TYPE_HEADER = 'text/html; charset=utf-8';
51777
- const JSON_CONTENT_TYPE_HEADER = 'application/json; charset=utf-8';
51778
51420
  const NEXT_QUERY_PARAM_PREFIX = 'nxtP';
51779
51421
  const NEXT_INTERCEPTION_MARKER_PREFIX = 'nxtI';
51780
51422
  const MATCHED_PATH_HEADER = 'x-matched-path';
@@ -51960,13 +51602,11 @@ function requireEscapeRegexp () {
51960
51602
  return escapeRegexp;
51961
51603
  }
51962
51604
 
51963
- var getDynamicParam = {};
51964
-
51965
- var hasRequiredGetDynamicParam;
51605
+ var hasRequiredRouteRegex;
51966
51606
 
51967
- function requireGetDynamicParam () {
51968
- if (hasRequiredGetDynamicParam) return getDynamicParam;
51969
- hasRequiredGetDynamicParam = 1;
51607
+ function requireRouteRegex () {
51608
+ if (hasRequiredRouteRegex) return routeRegex;
51609
+ hasRequiredRouteRegex = 1;
51970
51610
  (function (exports$1) {
51971
51611
  Object.defineProperty(exports$1, "__esModule", {
51972
51612
  value: true
@@ -51979,86 +51619,32 @@ function requireGetDynamicParam () {
51979
51619
  });
51980
51620
  }
51981
51621
  _export(exports$1, {
51982
- PARAMETER_PATTERN: function () {
51983
- return PARAMETER_PATTERN;
51622
+ getNamedMiddlewareRegex: function () {
51623
+ return getNamedMiddlewareRegex;
51984
51624
  },
51985
- getDynamicParam: function () {
51986
- return getDynamicParam;
51625
+ getNamedRouteRegex: function () {
51626
+ return getNamedRouteRegex;
51987
51627
  },
51988
- parseMatchedParameter: function () {
51989
- return parseMatchedParameter;
51628
+ getRouteRegex: function () {
51629
+ return getRouteRegex;
51990
51630
  },
51991
51631
  parseParameter: function () {
51992
51632
  return parseParameter;
51993
51633
  }
51994
51634
  });
51995
- function getDynamicParam(params, segmentKey, dynamicParamType, pagePath, fallbackRouteParams) {
51996
- let value = params[segmentKey];
51997
- if (fallbackRouteParams && fallbackRouteParams.has(segmentKey)) {
51998
- value = fallbackRouteParams.get(segmentKey);
51999
- }
52000
- else if (Array.isArray(value)) {
52001
- value = value.map((i) => encodeURIComponent(i));
52002
- }
52003
- else if (typeof value === 'string') {
52004
- value = encodeURIComponent(value);
52005
- }
52006
- if (!value) {
52007
- const isCatchall = dynamicParamType === 'c';
52008
- const isOptionalCatchall = dynamicParamType === 'oc';
52009
- if (isCatchall || isOptionalCatchall) {
52010
- // handle the case where an optional catchall does not have a value,
52011
- // e.g. `/dashboard/[[...slug]]` when requesting `/dashboard`
52012
- if (isOptionalCatchall) {
52013
- return {
52014
- param: segmentKey,
52015
- value: null,
52016
- type: dynamicParamType,
52017
- treeSegment: [
52018
- segmentKey,
52019
- '',
52020
- dynamicParamType
52021
- ]
52022
- };
52023
- }
52024
- // handle the case where a catchall or optional catchall does not have a value,
52025
- // e.g. `/foo/bar/hello` and `@slot/[...catchall]` or `@slot/[[...catchall]]` is matched
52026
- value = pagePath.split('/') // remove the first empty string
52027
- .slice(1) // replace any dynamic params with the actual values
52028
- .flatMap((pathSegment) => {
52029
- const param = parseParameter(pathSegment);
52030
- var _params_param_key;
52031
- // if the segment matches a param, return the param value
52032
- // otherwise, it's a static segment, so just return that
52033
- return (_params_param_key = params[param.key]) != null ? _params_param_key : param.key;
52034
- });
52035
- return {
52036
- param: segmentKey,
52037
- value,
52038
- type: dynamicParamType,
52039
- // This value always has to be a string.
52040
- treeSegment: [
52041
- segmentKey,
52042
- value.join('/'),
52043
- dynamicParamType
52044
- ]
52045
- };
52046
- }
52047
- }
52048
- return {
52049
- param: segmentKey,
52050
- // The value that is passed to user code.
52051
- value: value,
52052
- // The value that is rendered in the router tree.
52053
- treeSegment: [
52054
- segmentKey,
52055
- Array.isArray(value) ? value.join('/') : value,
52056
- dynamicParamType
52057
- ],
52058
- type: dynamicParamType
52059
- };
52060
- }
52061
- const PARAMETER_PATTERN = /^([^[]*)\[((?:\[[^\]]*\])|[^\]]+)\](.*)$/;
51635
+ const _constants = requireConstants();
51636
+ const _interceptionroutes = requireInterceptionRoutes();
51637
+ const _escaperegexp = requireEscapeRegexp();
51638
+ const _removetrailingslash = requireRemoveTrailingSlash();
51639
+ /**
51640
+ * Regular expression pattern used to match route parameters.
51641
+ * Matches both single parameters and parameter groups.
51642
+ * Examples:
51643
+ * - `[[...slug]]` matches parameter group with key 'slug', repeat: true, optional: true
51644
+ * - `[...slug]` matches parameter group with key 'slug', repeat: true, optional: false
51645
+ * - `[[foo]]` matches parameter with key 'foo', repeat: false, optional: true
51646
+ * - `[bar]` matches parameter with key 'bar', repeat: false, optional: false
51647
+ */ const PARAMETER_PATTERN = /^([^[]*)\[((?:\[[^\]]*\])|[^\]]+)\](.*)$/;
52062
51648
  function parseParameter(param) {
52063
51649
  const match = param.match(PARAMETER_PATTERN);
52064
51650
  if (!match) {
@@ -52066,7 +51652,17 @@ function requireGetDynamicParam () {
52066
51652
  }
52067
51653
  return parseMatchedParameter(match[2]);
52068
51654
  }
52069
- function parseMatchedParameter(param) {
51655
+ /**
51656
+ * Parses a matched parameter from the PARAMETER_PATTERN regex to a data structure that can be used
51657
+ * to generate the parametrized route.
51658
+ * Examples:
51659
+ * - `[...slug]` -> `{ key: 'slug', repeat: true, optional: true }`
51660
+ * - `...slug` -> `{ key: 'slug', repeat: true, optional: false }`
51661
+ * - `[foo]` -> `{ key: 'foo', repeat: false, optional: true }`
51662
+ * - `bar` -> `{ key: 'bar', repeat: false, optional: false }`
51663
+ * @param param - The matched parameter to parse.
51664
+ * @returns The parsed parameter as a data structure.
51665
+ */ function parseMatchedParameter(param) {
52070
51666
  const optional = param.startsWith('[') && param.endsWith(']');
52071
51667
  if (optional) {
52072
51668
  param = param.slice(1, -1);
@@ -52081,53 +51677,16 @@ function requireGetDynamicParam () {
52081
51677
  optional
52082
51678
  };
52083
51679
  }
52084
-
52085
- } (getDynamicParam));
52086
- return getDynamicParam;
52087
- }
52088
-
52089
- var hasRequiredRouteRegex;
52090
-
52091
- function requireRouteRegex () {
52092
- if (hasRequiredRouteRegex) return routeRegex;
52093
- hasRequiredRouteRegex = 1;
52094
- (function (exports$1) {
52095
- Object.defineProperty(exports$1, "__esModule", {
52096
- value: true
52097
- });
52098
- function _export(target, all) {
52099
- for (var name in all)
52100
- Object.defineProperty(target, name, {
52101
- enumerable: true,
52102
- get: all[name]
52103
- });
52104
- }
52105
- _export(exports$1, {
52106
- getNamedMiddlewareRegex: function () {
52107
- return getNamedMiddlewareRegex;
52108
- },
52109
- getNamedRouteRegex: function () {
52110
- return getNamedRouteRegex;
52111
- },
52112
- getRouteRegex: function () {
52113
- return getRouteRegex;
52114
- }
52115
- });
52116
- const _constants = requireConstants();
52117
- const _interceptionroutes = requireInterceptionRoutes();
52118
- const _escaperegexp = requireEscapeRegexp();
52119
- const _removetrailingslash = requireRemoveTrailingSlash();
52120
- const _getdynamicparam = requireGetDynamicParam();
52121
51680
  function getParametrizedRoute(route, includeSuffix, includePrefix) {
52122
51681
  const groups = {};
52123
51682
  let groupIndex = 1;
52124
51683
  const segments = [];
52125
51684
  for (const segment of (0, _removetrailingslash.removeTrailingSlash)(route).slice(1).split('/')) {
52126
51685
  const markerMatch = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.find((m) => segment.startsWith(m));
52127
- const paramMatches = segment.match(_getdynamicparam.PARAMETER_PATTERN) // Check for parameters
51686
+ const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters
52128
51687
  ;
52129
51688
  if (markerMatch && paramMatches && paramMatches[2]) {
52130
- const { key, optional, repeat } = (0, _getdynamicparam.parseMatchedParameter)(paramMatches[2]);
51689
+ const { key, optional, repeat } = parseMatchedParameter(paramMatches[2]);
52131
51690
  groups[key] = {
52132
51691
  pos: groupIndex++,
52133
51692
  repeat,
@@ -52136,7 +51695,7 @@ function requireRouteRegex () {
52136
51695
  segments.push("/" + (0, _escaperegexp.escapeStringRegexp)(markerMatch) + "([^/]+?)");
52137
51696
  }
52138
51697
  else if (paramMatches && paramMatches[2]) {
52139
- const { key, repeat, optional } = (0, _getdynamicparam.parseMatchedParameter)(paramMatches[2]);
51698
+ const { key, repeat, optional } = parseMatchedParameter(paramMatches[2]);
52140
51699
  groups[key] = {
52141
51700
  pos: groupIndex++,
52142
51701
  repeat,
@@ -52194,7 +51753,7 @@ function requireRouteRegex () {
52194
51753
  }
52195
51754
  function getSafeKeyFromSegment(param) {
52196
51755
  let { interceptionMarker, getSafeRouteKey, segment, routeKeys, keyPrefix, backreferenceDuplicateKeys } = param;
52197
- const { key, optional, repeat } = (0, _getdynamicparam.parseMatchedParameter)(segment);
51756
+ const { key, optional, repeat } = parseMatchedParameter(segment);
52198
51757
  // replace any non-word characters since they can break
52199
51758
  // the named regex
52200
51759
  let cleanedKey = key.replace(/\W/g, '');
@@ -52244,7 +51803,7 @@ function requireRouteRegex () {
52244
51803
  const segments = [];
52245
51804
  for (const segment of (0, _removetrailingslash.removeTrailingSlash)(route).slice(1).split('/')) {
52246
51805
  const hasInterceptionMarker = _interceptionroutes.INTERCEPTION_ROUTE_MARKERS.some((m) => segment.startsWith(m));
52247
- const paramMatches = segment.match(_getdynamicparam.PARAMETER_PATTERN) // Check for parameters
51806
+ const paramMatches = segment.match(PARAMETER_PATTERN) // Check for parameters
52248
51807
  ;
52249
51808
  if (hasInterceptionMarker && paramMatches && paramMatches[2]) {
52250
51809
  // If there's an interception marker, add it to the segments.
@@ -52402,8 +51961,6 @@ function requireResolveHref () {
52402
51961
  const _islocalurl = requireIsLocalUrl();
52403
51962
  const _utils1 = requireUtils();
52404
51963
  const _interpolateas = requireInterpolateAs();
52405
- const _routeregex = requireRouteRegex();
52406
- const _routematcher = requireRouteMatcher();
52407
51964
  function resolveHref(router, href, resolveAs) {
52408
51965
  // we use a dummy base url for relative urls
52409
51966
  let base;
@@ -52426,31 +51983,7 @@ function requireResolveHref () {
52426
51983
  ] : urlAsString;
52427
51984
  }
52428
51985
  try {
52429
- let baseBase = urlAsString.startsWith('#') ? router.asPath : router.pathname;
52430
- // If the provided href is only a query string, it is safer to use the asPath
52431
- // considering rewrites.
52432
- if (urlAsString.startsWith('?')) {
52433
- baseBase = router.asPath;
52434
- // However, if is a dynamic route, we need to use the pathname to preserve the
52435
- // query interpolation and rewrites (router.pathname will look like "/[slug]").
52436
- if ((0, _utils1.isDynamicRoute)(router.pathname)) {
52437
- baseBase = router.pathname;
52438
- const routeRegex = (0, _routeregex.getRouteRegex)(router.pathname);
52439
- const match = (0, _routematcher.getRouteMatcher)(routeRegex)(router.asPath);
52440
- // For dynamic routes, if asPath doesn't match the pathname regex, it is a rewritten path.
52441
- // In this case, should use asPath to preserve the current URL.
52442
- if (!match) {
52443
- baseBase = router.asPath;
52444
- }
52445
- // Note: There is an edge case where the pathname is dynamic, and also a rewrite path to the same segment.
52446
- // E.g. in "/[slug]" path, rewrite "/foo" -> "/bar"
52447
- // In this case, it will be treated as a non-rewritten path and possibly interpolate the query string.
52448
- // E.g., "/any?slug=foo" will become the content of "/foo", not rewritten as "/bar"
52449
- // This is currently a trade-off of not resolving rewrite paths on every Router/Link call,
52450
- // but using a lighter route regex pattern check.
52451
- }
52452
- }
52453
- base = new URL(baseBase, 'http://n');
51986
+ base = new URL(urlAsString.startsWith('#') ? router.asPath : router.pathname, 'http://n');
52454
51987
  }
52455
51988
  catch (_) {
52456
51989
  // fallback to / for invalid asPath values e.g. //
@@ -53917,7 +53450,7 @@ function PageHero(_ref) {
53917
53450
  }), require$$1.jsx("h1", {
53918
53451
  className: "text-4xl sm:text-5xl lg:text-6xl font-bold text-mw-primary-700 dark:text-mw-primary-400 mb-6",
53919
53452
  children: require$$1.jsx("span", {
53920
- className: "bg-gradient-to-r from-mw-primary-600 to-mw-primary-800 bg-clip-text \n supports-[background-clip:text]:text-transparent",
53453
+ className: "bg-gradient-to-r from-mw-primary-600 to-mw-primary-800 bg-clip-text \r\n supports-[background-clip:text]:text-transparent",
53921
53454
  children: title
53922
53455
  })
53923
53456
  }), require$$1.jsx("p", {
@@ -55083,7 +54616,7 @@ const fromTheme = key => {
55083
54616
  };
55084
54617
  const arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i;
55085
54618
  const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
55086
- const fractionRegex = /^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/;
54619
+ const fractionRegex = /^\d+\/\d+$/;
55087
54620
  const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
55088
54621
  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$/;
55089
54622
  const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
@@ -55109,8 +54642,6 @@ const isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever
55109
54642
  const isArbitraryValue = value => arbitraryValueRegex.test(value);
55110
54643
  const isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);
55111
54644
  const isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);
55112
- const isArbitraryWeight = value => getIsArbitraryValue(value, isLabelWeight, isAny);
55113
- const isArbitraryFamilyName = value => getIsArbitraryValue(value, isLabelFamilyName, isNever);
55114
54645
  const isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);
55115
54646
  const isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);
55116
54647
  const isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);
@@ -55121,7 +54652,6 @@ const isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLab
55121
54652
  const isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);
55122
54653
  const isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);
55123
54654
  const isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);
55124
- const isArbitraryVariableWeight = value => getIsArbitraryVariable(value, isLabelWeight, true);
55125
54655
  // Helpers
55126
54656
  const getIsArbitraryValue = (value, testLabel, testValue) => {
55127
54657
  const result = arbitraryValueRegex.exec(value);
@@ -55150,7 +54680,6 @@ const isLabelSize = label => label === 'length' || label === 'size' || label ===
55150
54680
  const isLabelLength = label => label === 'length';
55151
54681
  const isLabelNumber = label => label === 'number';
55152
54682
  const isLabelFamilyName = label => label === 'family-name';
55153
- const isLabelWeight = label => label === 'number' || label === 'weight';
55154
54683
  const isLabelShadow = label => label === 'shadow';
55155
54684
  const getDefaultConfig = () => {
55156
54685
  /**
@@ -55209,8 +54738,6 @@ const getDefaultConfig = () => {
55209
54738
  const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];
55210
54739
  const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];
55211
54740
  const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
55212
- const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
55213
- const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];
55214
54741
  const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];
55215
54742
  const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {
55216
54743
  position: [isArbitraryVariable, isArbitraryValue]
@@ -55411,66 +54938,40 @@ const getDefaultConfig = () => {
55411
54938
  */
55412
54939
  position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],
55413
54940
  /**
55414
- * Inset
54941
+ * Top / Right / Bottom / Left
55415
54942
  * @see https://tailwindcss.com/docs/top-right-bottom-left
55416
54943
  */
55417
54944
  inset: [{
55418
54945
  inset: scaleInset()
55419
54946
  }],
55420
54947
  /**
55421
- * Inset Inline
54948
+ * Right / Left
55422
54949
  * @see https://tailwindcss.com/docs/top-right-bottom-left
55423
54950
  */
55424
54951
  'inset-x': [{
55425
54952
  'inset-x': scaleInset()
55426
54953
  }],
55427
54954
  /**
55428
- * Inset Block
54955
+ * Top / Bottom
55429
54956
  * @see https://tailwindcss.com/docs/top-right-bottom-left
55430
54957
  */
55431
54958
  'inset-y': [{
55432
54959
  'inset-y': scaleInset()
55433
54960
  }],
55434
54961
  /**
55435
- * Inset Inline Start
54962
+ * Start
55436
54963
  * @see https://tailwindcss.com/docs/top-right-bottom-left
55437
- * @todo class group will be renamed to `inset-s` in next major release
55438
54964
  */
55439
54965
  start: [{
55440
- 'inset-s': scaleInset(),
55441
- /**
55442
- * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.
55443
- * @see https://github.com/tailwindlabs/tailwindcss/pull/19613
55444
- */
55445
54966
  start: scaleInset()
55446
54967
  }],
55447
54968
  /**
55448
- * Inset Inline End
54969
+ * End
55449
54970
  * @see https://tailwindcss.com/docs/top-right-bottom-left
55450
- * @todo class group will be renamed to `inset-e` in next major release
55451
54971
  */
55452
54972
  end: [{
55453
- 'inset-e': scaleInset(),
55454
- /**
55455
- * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.
55456
- * @see https://github.com/tailwindlabs/tailwindcss/pull/19613
55457
- */
55458
54973
  end: scaleInset()
55459
54974
  }],
55460
- /**
55461
- * Inset Block Start
55462
- * @see https://tailwindcss.com/docs/top-right-bottom-left
55463
- */
55464
- 'inset-bs': [{
55465
- 'inset-bs': scaleInset()
55466
- }],
55467
- /**
55468
- * Inset Block End
55469
- * @see https://tailwindcss.com/docs/top-right-bottom-left
55470
- */
55471
- 'inset-be': [{
55472
- 'inset-be': scaleInset()
55473
- }],
55474
54975
  /**
55475
54976
  * Top
55476
54977
  * @see https://tailwindcss.com/docs/top-right-bottom-left
@@ -55737,47 +55238,33 @@ const getDefaultConfig = () => {
55737
55238
  p: scaleUnambiguousSpacing()
55738
55239
  }],
55739
55240
  /**
55740
- * Padding Inline
55241
+ * Padding X
55741
55242
  * @see https://tailwindcss.com/docs/padding
55742
55243
  */
55743
55244
  px: [{
55744
55245
  px: scaleUnambiguousSpacing()
55745
55246
  }],
55746
55247
  /**
55747
- * Padding Block
55248
+ * Padding Y
55748
55249
  * @see https://tailwindcss.com/docs/padding
55749
55250
  */
55750
55251
  py: [{
55751
55252
  py: scaleUnambiguousSpacing()
55752
55253
  }],
55753
55254
  /**
55754
- * Padding Inline Start
55255
+ * Padding Start
55755
55256
  * @see https://tailwindcss.com/docs/padding
55756
55257
  */
55757
55258
  ps: [{
55758
55259
  ps: scaleUnambiguousSpacing()
55759
55260
  }],
55760
55261
  /**
55761
- * Padding Inline End
55262
+ * Padding End
55762
55263
  * @see https://tailwindcss.com/docs/padding
55763
55264
  */
55764
55265
  pe: [{
55765
55266
  pe: scaleUnambiguousSpacing()
55766
55267
  }],
55767
- /**
55768
- * Padding Block Start
55769
- * @see https://tailwindcss.com/docs/padding
55770
- */
55771
- pbs: [{
55772
- pbs: scaleUnambiguousSpacing()
55773
- }],
55774
- /**
55775
- * Padding Block End
55776
- * @see https://tailwindcss.com/docs/padding
55777
- */
55778
- pbe: [{
55779
- pbe: scaleUnambiguousSpacing()
55780
- }],
55781
55268
  /**
55782
55269
  * Padding Top
55783
55270
  * @see https://tailwindcss.com/docs/padding
@@ -55814,47 +55301,33 @@ const getDefaultConfig = () => {
55814
55301
  m: scaleMargin()
55815
55302
  }],
55816
55303
  /**
55817
- * Margin Inline
55304
+ * Margin X
55818
55305
  * @see https://tailwindcss.com/docs/margin
55819
55306
  */
55820
55307
  mx: [{
55821
55308
  mx: scaleMargin()
55822
55309
  }],
55823
55310
  /**
55824
- * Margin Block
55311
+ * Margin Y
55825
55312
  * @see https://tailwindcss.com/docs/margin
55826
55313
  */
55827
55314
  my: [{
55828
55315
  my: scaleMargin()
55829
55316
  }],
55830
55317
  /**
55831
- * Margin Inline Start
55318
+ * Margin Start
55832
55319
  * @see https://tailwindcss.com/docs/margin
55833
55320
  */
55834
55321
  ms: [{
55835
55322
  ms: scaleMargin()
55836
55323
  }],
55837
55324
  /**
55838
- * Margin Inline End
55325
+ * Margin End
55839
55326
  * @see https://tailwindcss.com/docs/margin
55840
55327
  */
55841
55328
  me: [{
55842
55329
  me: scaleMargin()
55843
55330
  }],
55844
- /**
55845
- * Margin Block Start
55846
- * @see https://tailwindcss.com/docs/margin
55847
- */
55848
- mbs: [{
55849
- mbs: scaleMargin()
55850
- }],
55851
- /**
55852
- * Margin Block End
55853
- * @see https://tailwindcss.com/docs/margin
55854
- */
55855
- mbe: [{
55856
- mbe: scaleMargin()
55857
- }],
55858
55331
  /**
55859
55332
  * Margin Top
55860
55333
  * @see https://tailwindcss.com/docs/margin
@@ -55917,48 +55390,6 @@ const getDefaultConfig = () => {
55917
55390
  size: [{
55918
55391
  size: scaleSizing()
55919
55392
  }],
55920
- /**
55921
- * Inline Size
55922
- * @see https://tailwindcss.com/docs/width
55923
- */
55924
- 'inline-size': [{
55925
- inline: ['auto', ...scaleSizingInline()]
55926
- }],
55927
- /**
55928
- * Min-Inline Size
55929
- * @see https://tailwindcss.com/docs/min-width
55930
- */
55931
- 'min-inline-size': [{
55932
- 'min-inline': ['auto', ...scaleSizingInline()]
55933
- }],
55934
- /**
55935
- * Max-Inline Size
55936
- * @see https://tailwindcss.com/docs/max-width
55937
- */
55938
- 'max-inline-size': [{
55939
- 'max-inline': ['none', ...scaleSizingInline()]
55940
- }],
55941
- /**
55942
- * Block Size
55943
- * @see https://tailwindcss.com/docs/height
55944
- */
55945
- 'block-size': [{
55946
- block: ['auto', ...scaleSizingBlock()]
55947
- }],
55948
- /**
55949
- * Min-Block Size
55950
- * @see https://tailwindcss.com/docs/min-height
55951
- */
55952
- 'min-block-size': [{
55953
- 'min-block': ['auto', ...scaleSizingBlock()]
55954
- }],
55955
- /**
55956
- * Max-Block Size
55957
- * @see https://tailwindcss.com/docs/max-height
55958
- */
55959
- 'max-block-size': [{
55960
- 'max-block': ['none', ...scaleSizingBlock()]
55961
- }],
55962
55393
  /**
55963
55394
  * Width
55964
55395
  * @see https://tailwindcss.com/docs/width
@@ -56031,7 +55462,7 @@ const getDefaultConfig = () => {
56031
55462
  * @see https://tailwindcss.com/docs/font-weight
56032
55463
  */
56033
55464
  'font-weight': [{
56034
- font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight]
55465
+ font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]
56035
55466
  }],
56036
55467
  /**
56037
55468
  * Font Stretch
@@ -56045,14 +55476,7 @@ const getDefaultConfig = () => {
56045
55476
  * @see https://tailwindcss.com/docs/font-family
56046
55477
  */
56047
55478
  'font-family': [{
56048
- font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont]
56049
- }],
56050
- /**
56051
- * Font Feature Settings
56052
- * @see https://tailwindcss.com/docs/font-feature-settings
56053
- */
56054
- 'font-features': [{
56055
- 'font-features': [isArbitraryValue]
55479
+ font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]
56056
55480
  }],
56057
55481
  /**
56058
55482
  * Font Variant Numeric
@@ -56472,47 +55896,33 @@ const getDefaultConfig = () => {
56472
55896
  border: scaleBorderWidth()
56473
55897
  }],
56474
55898
  /**
56475
- * Border Width Inline
55899
+ * Border Width X
56476
55900
  * @see https://tailwindcss.com/docs/border-width
56477
55901
  */
56478
55902
  'border-w-x': [{
56479
55903
  'border-x': scaleBorderWidth()
56480
55904
  }],
56481
55905
  /**
56482
- * Border Width Block
55906
+ * Border Width Y
56483
55907
  * @see https://tailwindcss.com/docs/border-width
56484
55908
  */
56485
55909
  'border-w-y': [{
56486
55910
  'border-y': scaleBorderWidth()
56487
55911
  }],
56488
55912
  /**
56489
- * Border Width Inline Start
55913
+ * Border Width Start
56490
55914
  * @see https://tailwindcss.com/docs/border-width
56491
55915
  */
56492
55916
  'border-w-s': [{
56493
55917
  'border-s': scaleBorderWidth()
56494
55918
  }],
56495
55919
  /**
56496
- * Border Width Inline End
55920
+ * Border Width End
56497
55921
  * @see https://tailwindcss.com/docs/border-width
56498
55922
  */
56499
55923
  'border-w-e': [{
56500
55924
  'border-e': scaleBorderWidth()
56501
55925
  }],
56502
- /**
56503
- * Border Width Block Start
56504
- * @see https://tailwindcss.com/docs/border-width
56505
- */
56506
- 'border-w-bs': [{
56507
- 'border-bs': scaleBorderWidth()
56508
- }],
56509
- /**
56510
- * Border Width Block End
56511
- * @see https://tailwindcss.com/docs/border-width
56512
- */
56513
- 'border-w-be': [{
56514
- 'border-be': scaleBorderWidth()
56515
- }],
56516
55926
  /**
56517
55927
  * Border Width Top
56518
55928
  * @see https://tailwindcss.com/docs/border-width
@@ -56587,47 +55997,33 @@ const getDefaultConfig = () => {
56587
55997
  border: scaleColor()
56588
55998
  }],
56589
55999
  /**
56590
- * Border Color Inline
56000
+ * Border Color X
56591
56001
  * @see https://tailwindcss.com/docs/border-color
56592
56002
  */
56593
56003
  'border-color-x': [{
56594
56004
  'border-x': scaleColor()
56595
56005
  }],
56596
56006
  /**
56597
- * Border Color Block
56007
+ * Border Color Y
56598
56008
  * @see https://tailwindcss.com/docs/border-color
56599
56009
  */
56600
56010
  'border-color-y': [{
56601
56011
  'border-y': scaleColor()
56602
56012
  }],
56603
56013
  /**
56604
- * Border Color Inline Start
56014
+ * Border Color S
56605
56015
  * @see https://tailwindcss.com/docs/border-color
56606
56016
  */
56607
56017
  'border-color-s': [{
56608
56018
  'border-s': scaleColor()
56609
56019
  }],
56610
56020
  /**
56611
- * Border Color Inline End
56021
+ * Border Color E
56612
56022
  * @see https://tailwindcss.com/docs/border-color
56613
56023
  */
56614
56024
  'border-color-e': [{
56615
56025
  'border-e': scaleColor()
56616
56026
  }],
56617
- /**
56618
- * Border Color Block Start
56619
- * @see https://tailwindcss.com/docs/border-color
56620
- */
56621
- 'border-color-bs': [{
56622
- 'border-bs': scaleColor()
56623
- }],
56624
- /**
56625
- * Border Color Block End
56626
- * @see https://tailwindcss.com/docs/border-color
56627
- */
56628
- 'border-color-be': [{
56629
- 'border-be': scaleColor()
56630
- }],
56631
56027
  /**
56632
56028
  * Border Color Top
56633
56029
  * @see https://tailwindcss.com/docs/border-color
@@ -57492,47 +56888,33 @@ const getDefaultConfig = () => {
57492
56888
  'scroll-m': scaleUnambiguousSpacing()
57493
56889
  }],
57494
56890
  /**
57495
- * Scroll Margin Inline
56891
+ * Scroll Margin X
57496
56892
  * @see https://tailwindcss.com/docs/scroll-margin
57497
56893
  */
57498
56894
  'scroll-mx': [{
57499
56895
  'scroll-mx': scaleUnambiguousSpacing()
57500
56896
  }],
57501
56897
  /**
57502
- * Scroll Margin Block
56898
+ * Scroll Margin Y
57503
56899
  * @see https://tailwindcss.com/docs/scroll-margin
57504
56900
  */
57505
56901
  'scroll-my': [{
57506
56902
  'scroll-my': scaleUnambiguousSpacing()
57507
56903
  }],
57508
56904
  /**
57509
- * Scroll Margin Inline Start
56905
+ * Scroll Margin Start
57510
56906
  * @see https://tailwindcss.com/docs/scroll-margin
57511
56907
  */
57512
56908
  'scroll-ms': [{
57513
56909
  'scroll-ms': scaleUnambiguousSpacing()
57514
56910
  }],
57515
56911
  /**
57516
- * Scroll Margin Inline End
56912
+ * Scroll Margin End
57517
56913
  * @see https://tailwindcss.com/docs/scroll-margin
57518
56914
  */
57519
56915
  'scroll-me': [{
57520
56916
  'scroll-me': scaleUnambiguousSpacing()
57521
56917
  }],
57522
- /**
57523
- * Scroll Margin Block Start
57524
- * @see https://tailwindcss.com/docs/scroll-margin
57525
- */
57526
- 'scroll-mbs': [{
57527
- 'scroll-mbs': scaleUnambiguousSpacing()
57528
- }],
57529
- /**
57530
- * Scroll Margin Block End
57531
- * @see https://tailwindcss.com/docs/scroll-margin
57532
- */
57533
- 'scroll-mbe': [{
57534
- 'scroll-mbe': scaleUnambiguousSpacing()
57535
- }],
57536
56918
  /**
57537
56919
  * Scroll Margin Top
57538
56920
  * @see https://tailwindcss.com/docs/scroll-margin
@@ -57569,47 +56951,33 @@ const getDefaultConfig = () => {
57569
56951
  'scroll-p': scaleUnambiguousSpacing()
57570
56952
  }],
57571
56953
  /**
57572
- * Scroll Padding Inline
56954
+ * Scroll Padding X
57573
56955
  * @see https://tailwindcss.com/docs/scroll-padding
57574
56956
  */
57575
56957
  'scroll-px': [{
57576
56958
  'scroll-px': scaleUnambiguousSpacing()
57577
56959
  }],
57578
56960
  /**
57579
- * Scroll Padding Block
56961
+ * Scroll Padding Y
57580
56962
  * @see https://tailwindcss.com/docs/scroll-padding
57581
56963
  */
57582
56964
  'scroll-py': [{
57583
56965
  'scroll-py': scaleUnambiguousSpacing()
57584
56966
  }],
57585
56967
  /**
57586
- * Scroll Padding Inline Start
56968
+ * Scroll Padding Start
57587
56969
  * @see https://tailwindcss.com/docs/scroll-padding
57588
56970
  */
57589
56971
  'scroll-ps': [{
57590
56972
  'scroll-ps': scaleUnambiguousSpacing()
57591
56973
  }],
57592
56974
  /**
57593
- * Scroll Padding Inline End
56975
+ * Scroll Padding End
57594
56976
  * @see https://tailwindcss.com/docs/scroll-padding
57595
56977
  */
57596
56978
  'scroll-pe': [{
57597
56979
  'scroll-pe': scaleUnambiguousSpacing()
57598
56980
  }],
57599
- /**
57600
- * Scroll Padding Block Start
57601
- * @see https://tailwindcss.com/docs/scroll-padding
57602
- */
57603
- 'scroll-pbs': [{
57604
- 'scroll-pbs': scaleUnambiguousSpacing()
57605
- }],
57606
- /**
57607
- * Scroll Padding Block End
57608
- * @see https://tailwindcss.com/docs/scroll-padding
57609
- */
57610
- 'scroll-pbe': [{
57611
- 'scroll-pbe': scaleUnambiguousSpacing()
57612
- }],
57613
56981
  /**
57614
56982
  * Scroll Padding Top
57615
56983
  * @see https://tailwindcss.com/docs/scroll-padding
@@ -57744,15 +57112,15 @@ const getDefaultConfig = () => {
57744
57112
  conflictingClassGroups: {
57745
57113
  overflow: ['overflow-x', 'overflow-y'],
57746
57114
  overscroll: ['overscroll-x', 'overscroll-y'],
57747
- inset: ['inset-x', 'inset-y', 'inset-bs', 'inset-be', 'start', 'end', 'top', 'right', 'bottom', 'left'],
57115
+ inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],
57748
57116
  'inset-x': ['right', 'left'],
57749
57117
  'inset-y': ['top', 'bottom'],
57750
57118
  flex: ['basis', 'grow', 'shrink'],
57751
57119
  gap: ['gap-x', 'gap-y'],
57752
- p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],
57120
+ p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],
57753
57121
  px: ['pr', 'pl'],
57754
57122
  py: ['pt', 'pb'],
57755
- m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],
57123
+ m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],
57756
57124
  mx: ['mr', 'ml'],
57757
57125
  my: ['mt', 'mb'],
57758
57126
  size: ['w', 'h'],
@@ -57772,18 +57140,18 @@ const getDefaultConfig = () => {
57772
57140
  'rounded-b': ['rounded-br', 'rounded-bl'],
57773
57141
  'rounded-l': ['rounded-tl', 'rounded-bl'],
57774
57142
  'border-spacing': ['border-spacing-x', 'border-spacing-y'],
57775
- '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'],
57143
+ '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'],
57776
57144
  'border-w-x': ['border-w-r', 'border-w-l'],
57777
57145
  'border-w-y': ['border-w-t', 'border-w-b'],
57778
- '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'],
57146
+ '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'],
57779
57147
  'border-color-x': ['border-color-r', 'border-color-l'],
57780
57148
  'border-color-y': ['border-color-t', 'border-color-b'],
57781
57149
  translate: ['translate-x', 'translate-y', 'translate-none'],
57782
57150
  'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],
57783
- 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],
57151
+ 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],
57784
57152
  'scroll-mx': ['scroll-mr', 'scroll-ml'],
57785
57153
  'scroll-my': ['scroll-mt', 'scroll-mb'],
57786
- 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],
57154
+ 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],
57787
57155
  'scroll-px': ['scroll-pr', 'scroll-pl'],
57788
57156
  'scroll-py': ['scroll-pt', 'scroll-pb'],
57789
57157
  touch: ['touch-x', 'touch-y', 'touch-pz'],