@umami/shiso 1.12.0 → 1.13.0

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.
Files changed (121) hide show
  1. package/dist/chunks/App.js +76 -49
  2. package/dist/chunks/abnfDiagram-VCTEODGH.js +109 -0
  3. package/dist/chunks/arc.js +130 -0
  4. package/dist/chunks/architecture-7GRP2DOG.js +4 -0
  5. package/dist/chunks/architectureDiagram-5GKGNRK7.js +7466 -0
  6. package/dist/chunks/array.js +8 -0
  7. package/dist/chunks/blockDiagram-I7D4REHJ.js +2546 -0
  8. package/dist/chunks/c4Diagram-7LVT6UL2.js +3654 -0
  9. package/dist/chunks/channel.js +9 -0
  10. package/dist/chunks/chunk-2Q5K7J3B.js +21 -0
  11. package/dist/chunks/chunk-4HAMMTFA.js +6106 -0
  12. package/dist/chunks/chunk-5VM5RSS4.js +21 -0
  13. package/dist/chunks/chunk-75Z2AOVW.js +2185 -0
  14. package/dist/chunks/chunk-DU6HZSFF.js +8729 -0
  15. package/dist/chunks/chunk-F27PBJKO.js +95 -0
  16. package/dist/chunks/chunk-FOHPRMQF.js +27162 -0
  17. package/dist/chunks/chunk-GMAD6QVW.js +2369 -0
  18. package/dist/chunks/chunk-GVQU2GXP.js +58 -0
  19. package/dist/chunks/chunk-IMKFNOWR.js +2593 -0
  20. package/dist/chunks/chunk-JWPE2WC7.js +12 -0
  21. package/dist/chunks/chunk-L3NEJ4N5.js +420 -0
  22. package/dist/chunks/chunk-OSK3NFVY.js +1029 -0
  23. package/dist/chunks/chunk-P2QGCYS3.js +95 -0
  24. package/dist/chunks/chunk-POPQ4Y6H.js +33 -0
  25. package/dist/chunks/chunk-PWAF6VOD.js +467 -0
  26. package/dist/chunks/chunk-SHT3W25Y.js +4813 -0
  27. package/dist/chunks/chunk-SVP7TREG.js +686 -0
  28. package/dist/chunks/chunk-TICWLB2K.js +3800 -0
  29. package/dist/chunks/chunk-XXDRQBXY.js +12 -0
  30. package/dist/chunks/chunk-Y2CYZVJY.js +15 -0
  31. package/dist/chunks/classDiagram-ZZMXUADV.js +33 -0
  32. package/dist/chunks/classDiagram-v2-VYDZK3BY.js +33 -0
  33. package/dist/chunks/cose-bilkent-JH36ORCC.js +4268 -0
  34. package/dist/chunks/cynefin-OW5HDTMX.js +4 -0
  35. package/dist/chunks/cynefinDiagram-5FMLGOSQ.js +482 -0
  36. package/dist/chunks/cytoscape.esm.js +28282 -0
  37. package/dist/chunks/dagre-GXQ25YYZ.js +583 -0
  38. package/dist/chunks/dagre.js +4235 -0
  39. package/dist/chunks/defaultLocale.js +246 -0
  40. package/dist/chunks/diagram-S7CK7UJ4.js +402 -0
  41. package/dist/chunks/diagram-UQ7AKVKN.js +291 -0
  42. package/dist/chunks/diagram-VSXAHHWV.js +553 -0
  43. package/dist/chunks/diagram-VX7I27RA.js +798 -0
  44. package/dist/chunks/diagram-Z3DM3KII.js +186 -0
  45. package/dist/chunks/dist.js +92 -0
  46. package/dist/chunks/docs.js +987 -91
  47. package/dist/chunks/ebnfDiagram-PWID7BFC.js +123 -0
  48. package/dist/chunks/erDiagram-RLTQ6QDP.js +2295 -0
  49. package/dist/chunks/eventmodeling-NTZA5JFV.js +4 -0
  50. package/dist/chunks/flowDiagram-HODETNUW.js +17 -0
  51. package/dist/chunks/ganttDiagram-EL5Y4UJY.js +3928 -0
  52. package/dist/chunks/gitGraph-4MIJSDKK.js +4 -0
  53. package/dist/chunks/gitGraphDiagram-WWUBYQGX.js +1153 -0
  54. package/dist/chunks/graphlib.js +4194 -0
  55. package/dist/chunks/info-A6RAGUB7.js +4 -0
  56. package/dist/chunks/infoDiagram-27XIBGKW.js +25 -0
  57. package/dist/chunks/init.js +14 -0
  58. package/dist/chunks/ishikawaDiagram-5VMMS53U.js +971 -0
  59. package/dist/chunks/journeyDiagram-3NMN7TZE.js +1226 -0
  60. package/dist/chunks/kanban-definition-UXKFOSKX.js +1241 -0
  61. package/dist/chunks/katex.js +26463 -0
  62. package/dist/chunks/line.js +48 -0
  63. package/dist/chunks/linear.js +391 -0
  64. package/dist/chunks/mermaid-parser.core.js +754 -0
  65. package/dist/chunks/mermaid.core.js +4898 -0
  66. package/dist/chunks/mindmap-definition-YA3MSWOX.js +1309 -0
  67. package/dist/chunks/ordinal.js +84 -0
  68. package/dist/chunks/packet-AYTQ26CC.js +4 -0
  69. package/dist/chunks/path.js +106 -0
  70. package/dist/chunks/pegDiagram-XKGWAZYB.js +115 -0
  71. package/dist/chunks/pie-WAS4IAKB.js +4 -0
  72. package/dist/chunks/pieDiagram-E7YTZNPT.js +297 -0
  73. package/dist/chunks/quadrantDiagram-AXDQQJYC.js +2234 -0
  74. package/dist/chunks/radar-RG4KPBEZ.js +4 -0
  75. package/dist/chunks/railroad-74A4TZTK.js +4 -0
  76. package/dist/chunks/railroad-abnf-HS5TGJTU.js +4 -0
  77. package/dist/chunks/railroad-ebnf-LZEXJU2U.js +4 -0
  78. package/dist/chunks/railroad-peg-WCYAUIDC.js +4 -0
  79. package/dist/chunks/railroadDiagram-O6MQD6OU.js +89 -0
  80. package/dist/chunks/requirementDiagram-BXWQKSXE.js +2464 -0
  81. package/dist/chunks/rough.esm.js +1396 -0
  82. package/dist/chunks/sankeyDiagram-P5KCCOFB.js +1308 -0
  83. package/dist/chunks/sequenceDiagram-WJ2MYXX4.js +5445 -0
  84. package/dist/chunks/sizeCapture-INFHLROL.js +56 -0
  85. package/dist/chunks/src.js +2653 -0
  86. package/dist/chunks/stateDiagram-D77RDMKH.js +368 -0
  87. package/dist/chunks/stateDiagram-v2-MP3YSRHH.js +33 -0
  88. package/dist/chunks/swimlanes-42K2YHIH.js +6925 -0
  89. package/dist/chunks/swimlanesDiagram-VR7AAH4N.js +32 -0
  90. package/dist/chunks/timeline-definition-24CTP7MA.js +1507 -0
  91. package/dist/chunks/treeView-Q6P3EWNA.js +4 -0
  92. package/dist/chunks/treemap-WGGIJYW6.js +4 -0
  93. package/dist/chunks/vennDiagram-4TSXK5OY.js +2803 -0
  94. package/dist/chunks/wardley-WFR3VGLG.js +4 -0
  95. package/dist/chunks/wardleyDiagram-VM6X3IG4.js +877 -0
  96. package/dist/chunks/xychartDiagram-S5SC5T6Z.js +2698 -0
  97. package/dist/components.js +2 -2
  98. package/dist/entry-client.js +1 -1
  99. package/dist/entry-server.js +1 -1
  100. package/docs.schema.json +1 -1
  101. package/package.json +2 -1
  102. package/scripts/expand-navigation-globs.mjs +77 -8
  103. package/src/components/CodeBlock.tsx +36 -0
  104. package/src/components/Docs.tsx +44 -21
  105. package/src/components/OpenApiOperation.tsx +28 -20
  106. package/src/components/SideNav.tsx +8 -3
  107. package/src/components/docs/Changelog.tsx +163 -0
  108. package/src/components/docs/Mermaid.tsx +164 -0
  109. package/src/components/docs/Panel.tsx +23 -0
  110. package/src/components/docs/ParamField.tsx +17 -5
  111. package/src/components/docs/PropertiesTable.tsx +2 -2
  112. package/src/components/docs/ResponseField.tsx +17 -5
  113. package/src/components/docs/Tiles.tsx +59 -0
  114. package/src/components/docs/Tree.tsx +359 -0
  115. package/src/components/docs/Update.tsx +72 -0
  116. package/src/components/docs/index.ts +7 -0
  117. package/src/components/docs/panel-context.tsx +25 -0
  118. package/src/components/docs/styles.ts +49 -0
  119. package/src/components/icons/index.ts +4 -0
  120. package/src/lib/rehype-shiki.ts +18 -1
  121. package/types/components.d.ts +79 -0
@@ -1,11 +1,17 @@
1
1
  import * as React$1 from "react";
2
- import { Children, cloneElement, createContext, createElement, forwardRef, isValidElement, useContext, useDebugValue, useEffect, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore, useSyncExternalStore as useSyncExternalStore$1 } from "react";
3
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { Children, Fragment, cloneElement, createContext, createElement, forwardRef, isValidElement, useContext, useDebugValue, useEffect, useId, useLayoutEffect, useMemo, useRef, useState, useSyncExternalStore, useSyncExternalStore as useSyncExternalStore$1 } from "react";
3
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
4
4
  import * as ReactDOM from "react-dom";
5
5
  import { ICON_REGISTRY } from "@/lib/icon-registry.generated";
6
6
 
7
7
  //#region \0rolldown/runtime.js
8
+ var __create = Object.create;
8
9
  var __defProp = Object.defineProperty;
10
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
+ var __getOwnPropNames = Object.getOwnPropertyNames;
12
+ var __getProtoOf = Object.getPrototypeOf;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
9
15
  var __exportAll = (all, no_symbols) => {
10
16
  let target = {};
11
17
  for (var name in all) {
@@ -19,6 +25,24 @@ var __exportAll = (all, no_symbols) => {
19
25
  }
20
26
  return target;
21
27
  };
28
+ var __copyProps = (to, from, except, desc) => {
29
+ if (from && typeof from === "object" || typeof from === "function") {
30
+ for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
31
+ key = keys[i];
32
+ if (!__hasOwnProp.call(to, key) && key !== except) {
33
+ __defProp(to, key, {
34
+ get: ((k) => from[k]).bind(null, key),
35
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
36
+ });
37
+ }
38
+ }
39
+ }
40
+ return to;
41
+ };
42
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
43
+ value: mod,
44
+ enumerable: true
45
+ }) : target, mod));
22
46
 
23
47
  //#endregion
24
48
  //#region ../../node_modules/.pnpm/react-router@8.3.0_react-do_c27277bcf657dc321048682bd02ab633/node_modules/react-router/dist/production/lib/router/url.js
@@ -1855,6 +1879,47 @@ function isModifiedEvent(event) {
1855
1879
  function shouldProcessLinkClick(event, target) {
1856
1880
  return event.button === 0 && (!target || target === "_self") && !isModifiedEvent(event);
1857
1881
  }
1882
+ /**
1883
+ * Creates a URLSearchParams object using the given initializer.
1884
+ *
1885
+ * This is identical to `new URLSearchParams(init)` except it also supports
1886
+ * arrays as values in the object form of the initializer instead of just
1887
+ * strings. This is convenient when you need multiple values for a given key,
1888
+ * but don't want to use an array initializer.
1889
+ *
1890
+ * @example
1891
+ * // Instead of:
1892
+ * let searchParams = new URLSearchParams([
1893
+ * ["sort", "name"],
1894
+ * ["sort", "price"],
1895
+ * ]);
1896
+ *
1897
+ * // You can do:
1898
+ * let searchParams = createSearchParams({
1899
+ * sort: ["name", "price"],
1900
+ * });
1901
+ *
1902
+ * @public
1903
+ * @category Utils
1904
+ * @param init The value used to initialize the URL search parameters.
1905
+ * @returns A URLSearchParams object containing the initialized search
1906
+ * parameters.
1907
+ */
1908
+ function createSearchParams(init = "") {
1909
+ return new URLSearchParams(typeof init === "string" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {
1910
+ let value = init[key];
1911
+ return memo.concat(Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]);
1912
+ }, []));
1913
+ }
1914
+ function getSearchParamsForLocation(locationSearch, defaultSearchParams) {
1915
+ let searchParams = createSearchParams(locationSearch);
1916
+ if (defaultSearchParams) defaultSearchParams.forEach((_, key) => {
1917
+ if (!searchParams.has(key)) defaultSearchParams.getAll(key).forEach((value) => {
1918
+ searchParams.append(key, value);
1919
+ });
1920
+ });
1921
+ return searchParams;
1922
+ }
1858
1923
  let _formDataSupportsSubmitter = null;
1859
1924
  function isFormDataSubmitterSupported() {
1860
1925
  if (_formDataSupportsSubmitter === null) try {
@@ -2873,6 +2938,115 @@ function useLinkClickHandler(to, { target, replace: replaceProp, mask, state, pr
2873
2938
  useTransitions
2874
2939
  ]);
2875
2940
  }
2941
+ /**
2942
+ * Returns a tuple of the current URL's [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams)
2943
+ * and a function to update them. Setting the search params causes a navigation.
2944
+ *
2945
+ * ```tsx
2946
+ * import { useSearchParams } from "react-router";
2947
+ *
2948
+ * export function SomeComponent() {
2949
+ * const [searchParams, setSearchParams] = useSearchParams();
2950
+ * // ...
2951
+ * }
2952
+ * ```
2953
+ *
2954
+ * ### `setSearchParams` function
2955
+ *
2956
+ * The second element of the tuple is a function that can be used to update the
2957
+ * search params. It accepts the same types as `defaultInit` and will cause a
2958
+ * navigation to the new URL.
2959
+ *
2960
+ * ```tsx
2961
+ * let [searchParams, setSearchParams] = useSearchParams();
2962
+ *
2963
+ * // a search param string
2964
+ * setSearchParams("?tab=1");
2965
+ *
2966
+ * // a shorthand object
2967
+ * setSearchParams({ tab: "1" });
2968
+ *
2969
+ * // object keys can be arrays for multiple values on the key
2970
+ * setSearchParams({ brand: ["nike", "reebok"] });
2971
+ *
2972
+ * // an array of tuples
2973
+ * setSearchParams([["tab", "1"]]);
2974
+ *
2975
+ * // a `URLSearchParams` object
2976
+ * setSearchParams(new URLSearchParams("?tab=1"));
2977
+ * ```
2978
+ *
2979
+ * It also supports a function callback like React's
2980
+ * [`setState`](https://react.dev/reference/react/useState#setstate):
2981
+ *
2982
+ * ```tsx
2983
+ * setSearchParams((searchParams) => {
2984
+ * searchParams.set("tab", "2");
2985
+ * return searchParams;
2986
+ * });
2987
+ * ```
2988
+ *
2989
+ * <docs-warning>The function callback version of `setSearchParams` does not support
2990
+ * the [queueing](https://react.dev/reference/react/useState#setstate-parameters)
2991
+ * logic that React's `setState` implements. Multiple calls to `setSearchParams`
2992
+ * in the same tick will not build on the prior value. If you need this behavior,
2993
+ * you can use `setState` manually.</docs-warning>
2994
+ *
2995
+ * ### Notes
2996
+ *
2997
+ * Note that `searchParams` is a stable reference, so you can reliably use it
2998
+ * as a dependency in React's [`useEffect`](https://react.dev/reference/react/useEffect)
2999
+ * hooks.
3000
+ *
3001
+ * ```tsx
3002
+ * useEffect(() => {
3003
+ * console.log(searchParams.get("tab"));
3004
+ * }, [searchParams]);
3005
+ * ```
3006
+ *
3007
+ * However, this also means it's mutable. If you change the object without
3008
+ * calling `setSearchParams`, its values will change between renders if some
3009
+ * other state causes the component to re-render and URL will not reflect the
3010
+ * values.
3011
+ *
3012
+ * @public
3013
+ * @category Hooks
3014
+ * @param defaultInit
3015
+ * You can initialize the search params with a default value, though it **will
3016
+ * not** change the URL on the first render.
3017
+ *
3018
+ * ```tsx
3019
+ * // a search param string
3020
+ * useSearchParams("?tab=1");
3021
+ *
3022
+ * // a shorthand object
3023
+ * useSearchParams({ tab: "1" });
3024
+ *
3025
+ * // object keys can be arrays for multiple values on the key
3026
+ * useSearchParams({ brand: ["nike", "reebok"] });
3027
+ *
3028
+ * // an array of tuples
3029
+ * useSearchParams([["tab", "1"]]);
3030
+ *
3031
+ * // a `URLSearchParams` object
3032
+ * useSearchParams(new URLSearchParams("?tab=1"));
3033
+ * ```
3034
+ * @returns A tuple of the current [`URLSearchParams`](https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams)
3035
+ * and a function to update them.
3036
+ */
3037
+ function useSearchParams(defaultInit) {
3038
+ warning(typeof URLSearchParams !== "undefined", "You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");
3039
+ let defaultSearchParamsRef = React$1.useRef(createSearchParams(defaultInit));
3040
+ let hasSetSearchParamsRef = React$1.useRef(false);
3041
+ let location = useLocation();
3042
+ let searchParams = React$1.useMemo(() => getSearchParamsForLocation(location.search, hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current), [location.search]);
3043
+ let navigate = useNavigate();
3044
+ return [searchParams, React$1.useCallback((nextInit, navigateOptions) => {
3045
+ const newSearchParams = createSearchParams(typeof nextInit === "function" ? nextInit(new URLSearchParams(searchParams)) : nextInit);
3046
+ hasSetSearchParamsRef.current = true;
3047
+ navigate("?" + newSearchParams, navigateOptions);
3048
+ }, [navigate, searchParams])];
3049
+ }
2876
3050
  let fetcherId = 0;
2877
3051
  let getUniqueFetcherId = () => `__${String(++fetcherId)}__`;
2878
3052
  /**
@@ -3280,11 +3454,11 @@ const createLucideIcon = (iconName, iconNode) => {
3280
3454
  * This source code is licensed under the ISC license.
3281
3455
  * See the LICENSE file in the root directory of this source tree.
3282
3456
  */
3283
- const __iconNode$9 = [["path", {
3457
+ const __iconNode$12 = [["path", {
3284
3458
  d: "M20 6 9 17l-5-5",
3285
3459
  key: "1gmf2c"
3286
3460
  }]];
3287
- const Check$1 = createLucideIcon("check", __iconNode$9);
3461
+ const Check$1 = createLucideIcon("check", __iconNode$12);
3288
3462
 
3289
3463
  //#endregion
3290
3464
  //#region ../../node_modules/.pnpm/lucide-react@1.28.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/chevron-down.mjs
@@ -3294,11 +3468,11 @@ const Check$1 = createLucideIcon("check", __iconNode$9);
3294
3468
  * This source code is licensed under the ISC license.
3295
3469
  * See the LICENSE file in the root directory of this source tree.
3296
3470
  */
3297
- const __iconNode$8 = [["path", {
3471
+ const __iconNode$11 = [["path", {
3298
3472
  d: "m6 9 6 6 6-6",
3299
3473
  key: "qrunsl"
3300
3474
  }]];
3301
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$8);
3475
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$11);
3302
3476
 
3303
3477
  //#endregion
3304
3478
  //#region ../../node_modules/.pnpm/lucide-react@1.28.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/chevron-right.mjs
@@ -3308,11 +3482,11 @@ const ChevronDown = createLucideIcon("chevron-down", __iconNode$8);
3308
3482
  * This source code is licensed under the ISC license.
3309
3483
  * See the LICENSE file in the root directory of this source tree.
3310
3484
  */
3311
- const __iconNode$7 = [["path", {
3485
+ const __iconNode$10 = [["path", {
3312
3486
  d: "m9 18 6-6-6-6",
3313
3487
  key: "mthhwq"
3314
3488
  }]];
3315
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$7);
3489
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$10);
3316
3490
 
3317
3491
  //#endregion
3318
3492
  //#region ../../node_modules/.pnpm/lucide-react@1.28.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/chevron-up.mjs
@@ -3322,11 +3496,11 @@ const ChevronRight = createLucideIcon("chevron-right", __iconNode$7);
3322
3496
  * This source code is licensed under the ISC license.
3323
3497
  * See the LICENSE file in the root directory of this source tree.
3324
3498
  */
3325
- const __iconNode$6 = [["path", {
3499
+ const __iconNode$9 = [["path", {
3326
3500
  d: "m18 15-6-6-6 6",
3327
3501
  key: "153udz"
3328
3502
  }]];
3329
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$6);
3503
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$9);
3330
3504
 
3331
3505
  //#endregion
3332
3506
  //#region ../../node_modules/.pnpm/lucide-react@1.28.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/circle-alert.mjs
@@ -3336,7 +3510,7 @@ const ChevronUp = createLucideIcon("chevron-up", __iconNode$6);
3336
3510
  * This source code is licensed under the ISC license.
3337
3511
  * See the LICENSE file in the root directory of this source tree.
3338
3512
  */
3339
- const __iconNode$5 = [
3513
+ const __iconNode$8 = [
3340
3514
  ["circle", {
3341
3515
  cx: "12",
3342
3516
  cy: "12",
@@ -3358,7 +3532,52 @@ const __iconNode$5 = [
3358
3532
  key: "4dfq90"
3359
3533
  }]
3360
3534
  ];
3361
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$5);
3535
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$8);
3536
+
3537
+ //#endregion
3538
+ //#region ../../node_modules/.pnpm/lucide-react@1.28.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/file.mjs
3539
+ /**
3540
+ * @license lucide-react v1.28.0 - ISC
3541
+ *
3542
+ * This source code is licensed under the ISC license.
3543
+ * See the LICENSE file in the root directory of this source tree.
3544
+ */
3545
+ const __iconNode$7 = [["path", {
3546
+ d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
3547
+ key: "1oefj6"
3548
+ }], ["path", {
3549
+ d: "M14 2v5a1 1 0 0 0 1 1h5",
3550
+ key: "wfsgrz"
3551
+ }]];
3552
+ const File = createLucideIcon("file", __iconNode$7);
3553
+
3554
+ //#endregion
3555
+ //#region ../../node_modules/.pnpm/lucide-react@1.28.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/folder-open.mjs
3556
+ /**
3557
+ * @license lucide-react v1.28.0 - ISC
3558
+ *
3559
+ * This source code is licensed under the ISC license.
3560
+ * See the LICENSE file in the root directory of this source tree.
3561
+ */
3562
+ const __iconNode$6 = [["path", {
3563
+ d: "m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",
3564
+ key: "usdka0"
3565
+ }]];
3566
+ const FolderOpen = createLucideIcon("folder-open", __iconNode$6);
3567
+
3568
+ //#endregion
3569
+ //#region ../../node_modules/.pnpm/lucide-react@1.28.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/folder.mjs
3570
+ /**
3571
+ * @license lucide-react v1.28.0 - ISC
3572
+ *
3573
+ * This source code is licensed under the ISC license.
3574
+ * See the LICENSE file in the root directory of this source tree.
3575
+ */
3576
+ const __iconNode$5 = [["path", {
3577
+ d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",
3578
+ key: "1kt360"
3579
+ }]];
3580
+ const Folder = createLucideIcon("folder", __iconNode$5);
3362
3581
 
3363
3582
  //#endregion
3364
3583
  //#region ../../node_modules/.pnpm/lucide-react@1.28.0_react@19.2.8/node_modules/lucide-react/dist/esm/icons/hand.mjs
@@ -7880,7 +8099,7 @@ const maybeReactUseId = SafeReact.useId;
7880
8099
  * @param idOverride
7881
8100
  * @returns {string}
7882
8101
  */
7883
- function useId(idOverride, prefix) {
8102
+ function useId$1(idOverride, prefix) {
7884
8103
  if (maybeReactUseId !== void 0) {
7885
8104
  const reactId = maybeReactUseId();
7886
8105
  return idOverride ?? (prefix ? `${prefix}-${reactId}` : reactId);
@@ -7896,7 +8115,7 @@ function useId(idOverride, prefix) {
7896
8115
  * @returns {string | undefined}
7897
8116
  */
7898
8117
  function useBaseUiId(idOverride) {
7899
- return useId(idOverride, "base-ui");
8118
+ return useId$1(idOverride, "base-ui");
7900
8119
  }
7901
8120
 
7902
8121
  //#endregion
@@ -8417,6 +8636,237 @@ function addEventListener(target, type, listener, options) {
8417
8636
  };
8418
8637
  }
8419
8638
 
8639
+ //#endregion
8640
+ //#region src/components/docs/styles.ts
8641
+ /** Shared Tailwind utility groups for the built-in MDX components. */
8642
+ const styles = {
8643
+ accordion: "my-3 [&_h3:has(>[data-slot=accordion-trigger])]:m-0",
8644
+ accordionGroup: "my-4 [&_h3:has(>[data-slot=accordion-trigger])]:m-0",
8645
+ accordionItem: "",
8646
+ accordionTrigger: "text-foreground",
8647
+ accordionContent: "text-muted-foreground [&_p]:mt-0 [&_p:last-child]:mb-0",
8648
+ expandableTrigger: "items-center py-3 text-sm font-normal text-foreground hover:no-underline",
8649
+ expandableContent: "pl-6",
8650
+ callout: "my-4 flex items-start gap-3 rounded-lg border px-3 py-2.5 text-sm leading-6",
8651
+ calloutIcon: "flex h-6 w-5 shrink-0 items-center justify-center [&_svg]:block [&_svg]:size-4",
8652
+ calloutBody: "flex min-w-0 flex-1 flex-col gap-[0.35rem] [&>:first-child]:mt-0 [&>:last-child]:mb-0 [&_:where(p,ul,ol)]:my-[0.35rem] [&>:where(p,ul,ol):first-child]:mt-0 [&>:where(p,ul,ol):last-child]:mb-0",
8653
+ calloutDescription: "text-sm text-inherit leading-6 [&>:first-child]:mt-0 [&>:last-child]:mb-0",
8654
+ calloutTitle: "font-semibold leading-6",
8655
+ note: "border-border bg-muted/50 text-foreground",
8656
+ info: "border-blue-300 bg-blue-50 text-blue-900 dark:border-blue-400/40 dark:bg-blue-400/10 dark:text-blue-300",
8657
+ warning: "border-amber-300 bg-amber-50 text-amber-900 dark:border-amber-400/40 dark:bg-amber-400/10 dark:text-amber-300",
8658
+ tip: "border-green-300 bg-green-50 text-green-900 dark:border-green-400/40 dark:bg-green-400/10 dark:text-green-300",
8659
+ check: "border-emerald-300 bg-emerald-50 text-emerald-900 dark:border-emerald-400/40 dark:bg-emerald-400/10 dark:text-emerald-300",
8660
+ danger: "border-destructive/40 bg-destructive/10 text-destructive",
8661
+ card: "block h-full gap-0 rounded-lg border border-border p-4 text-sm ring-0 hover:border-primary",
8662
+ cardPlain: "bg-card",
8663
+ cardHorizontal: "[&_[data-slot=card-inner]]:items-center [&_[data-slot=card-main]]:flex-row [&_[data-slot=card-main]]:items-center [&_[data-slot=card-main]]:gap-3 [&_[data-slot=card-body]]:m-0 [&_[data-slot=card-header]]:flex-row [&_[data-slot=card-header]]:items-center [&_[data-slot=card-header]]:gap-2",
8664
+ cardTyped: "[&_[data-slot=card-title]]:text-inherit [&_[data-slot=card-body]]:text-inherit [&_[data-slot=card-cta]]:text-inherit [&_[data-slot=card-arrow]]:text-inherit",
8665
+ cardImageLayout: "p-0 [&_[data-slot=card-inner]]:p-6",
8666
+ cardImage: "block aspect-video w-full border-border border-b object-cover",
8667
+ cardInner: "flex items-start justify-between gap-3",
8668
+ cardMain: "flex min-w-0 flex-col gap-2",
8669
+ cardHeader: "flex flex-col items-start gap-3",
8670
+ cardIcon: "inline-flex shrink-0 items-center justify-center [&_img]:size-6 [&_svg]:size-6",
8671
+ cardTitle: "text-sm font-semibold text-foreground",
8672
+ cardBody: "text-muted-foreground [&>:first-child]:mt-0 [&>:last-child]:mb-0",
8673
+ cardCta: "flex shrink-0 items-center gap-[0.35rem] text-[0.9rem] font-medium text-muted-foreground",
8674
+ cardArrow: "shrink-0 text-muted-foreground",
8675
+ grid: "my-4 grid grid-cols-1 gap-4",
8676
+ gridCols1: "md:grid-cols-1",
8677
+ gridCols2: "md:grid-cols-2",
8678
+ gridCols3: "md:grid-cols-3",
8679
+ gridCols4: "md:grid-cols-4",
8680
+ column: "min-w-0 [&>:first-child]:mt-0 [&>:last-child]:mb-0",
8681
+ icon: "inline-block align-[-0.145em]",
8682
+ tabs: "my-4 gap-0",
8683
+ frameWrapper: "my-4",
8684
+ frameHint: "mb-4 flex items-start gap-2 text-sm font-medium leading-5 text-foreground",
8685
+ frameHintIcon: "flex h-5 shrink-0 items-center text-muted-foreground [&_svg]:size-4 [&_svg]:fill-current",
8686
+ frame: "relative overflow-hidden rounded-2xl border border-border bg-muted/25 p-2",
8687
+ frameContent: "relative flex justify-center overflow-hidden rounded-xl [&_p]:m-0 [&_img]:m-0 [&_img]:w-full [&_video]:w-full [&_[data-slot=zoomable-image]]:m-0 [&_[data-slot=zoomable-image]]:w-full",
8688
+ frameCaption: "relative mt-3 px-4 pb-1 text-center text-sm leading-5 text-muted-foreground [&_p]:m-0 [&_a]:font-semibold",
8689
+ field: "my-3",
8690
+ fieldGroup: "my-4 divide-y divide-border overflow-hidden rounded-lg border border-border text-sm leading-6 [&>[data-slot=field-group-item]]:my-0 [&>[data-slot=field-group-item]]:px-4 [&>[data-slot=field-group-item]]:py-3 [&_[data-slot=field-group-body]]:mt-2 [&_[data-slot=field-group-type]]:text-xs",
8691
+ paramField: "my-3",
8692
+ fieldHeader: "flex flex-wrap items-center gap-2",
8693
+ fieldBody: "mt-3",
8694
+ fieldType: "text-[0.9rem] text-muted-foreground",
8695
+ fieldName: "font-bold text-foreground",
8696
+ code: "rounded-sm bg-[color-mix(in_srgb,currentColor_4%,transparent)] px-[0.35rem] py-[0.1rem] text-sm text-foreground font-mono",
8697
+ steps: "relative my-4 flex flex-col gap-5 before:absolute before:top-4 before:bottom-4 before:left-4 before:w-px before:-translate-x-1/2 before:bg-border before:content-['']",
8698
+ step: "relative flex items-start gap-4",
8699
+ stepNumber: "relative z-[1] flex size-8 shrink-0 items-center justify-center rounded-full border border-border bg-card text-[0.9rem] font-semibold text-foreground",
8700
+ stepContent: "flex min-w-0 grow flex-col gap-2",
8701
+ stepTitle: "text-[1.1rem] font-semibold text-foreground",
8702
+ tooltipTrigger: "peer cursor-help border-0 border-muted-foreground border-b border-dotted bg-transparent p-0 text-inherit [font:inherit]",
8703
+ update: "my-8 grid scroll-mt-24 grid-cols-1 gap-4 border-border border-t pt-6 md:grid-cols-[220px_minmax(0,1fr)]",
8704
+ updateMeta: "flex min-w-0 flex-col items-start gap-2 md:sticky md:top-24 md:self-start",
8705
+ updateLabel: "w-fit text-lg font-semibold text-foreground hover:text-primary hover:underline [&:hover]:decoration-primary",
8706
+ updateDescription: "text-sm text-muted-foreground leading-6",
8707
+ updateTags: "flex flex-wrap gap-1.5",
8708
+ updateBody: "min-w-0 [&>:first-child]:mt-0 [&>:last-child]:mb-0 [&_:where(p,ul,ol)]:leading-7",
8709
+ changelog: "my-4 flex flex-col",
8710
+ changelogFilters: "mb-2 flex flex-wrap items-center gap-1",
8711
+ changelogFilterButton: "rounded-md p-0.5 outline-none focus-visible:ring-2 focus-visible:ring-ring [&>[data-slot=badge]]:cursor-pointer",
8712
+ changelogClear: "ml-1 text-xs font-medium text-muted-foreground hover:text-foreground hover:underline",
8713
+ changelogEmpty: "my-6 text-sm text-muted-foreground",
8714
+ mermaid: "my-4",
8715
+ mermaidTitle: "mb-2 text-sm font-semibold text-foreground",
8716
+ mermaidViewport: "relative overflow-auto rounded-lg border border-border bg-card p-4 [&_svg]:mx-auto [&_svg]:max-w-full [&_svg]:shrink-0",
8717
+ mermaidSvg: "origin-top-left transition-transform duration-150 [&_svg]:h-auto [&_svg]:max-w-none",
8718
+ mermaidFallback: "bg-transparent p-0 font-mono text-xs text-muted-foreground whitespace-pre-wrap",
8719
+ mermaidError: "mt-2 text-sm text-destructive",
8720
+ mermaidControls: "absolute flex items-center gap-1 rounded-md border border-border bg-background/90 p-1 shadow-sm [&_button]:flex [&_button]:size-6 [&_button]:items-center [&_button]:justify-center [&_button]:rounded [&_button]:text-sm [&_button]:text-muted-foreground [&_button:hover]:bg-muted [&_button:hover]:text-foreground",
8721
+ panel: "flex min-w-0 flex-col gap-4 text-sm [&>:first-child]:mt-0 [&>:last-child]:mb-0",
8722
+ panelInline: "my-4 lg:hidden",
8723
+ tile: "block h-full overflow-hidden rounded-lg border border-border bg-card hover:border-primary",
8724
+ tilePreview: "flex h-36 items-center justify-center gap-2 overflow-hidden border-border border-b bg-muted/40 bg-[radial-gradient(circle_at_1px_1px,var(--border)_1px,transparent_0)] bg-[size:16px_16px] p-4 [&_img]:max-h-full [&_img]:w-auto [&_img]:max-w-full [&_img]:object-contain",
8725
+ tileBody: "flex flex-col gap-1 p-4",
8726
+ tileTitle: "text-sm font-semibold text-foreground",
8727
+ tileDescription: "text-sm text-muted-foreground leading-6",
8728
+ tree: "not-prose my-4 overflow-hidden rounded-lg border border-border bg-card text-sm",
8729
+ treeList: "flex flex-col gap-0.5 p-3",
8730
+ treeGroup: "my-0 ml-[15px] flex list-none flex-col gap-px border-border border-l pl-1",
8731
+ treeItem: "my-0 min-w-0 list-none p-0 [&::marker]:content-none",
8732
+ treeRow: "flex w-full min-w-0 items-center gap-1.5 rounded-md px-2 py-1 text-left text-foreground hover:bg-muted [&:focus-visible]:bg-muted [&:focus-visible]:ring-2 [&:focus-visible]:ring-ring [&:focus-visible]:outline-none",
8733
+ treeChevron: "shrink-0 text-muted-foreground transition-transform [&[data-open]]:rotate-90",
8734
+ treeIcon: "shrink-0 text-muted-foreground",
8735
+ treeName: "min-w-0 flex-1 truncate font-mono text-[0.85rem]",
8736
+ treeHighlight: "bg-primary/10 text-primary [&_svg]:text-primary"
8737
+ };
8738
+
8739
+ //#endregion
8740
+ //#region src/components/docs/Mermaid.tsx
8741
+ function childrenToText(node) {
8742
+ if (typeof node === "string" || typeof node === "number") return String(node);
8743
+ if (Array.isArray(node)) return node.map(childrenToText).join("");
8744
+ if (node && typeof node === "object" && "props" in node) {
8745
+ const props = node.props;
8746
+ return childrenToText(props?.children);
8747
+ }
8748
+ return "";
8749
+ }
8750
+ /** Extracts raw diagram source from MDX children (string or <code> element). */
8751
+ function mermaidSource(chart, children) {
8752
+ return (typeof chart === "string" && chart.trim() ? chart : childrenToText(children)).replace(/^\n+|\n+$/g, "").replace(/\\n$/, "");
8753
+ }
8754
+ function isDarkMode() {
8755
+ if (typeof document === "undefined") return false;
8756
+ return document.documentElement.classList.contains("dark");
8757
+ }
8758
+ const PLACEMENT_CLASS = {
8759
+ "top-left": "top-2 left-2",
8760
+ "top-right": "top-2 right-2",
8761
+ "bottom-left": "bottom-2 left-2",
8762
+ "bottom-right": "bottom-2 right-2"
8763
+ };
8764
+ /**
8765
+ * Renders a Mermaid diagram. Server/prerender output is the raw definition in
8766
+ * a <pre> so search indexing and no-JS still see the content; the client
8767
+ * replaces it with SVG via a lazy `mermaid` import (kept out of the SSR bundle).
8768
+ */
8769
+ function Mermaid({ chart, title, actions, placement = "bottom-right", children }) {
8770
+ const source = mermaidSource(chart, children);
8771
+ const containerRef = useRef(null);
8772
+ const svgHostRef = useRef(null);
8773
+ const diagramId = useId().replace(/[^a-zA-Z0-9]/g, "");
8774
+ const [svg, setSvg] = useState(null);
8775
+ const [error, setError] = useState(false);
8776
+ const [zoom, setZoom] = useState(1);
8777
+ const [dark, setDark] = useState(false);
8778
+ useEffect(() => {
8779
+ setDark(isDarkMode());
8780
+ const observer = new MutationObserver(() => setDark(isDarkMode()));
8781
+ observer.observe(document.documentElement, {
8782
+ attributes: true,
8783
+ attributeFilter: ["class"]
8784
+ });
8785
+ return () => observer.disconnect();
8786
+ }, []);
8787
+ useEffect(() => {
8788
+ if (!source.trim() || typeof window === "undefined") return;
8789
+ let cancelled = false;
8790
+ setError(false);
8791
+ setSvg(null);
8792
+ (async () => {
8793
+ try {
8794
+ const { default: mermaid } = await import("./mermaid.core.js");
8795
+ if (cancelled) return;
8796
+ mermaid.initialize({
8797
+ startOnLoad: false,
8798
+ theme: dark ? "dark" : "neutral",
8799
+ securityLevel: "strict"
8800
+ });
8801
+ const { svg: rendered } = await mermaid.render(`shiso-mermaid-${diagramId}`, source);
8802
+ if (!cancelled) setSvg(rendered);
8803
+ } catch {
8804
+ if (!cancelled) setError(true);
8805
+ }
8806
+ })();
8807
+ return () => {
8808
+ cancelled = true;
8809
+ };
8810
+ }, [
8811
+ source,
8812
+ diagramId,
8813
+ dark
8814
+ ]);
8815
+ const showControls = actions ?? true;
8816
+ return /* @__PURE__ */ jsxs("figure", {
8817
+ className: styles.mermaid,
8818
+ "data-dark": dark ? "" : void 0,
8819
+ children: [title ? /* @__PURE__ */ jsx("figcaption", {
8820
+ className: styles.mermaidTitle,
8821
+ children: title
8822
+ }) : null, /* @__PURE__ */ jsxs("div", {
8823
+ ref: containerRef,
8824
+ className: styles.mermaidViewport,
8825
+ children: [
8826
+ svg && !error ? /* @__PURE__ */ jsx("div", {
8827
+ ref: svgHostRef,
8828
+ className: styles.mermaidSvg,
8829
+ style: { transform: `scale(${zoom})` },
8830
+ dangerouslySetInnerHTML: { __html: svg },
8831
+ role: "img",
8832
+ "aria-label": title ? String(title) : "Diagram"
8833
+ }) : /* @__PURE__ */ jsx("pre", {
8834
+ className: styles.mermaidFallback,
8835
+ title: "Diagram source",
8836
+ children: source
8837
+ }),
8838
+ error ? /* @__PURE__ */ jsx("p", {
8839
+ className: styles.mermaidError,
8840
+ children: "Could not render this diagram."
8841
+ }) : null,
8842
+ showControls && svg && !error ? /* @__PURE__ */ jsxs("div", {
8843
+ className: `${styles.mermaidControls} ${PLACEMENT_CLASS[placement]}`,
8844
+ children: [
8845
+ /* @__PURE__ */ jsx("button", {
8846
+ type: "button",
8847
+ "aria-label": "Zoom out",
8848
+ onClick: () => setZoom((z) => Math.max(.5, +(z - .25).toFixed(2))),
8849
+ children: "−"
8850
+ }),
8851
+ /* @__PURE__ */ jsx("button", {
8852
+ type: "button",
8853
+ "aria-label": "Reset view",
8854
+ onClick: () => setZoom(1),
8855
+ children: "⟳"
8856
+ }),
8857
+ /* @__PURE__ */ jsx("button", {
8858
+ type: "button",
8859
+ "aria-label": "Zoom in",
8860
+ onClick: () => setZoom((z) => Math.min(2.5, +(z + .25).toFixed(2))),
8861
+ children: "+"
8862
+ })
8863
+ ]
8864
+ }) : null
8865
+ ]
8866
+ })]
8867
+ });
8868
+ }
8869
+
8420
8870
  //#endregion
8421
8871
  //#region ../../node_modules/.pnpm/@base-ui+utils@0.3.2_@types_46200efdf1f5c806fc19b01530afd9e7/node_modules/@base-ui/utils/useControlled.mjs
8422
8872
  function useControlled({ controlled, default: defaultProp, name, state = "value" }) {
@@ -9823,71 +10273,6 @@ function AccordionContent({ className, children, ...props }) {
9823
10273
  });
9824
10274
  }
9825
10275
 
9826
- //#endregion
9827
- //#region src/components/docs/styles.ts
9828
- /** Shared Tailwind utility groups for the built-in MDX components. */
9829
- const styles = {
9830
- accordion: "my-3 [&_h3:has(>[data-slot=accordion-trigger])]:m-0",
9831
- accordionGroup: "my-4 [&_h3:has(>[data-slot=accordion-trigger])]:m-0",
9832
- accordionItem: "",
9833
- accordionTrigger: "text-foreground",
9834
- accordionContent: "text-muted-foreground [&_p]:mt-0 [&_p:last-child]:mb-0",
9835
- expandableTrigger: "items-center py-3 text-sm font-normal text-foreground hover:no-underline",
9836
- expandableContent: "pl-6",
9837
- callout: "my-4 flex items-start gap-3 rounded-lg border px-3 py-2.5 text-sm leading-6",
9838
- calloutIcon: "flex h-6 w-5 shrink-0 items-center justify-center [&_svg]:block [&_svg]:size-4",
9839
- calloutBody: "flex min-w-0 flex-1 flex-col gap-[0.35rem] [&>:first-child]:mt-0 [&>:last-child]:mb-0 [&_:where(p,ul,ol)]:my-[0.35rem] [&>:where(p,ul,ol):first-child]:mt-0 [&>:where(p,ul,ol):last-child]:mb-0",
9840
- calloutDescription: "text-sm text-inherit leading-6 [&>:first-child]:mt-0 [&>:last-child]:mb-0",
9841
- calloutTitle: "font-semibold leading-6",
9842
- note: "border-border bg-muted/50 text-foreground",
9843
- info: "border-blue-300 bg-blue-50 text-blue-900 dark:border-blue-400/40 dark:bg-blue-400/10 dark:text-blue-300",
9844
- warning: "border-amber-300 bg-amber-50 text-amber-900 dark:border-amber-400/40 dark:bg-amber-400/10 dark:text-amber-300",
9845
- tip: "border-green-300 bg-green-50 text-green-900 dark:border-green-400/40 dark:bg-green-400/10 dark:text-green-300",
9846
- check: "border-emerald-300 bg-emerald-50 text-emerald-900 dark:border-emerald-400/40 dark:bg-emerald-400/10 dark:text-emerald-300",
9847
- danger: "border-destructive/40 bg-destructive/10 text-destructive",
9848
- card: "block h-full gap-0 rounded-lg border border-border p-4 text-sm ring-0 hover:border-primary",
9849
- cardPlain: "bg-card",
9850
- cardHorizontal: "[&_[data-slot=card-inner]]:items-center [&_[data-slot=card-main]]:flex-row [&_[data-slot=card-main]]:items-center [&_[data-slot=card-main]]:gap-3 [&_[data-slot=card-body]]:m-0 [&_[data-slot=card-header]]:flex-row [&_[data-slot=card-header]]:items-center [&_[data-slot=card-header]]:gap-2",
9851
- cardTyped: "[&_[data-slot=card-title]]:text-inherit [&_[data-slot=card-body]]:text-inherit [&_[data-slot=card-cta]]:text-inherit [&_[data-slot=card-arrow]]:text-inherit",
9852
- cardImageLayout: "p-0 [&_[data-slot=card-inner]]:p-6",
9853
- cardImage: "block aspect-video w-full border-border border-b object-cover",
9854
- cardInner: "flex items-start justify-between gap-3",
9855
- cardMain: "flex min-w-0 flex-col gap-2",
9856
- cardHeader: "flex flex-col items-start gap-3",
9857
- cardIcon: "inline-flex shrink-0 items-center justify-center [&_img]:size-6 [&_svg]:size-6",
9858
- cardTitle: "text-sm font-semibold text-foreground",
9859
- cardBody: "text-muted-foreground [&>:first-child]:mt-0 [&>:last-child]:mb-0",
9860
- cardCta: "flex shrink-0 items-center gap-[0.35rem] text-[0.9rem] font-medium text-muted-foreground",
9861
- cardArrow: "shrink-0 text-muted-foreground",
9862
- grid: "my-4 grid grid-cols-1 gap-4",
9863
- gridCols1: "md:grid-cols-1",
9864
- gridCols2: "md:grid-cols-2",
9865
- gridCols3: "md:grid-cols-3",
9866
- gridCols4: "md:grid-cols-4",
9867
- column: "min-w-0 [&>:first-child]:mt-0 [&>:last-child]:mb-0",
9868
- icon: "inline-block align-[-0.145em]",
9869
- tabs: "my-4 gap-0",
9870
- frameWrapper: "my-4",
9871
- frameHint: "mb-4 flex items-start gap-2 text-sm font-medium leading-5 text-foreground",
9872
- frameHintIcon: "flex h-5 shrink-0 items-center text-muted-foreground [&_svg]:size-4 [&_svg]:fill-current",
9873
- frame: "relative overflow-hidden rounded-2xl border border-border bg-muted/25 p-2",
9874
- frameContent: "relative flex justify-center overflow-hidden rounded-xl [&_p]:m-0 [&_img]:m-0 [&_img]:w-full [&_video]:w-full [&_[data-slot=zoomable-image]]:m-0 [&_[data-slot=zoomable-image]]:w-full",
9875
- frameCaption: "relative mt-3 px-4 pb-1 text-center text-sm leading-5 text-muted-foreground [&_p]:m-0 [&_a]:font-semibold",
9876
- field: "my-3",
9877
- paramField: "my-3",
9878
- fieldHeader: "flex flex-wrap items-center gap-2",
9879
- fieldBody: "mt-3",
9880
- fieldType: "text-[0.9rem] text-muted-foreground",
9881
- fieldName: "font-bold text-foreground",
9882
- code: "rounded-sm bg-[color-mix(in_srgb,currentColor_4%,transparent)] px-[0.35rem] py-[0.1rem] text-sm text-foreground font-mono",
9883
- steps: "relative my-4 flex flex-col gap-5 before:absolute before:top-4 before:bottom-4 before:left-4 before:w-px before:-translate-x-1/2 before:bg-border before:content-['']",
9884
- step: "relative flex items-start gap-4",
9885
- stepNumber: "relative z-[1] flex size-8 shrink-0 items-center justify-center rounded-full border border-border bg-card text-[0.9rem] font-semibold text-foreground",
9886
- stepContent: "flex min-w-0 grow flex-col gap-2",
9887
- stepTitle: "text-[1.1rem] font-semibold text-foreground",
9888
- tooltipTrigger: "peer cursor-help border-0 border-muted-foreground border-b border-dotted bg-transparent p-0 text-inherit [font:inherit]"
9889
- };
9890
-
9891
10276
  //#endregion
9892
10277
  //#region src/lib/icons.ts
9893
10278
  /** `circle-check`, `circle_check`, `CircleCheck` all resolve to the same icon. */
@@ -10165,7 +10550,7 @@ function Badge({ color, size = "md", shape = "rounded", icon, stroke = false, di
10165
10550
  */
10166
10551
  function Button({ href, variant = "default", size = "default", icon, className, children }) {
10167
10552
  const resolvedIcon = resolveIcon(icon, 16);
10168
- const content = /* @__PURE__ */ jsxs(Fragment, { children: [resolvedIcon, children] });
10553
+ const content = /* @__PURE__ */ jsxs(Fragment$1, { children: [resolvedIcon, children] });
10169
10554
  const baseClassName = cn(resolvedIcon ? "gap-2" : "", "[&_p]:m-0", className);
10170
10555
  if (!href) return /* @__PURE__ */ jsx(Button$1, {
10171
10556
  variant,
@@ -10415,6 +10800,161 @@ function CardGroup({ children, cols = 2 }) {
10415
10800
  });
10416
10801
  }
10417
10802
 
10803
+ //#endregion
10804
+ //#region src/components/docs/Update.tsx
10805
+ function normalizeTags(tags) {
10806
+ if (!Array.isArray(tags)) return [];
10807
+ const seen = /* @__PURE__ */ new Set();
10808
+ for (const tag of tags) {
10809
+ if (typeof tag !== "string") continue;
10810
+ const trimmed = tag.trim();
10811
+ if (trimmed && !seen.has(trimmed)) seen.add(trimmed);
10812
+ }
10813
+ return [...seen];
10814
+ }
10815
+ function Update({ label, description, tags, rss: _rss, children }) {
10816
+ const id = slugify(label, "update");
10817
+ const normalizedTags = normalizeTags(tags);
10818
+ return /* @__PURE__ */ jsxs("section", {
10819
+ id,
10820
+ "aria-label": label,
10821
+ className: styles.update,
10822
+ "data-tags": normalizedTags.join(","),
10823
+ children: [/* @__PURE__ */ jsxs("div", {
10824
+ className: styles.updateMeta,
10825
+ children: [
10826
+ /* @__PURE__ */ jsx("a", {
10827
+ href: `#${id}`,
10828
+ className: styles.updateLabel,
10829
+ children: label
10830
+ }),
10831
+ description ? /* @__PURE__ */ jsx("div", {
10832
+ className: styles.updateDescription,
10833
+ children: description
10834
+ }) : null,
10835
+ normalizedTags.length > 0 ? /* @__PURE__ */ jsx("div", {
10836
+ className: styles.updateTags,
10837
+ children: normalizedTags.map((tag) => /* @__PURE__ */ jsx(Badge, {
10838
+ size: "sm",
10839
+ children: tag
10840
+ }, tag))
10841
+ }) : null
10842
+ ]
10843
+ }), /* @__PURE__ */ jsx("div", {
10844
+ className: styles.updateBody,
10845
+ children
10846
+ })]
10847
+ });
10848
+ }
10849
+
10850
+ //#endregion
10851
+ //#region src/components/docs/Changelog.tsx
10852
+ /** Flattens fragments so <Update> entries are found however MDX nests them. */
10853
+ function flatElements(children) {
10854
+ const flat = [];
10855
+ Children.forEach(children, (child) => {
10856
+ if (!isValidElement(child)) return;
10857
+ if (child.type === Fragment) flat.push(...flatElements(child.props.children));
10858
+ else flat.push(child);
10859
+ });
10860
+ return flat;
10861
+ }
10862
+ /** Reads `tags` off <Update> children without rendering them. */
10863
+ function updateInfo(children) {
10864
+ const info = /* @__PURE__ */ new Map();
10865
+ flatElements(children).forEach((child, index) => {
10866
+ if (child.type !== Update) return;
10867
+ const key = String(child.key ?? `update-${index}`);
10868
+ const raw = child.props.tags;
10869
+ const tags = Array.isArray(raw) ? [...new Set(raw.filter((tag) => typeof tag === "string" && tag.trim()))].map((tag) => tag.trim()) : [];
10870
+ info.set(key, {
10871
+ key,
10872
+ tags
10873
+ });
10874
+ });
10875
+ return info;
10876
+ }
10877
+ /**
10878
+ * Groups <Update> entries with Mintlify-style tag filtering.
10879
+ * Selected tags sync to `?tags=a,b` so filtered views are shareable.
10880
+ * Pages without any tagged updates render as a plain list.
10881
+ */
10882
+ function Changelog({ children }) {
10883
+ const [searchParams, setSearchParams] = useSearchParams();
10884
+ const allTags = useMemo(() => {
10885
+ const seen = /* @__PURE__ */ new Map();
10886
+ for (const { tags } of updateInfo(children).values()) for (const tag of tags) {
10887
+ const key = tag.toLowerCase();
10888
+ if (!seen.has(key)) seen.set(key, tag);
10889
+ }
10890
+ return [...seen.values()];
10891
+ }, [children]);
10892
+ const selected = useMemo(() => {
10893
+ const param = searchParams.get("tags");
10894
+ if (!param) return [];
10895
+ const wanted = new Set(param.split(",").map((tag) => tag.trim().toLowerCase()).filter(Boolean));
10896
+ return allTags.filter((tag) => wanted.has(tag.toLowerCase()));
10897
+ }, [searchParams, allTags]);
10898
+ const infoByKey = useMemo(() => updateInfo(children), [children]);
10899
+ if (allTags.length === 0) return /* @__PURE__ */ jsx("div", {
10900
+ className: styles.changelog,
10901
+ children
10902
+ });
10903
+ const toggle = (tag) => {
10904
+ const lower = tag.toLowerCase();
10905
+ const next = selected.some((item) => item.toLowerCase() === lower) ? selected.filter((item) => item.toLowerCase() !== lower) : [...selected, tag];
10906
+ setSearchParams(next.length ? { tags: next.join(",") } : {}, { preventScrollReset: true });
10907
+ };
10908
+ const clear = () => {
10909
+ setSearchParams({}, { preventScrollReset: true });
10910
+ };
10911
+ const selectedSet = new Set(selected.map((tag) => tag.toLowerCase()));
10912
+ const filtered = flatElements(children).map((child, index) => {
10913
+ if (child.type !== Update) return child;
10914
+ const key = String(child.key ?? `update-${index}`);
10915
+ const tags = infoByKey.get(key)?.tags ?? [];
10916
+ if (selectedSet.size === 0) return child;
10917
+ const lower = tags.map((tag) => tag.toLowerCase());
10918
+ return [...selectedSet].every((tag) => lower.includes(tag)) ? child : null;
10919
+ });
10920
+ const visibleUpdates = filtered.filter((child) => child && child.type === Update).length;
10921
+ return /* @__PURE__ */ jsxs("div", {
10922
+ className: styles.changelog,
10923
+ children: [
10924
+ /* @__PURE__ */ jsxs("div", {
10925
+ className: styles.changelogFilters,
10926
+ role: "group",
10927
+ "aria-label": "Filter updates by tag",
10928
+ children: [allTags.map((tag) => {
10929
+ const active = selectedSet.has(tag.toLowerCase());
10930
+ return /* @__PURE__ */ jsx("button", {
10931
+ type: "button",
10932
+ onClick: () => toggle(tag),
10933
+ "aria-pressed": active,
10934
+ className: styles.changelogFilterButton,
10935
+ "data-active": active ? "" : void 0,
10936
+ children: /* @__PURE__ */ jsx(Badge, {
10937
+ size: "sm",
10938
+ color: active ? "primary" : void 0,
10939
+ children: tag
10940
+ })
10941
+ }, tag);
10942
+ }), selected.length > 0 ? /* @__PURE__ */ jsx("button", {
10943
+ type: "button",
10944
+ onClick: clear,
10945
+ className: styles.changelogClear,
10946
+ children: "Clear"
10947
+ }) : null]
10948
+ }),
10949
+ visibleUpdates === 0 ? /* @__PURE__ */ jsx("p", {
10950
+ className: styles.changelogEmpty,
10951
+ children: "No updates match the selected tags."
10952
+ }) : null,
10953
+ filtered
10954
+ ]
10955
+ });
10956
+ }
10957
+
10418
10958
  //#endregion
10419
10959
  //#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/tabs/root/TabsRootContext.mjs
10420
10960
  /**
@@ -11680,6 +12220,51 @@ function Link(props) {
11680
12220
  return /* @__PURE__ */ jsx(Link$1, { ...props });
11681
12221
  }
11682
12222
 
12223
+ //#endregion
12224
+ //#region src/components/docs/panel-context.tsx
12225
+ const PanelContext = createContext({
12226
+ content: null,
12227
+ setContent: () => {}
12228
+ });
12229
+ function PanelProvider({ children }) {
12230
+ const [content, setContent] = useState(null);
12231
+ return /* @__PURE__ */ jsx(PanelContext.Provider, {
12232
+ value: {
12233
+ content,
12234
+ setContent
12235
+ },
12236
+ children
12237
+ });
12238
+ }
12239
+ function usePanelContent() {
12240
+ return useContext(PanelContext).content;
12241
+ }
12242
+ function useSetPanelContent() {
12243
+ return useContext(PanelContext).setContent;
12244
+ }
12245
+
12246
+ //#endregion
12247
+ //#region src/components/docs/Panel.tsx
12248
+ /**
12249
+ * Pins supplementary content to the right rail (replacing the table of
12250
+ * contents on desktop). On small screens the content renders inline where it
12251
+ * is written. Only one Panel per page is supported; the last one wins.
12252
+ */
12253
+ function Panel({ children }) {
12254
+ const setContent = useSetPanelContent();
12255
+ useEffect(() => {
12256
+ setContent(children ? /* @__PURE__ */ jsx("div", {
12257
+ className: styles.panel,
12258
+ children
12259
+ }) : null);
12260
+ return () => setContent(null);
12261
+ }, [children, setContent]);
12262
+ return /* @__PURE__ */ jsx("div", {
12263
+ className: styles.panelInline,
12264
+ children
12265
+ });
12266
+ }
12267
+
11683
12268
  //#endregion
11684
12269
  //#region src/components/docs/ParamField.tsx
11685
12270
  function ParamField({ name, query, path, header, body, type, required, children }) {
@@ -11687,6 +12272,7 @@ function ParamField({ name, query, path, header, body, type, required, children
11687
12272
  const location = query ? "query" : path ? "path" : header ? "header" : body ? "body" : void 0;
11688
12273
  return /* @__PURE__ */ jsxs("div", {
11689
12274
  className: styles.paramField,
12275
+ "data-slot": "field-group-item",
11690
12276
  children: [/* @__PURE__ */ jsxs("div", {
11691
12277
  className: styles.fieldHeader,
11692
12278
  children: [
@@ -11694,18 +12280,24 @@ function ParamField({ name, query, path, header, body, type, required, children
11694
12280
  className: styles.fieldName,
11695
12281
  children: label
11696
12282
  }),
11697
- location ? /* @__PURE__ */ jsx(Badge, { children: location }) : null,
12283
+ location ? /* @__PURE__ */ jsx(Badge, {
12284
+ size: "sm",
12285
+ children: location
12286
+ }) : null,
11698
12287
  type ? /* @__PURE__ */ jsx("span", {
11699
12288
  className: styles.fieldType,
12289
+ "data-slot": "field-group-type",
11700
12290
  children: decodeHtmlEntities(type)
11701
12291
  }) : null,
11702
12292
  required ? /* @__PURE__ */ jsx(Badge, {
12293
+ size: "sm",
11703
12294
  tone: "primary",
11704
12295
  children: "required"
11705
12296
  }) : null
11706
12297
  ]
11707
12298
  }), children ? /* @__PURE__ */ jsx("div", {
11708
12299
  className: styles.fieldBody,
12300
+ "data-slot": "field-group-body",
11709
12301
  children
11710
12302
  }) : null]
11711
12303
  });
@@ -11749,12 +12341,12 @@ function PropertiesTable({ children }) {
11749
12341
  children: [
11750
12342
  name,
11751
12343
  required ? /* @__PURE__ */ jsx(Badge, {
11752
- size: "xs",
12344
+ size: "sm",
11753
12345
  tone: "primary",
11754
12346
  children: "required"
11755
12347
  }) : null,
11756
12348
  deprecated ? /* @__PURE__ */ jsx(Badge, {
11757
- size: "xs",
12349
+ size: "sm",
11758
12350
  children: "deprecated"
11759
12351
  }) : null
11760
12352
  ]
@@ -11779,6 +12371,7 @@ function ResponseField({ name, type, required, deprecated, children }) {
11779
12371
  const normalizedType = typeof type === "string" ? decodeHtmlEntities(type) : type === void 0 || type === null ? void 0 : String(type);
11780
12372
  return /* @__PURE__ */ jsxs("div", {
11781
12373
  className: styles.field,
12374
+ "data-slot": "field-group-item",
11782
12375
  children: [/* @__PURE__ */ jsxs("div", {
11783
12376
  className: styles.fieldHeader,
11784
12377
  children: [
@@ -11788,16 +12381,22 @@ function ResponseField({ name, type, required, deprecated, children }) {
11788
12381
  }),
11789
12382
  normalizedType ? /* @__PURE__ */ jsx("span", {
11790
12383
  className: styles.fieldType,
12384
+ "data-slot": "field-group-type",
11791
12385
  children: normalizedType
11792
12386
  }) : null,
11793
12387
  required ? /* @__PURE__ */ jsx(Badge, {
12388
+ size: "sm",
11794
12389
  tone: "primary",
11795
12390
  children: "required"
11796
12391
  }) : null,
11797
- deprecated ? /* @__PURE__ */ jsx(Badge, { children: "deprecated" }) : null
12392
+ deprecated ? /* @__PURE__ */ jsx(Badge, {
12393
+ size: "sm",
12394
+ children: "deprecated"
12395
+ }) : null
11798
12396
  ]
11799
12397
  }), children ? /* @__PURE__ */ jsx("div", {
11800
12398
  className: styles.fieldBody,
12399
+ "data-slot": "field-group-body",
11801
12400
  children
11802
12401
  }) : null]
11803
12402
  });
@@ -11806,7 +12405,7 @@ function ResponseField({ name, type, required, deprecated, children }) {
11806
12405
  //#endregion
11807
12406
  //#region src/components/docs/Steps.tsx
11808
12407
  function Step({ children }) {
11809
- return /* @__PURE__ */ jsx(Fragment, { children });
12408
+ return /* @__PURE__ */ jsx(Fragment$1, { children });
11810
12409
  }
11811
12410
  function Steps({ children }) {
11812
12411
  const steps = useMemo(() => {
@@ -11839,7 +12438,7 @@ function Steps({ children }) {
11839
12438
  //#endregion
11840
12439
  //#region src/components/docs/Tabs.tsx
11841
12440
  function Tab({ children }) {
11842
- return /* @__PURE__ */ jsx(Fragment, { children });
12441
+ return /* @__PURE__ */ jsx(Fragment$1, { children });
11843
12442
  }
11844
12443
  function Tabs({ children, group }) {
11845
12444
  const tabs = useMemo(() => {
@@ -11910,6 +12509,49 @@ function Tabs({ children, group }) {
11910
12509
  });
11911
12510
  }
11912
12511
 
12512
+ //#endregion
12513
+ //#region src/components/docs/Tiles.tsx
12514
+ function Tile({ href, title, description, children, target }) {
12515
+ const external = /^https?:\/\//i.test(href);
12516
+ const resolvedTarget = target ?? (external ? "_blank" : void 0);
12517
+ const content = /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
12518
+ className: styles.tilePreview,
12519
+ "data-slot": "tile-preview",
12520
+ children
12521
+ }), title || description ? /* @__PURE__ */ jsxs("div", {
12522
+ className: styles.tileBody,
12523
+ "data-slot": "tile-body",
12524
+ children: [title ? /* @__PURE__ */ jsx("div", {
12525
+ className: styles.tileTitle,
12526
+ children: title
12527
+ }) : null, description ? /* @__PURE__ */ jsx("div", {
12528
+ className: styles.tileDescription,
12529
+ children: description
12530
+ }) : null]
12531
+ }) : null] });
12532
+ const className = `${styles.tile} no-underline hover:no-underline active:no-underline`;
12533
+ if (external) return /* @__PURE__ */ jsx("a", {
12534
+ href,
12535
+ className,
12536
+ target: resolvedTarget,
12537
+ rel: "noreferrer",
12538
+ children: content
12539
+ });
12540
+ return /* @__PURE__ */ jsx(Link$1, {
12541
+ to: href,
12542
+ className,
12543
+ target: resolvedTarget,
12544
+ children: content
12545
+ });
12546
+ }
12547
+ /** Grid wrapper for <Tile> when <Columns> is not used directly. */
12548
+ function Tiles({ children, cols = 2 }) {
12549
+ return /* @__PURE__ */ jsx("div", {
12550
+ className: `${styles.grid} ${styles[gridColsClass(cols)]}`,
12551
+ children
12552
+ });
12553
+ }
12554
+
11913
12555
  //#endregion
11914
12556
  //#region ../../node_modules/.pnpm/@base-ui+utils@0.3.2_@types_46200efdf1f5c806fc19b01530afd9e7/node_modules/@base-ui/utils/fastHooks.mjs
11915
12557
  const hooks = [];
@@ -12453,7 +13095,7 @@ const usePortalContext = () => React$1.useContext(PortalContext);
12453
13095
  const attr = createAttribute("portal");
12454
13096
  function useFloatingPortalNode(props = {}) {
12455
13097
  const { ref, container: containerProp, componentProps = EMPTY_OBJECT, elementProps } = props;
12456
- const uniqueId = useId();
13098
+ const uniqueId = useId$1();
12457
13099
  const parentPortalNode = usePortalContext()?.portalNode;
12458
13100
  const [containerElement, setContainerElement] = React$1.useState(null);
12459
13101
  const [portalNode, setPortalNode] = React$1.useState(null);
@@ -12644,7 +13286,7 @@ const useFloatingTree = (externalTree) => {
12644
13286
  * @see https://floating-ui.com/docs/FloatingTree
12645
13287
  */
12646
13288
  function useFloatingNodeId(externalTree) {
12647
- const id = useId();
13289
+ const id = useId$1();
12648
13290
  const tree = useFloatingTree(externalTree);
12649
13291
  const parentId = useFloatingParentNodeId();
12650
13292
  useIsoLayoutEffect(() => {
@@ -15468,7 +16110,7 @@ function createDefaultInitialFocus(popupRef) {
15468
16110
  * floating element instead of the default positioner.
15469
16111
  */
15470
16112
  function usePopupRootStore(createStore, treatPopupAsFloatingElement = false) {
15471
- const floatingId = useId();
16113
+ const floatingId = useId$1();
15472
16114
  const nested = useFloatingParentNodeId() != null;
15473
16115
  const store = useRefWithInit(() => createStore(floatingId, nested)).current;
15474
16116
  useSyncedFloatingRootContext({
@@ -18006,6 +18648,244 @@ function Tooltip({ tip, children }) {
18006
18648
  }), /* @__PURE__ */ jsx(TooltipContent, { children: tip })] });
18007
18649
  }
18008
18650
 
18651
+ //#endregion
18652
+ //#region src/components/docs/Tree.tsx
18653
+ function elementText(node) {
18654
+ if (typeof node === "string" || typeof node === "number") return String(node);
18655
+ if (Array.isArray(node)) return node.map(elementText).join("");
18656
+ if (isValidElement(node)) return elementText(node.props.children);
18657
+ return "";
18658
+ }
18659
+ function isListElement(node) {
18660
+ return isValidElement(node) && (node.type === "ul" || node.type === "ol");
18661
+ }
18662
+ /** Stable key for MDX-generated list wrappers (static content, never reordered). */
18663
+ function listFingerprint(node) {
18664
+ const text = elementText(node).replace(/\s+/g, " ").trim().slice(0, 64);
18665
+ let hash = 0;
18666
+ for (let i = 0; i < text.length; i += 1) hash = hash * 31 + text.charCodeAt(i) | 0;
18667
+ return `mdx-list-${text.length}-${hash}`;
18668
+ }
18669
+ /** Split an MDX <li> into its label (inline content) and an optional nested list. */
18670
+ function splitListItem(li) {
18671
+ let nested = null;
18672
+ const labelParts = [];
18673
+ Children.forEach(li.props.children, (child) => {
18674
+ if (isListElement(child)) nested = child;
18675
+ else labelParts.push(child);
18676
+ });
18677
+ return {
18678
+ label: elementText(labelParts).trim(),
18679
+ nested
18680
+ };
18681
+ }
18682
+ function ListItemsAsNodes({ items }) {
18683
+ const nodes = [];
18684
+ let index = 0;
18685
+ Children.forEach(items, (li) => {
18686
+ if (!isValidElement(li) || li.type !== "li") return;
18687
+ const { label, nested } = splitListItem(li);
18688
+ if (!label && !nested) return;
18689
+ const name = label || "untitled";
18690
+ const isFolder = name.endsWith("/") || Boolean(nested);
18691
+ index += 1;
18692
+ if (isFolder) nodes.push(/* @__PURE__ */ jsx(TreeFolder, {
18693
+ name,
18694
+ defaultOpen: Boolean(nested),
18695
+ children: nested ? /* @__PURE__ */ jsx(ListItemsAsNodes, { items: nested.props.children }) : null
18696
+ }, `${name}-${index}`));
18697
+ else nodes.push(/* @__PURE__ */ jsx(TreeFile, { name }, `${name}-${index}`));
18698
+ });
18699
+ return /* @__PURE__ */ jsx(Fragment$1, { children: nodes });
18700
+ }
18701
+ function containsList(children) {
18702
+ let found = false;
18703
+ Children.forEach(children, (child) => {
18704
+ if (isListElement(child)) found = true;
18705
+ });
18706
+ return found;
18707
+ }
18708
+ function TreeFolder({ name, defaultOpen = false, openable = true, highlight = false, children }) {
18709
+ const [open, setOpen] = useState(defaultOpen);
18710
+ const expanded = openable ? open : true;
18711
+ const Icon = expanded ? FolderOpen : Folder;
18712
+ return /* @__PURE__ */ jsxs("li", {
18713
+ role: "treeitem",
18714
+ "aria-expanded": openable ? expanded : void 0,
18715
+ "data-highlight": highlight ? "" : void 0,
18716
+ className: styles.treeItem,
18717
+ children: [openable ? /* @__PURE__ */ jsxs("button", {
18718
+ type: "button",
18719
+ "data-tree-focus": true,
18720
+ onClick: () => setOpen((value) => !value),
18721
+ className: `${styles.treeRow} ${highlight ? styles.treeHighlight : ""}`,
18722
+ children: [
18723
+ /* @__PURE__ */ jsx(ChevronRight, {
18724
+ size: 14,
18725
+ className: styles.treeChevron,
18726
+ "data-open": expanded ? "" : void 0,
18727
+ "aria-hidden": true
18728
+ }),
18729
+ /* @__PURE__ */ jsx(Icon, {
18730
+ size: 15,
18731
+ className: styles.treeIcon,
18732
+ "aria-hidden": true
18733
+ }),
18734
+ /* @__PURE__ */ jsx("span", {
18735
+ className: styles.treeName,
18736
+ children: name
18737
+ })
18738
+ ]
18739
+ }) : /* @__PURE__ */ jsxs("span", {
18740
+ "data-tree-focus": true,
18741
+ tabIndex: -1,
18742
+ className: `${styles.treeRow} ${highlight ? styles.treeHighlight : ""}`,
18743
+ children: [/* @__PURE__ */ jsx(Icon, {
18744
+ size: 15,
18745
+ className: styles.treeIcon,
18746
+ "aria-hidden": true
18747
+ }), /* @__PURE__ */ jsx("span", {
18748
+ className: styles.treeName,
18749
+ children: name
18750
+ })]
18751
+ }), children ? /* @__PURE__ */ jsx("ul", {
18752
+ role: "group",
18753
+ hidden: openable && !expanded ? true : void 0,
18754
+ className: styles.treeGroup,
18755
+ children
18756
+ }) : null]
18757
+ });
18758
+ }
18759
+ function TreeFile({ name, highlight = false }) {
18760
+ return /* @__PURE__ */ jsx("li", {
18761
+ role: "treeitem",
18762
+ "data-highlight": highlight ? "" : void 0,
18763
+ className: styles.treeItem,
18764
+ children: /* @__PURE__ */ jsxs("span", {
18765
+ "data-tree-focus": true,
18766
+ tabIndex: -1,
18767
+ className: `${styles.treeRow} ${highlight ? styles.treeHighlight : ""}`,
18768
+ children: [/* @__PURE__ */ jsx(File, {
18769
+ size: 15,
18770
+ className: styles.treeIcon,
18771
+ "aria-hidden": true
18772
+ }), /* @__PURE__ */ jsx("span", {
18773
+ className: styles.treeName,
18774
+ children: name
18775
+ })]
18776
+ })
18777
+ });
18778
+ }
18779
+ function visibleFocusables(root) {
18780
+ return [...root.querySelectorAll("[data-tree-focus]")].filter((element) => !element.closest("[hidden]"));
18781
+ }
18782
+ function TreeRoot({ children, style, className }) {
18783
+ const rootRef = useRef(null);
18784
+ const searchRef = useRef({
18785
+ text: "",
18786
+ timer: 0
18787
+ });
18788
+ const onKeyDown = (event) => {
18789
+ const root = rootRef.current;
18790
+ const target = event.target;
18791
+ if (!root || !target.closest("[data-tree-focus]")) return;
18792
+ const items = visibleFocusables(root);
18793
+ const index = items.indexOf(target);
18794
+ const focusAt = (next) => {
18795
+ event.preventDefault();
18796
+ items[(next + items.length) % items.length]?.focus();
18797
+ };
18798
+ switch (event.key) {
18799
+ case "ArrowDown":
18800
+ focusAt(index + 1);
18801
+ break;
18802
+ case "ArrowUp":
18803
+ focusAt(index - 1);
18804
+ break;
18805
+ case "Home":
18806
+ focusAt(0);
18807
+ break;
18808
+ case "End":
18809
+ focusAt(items.length - 1);
18810
+ break;
18811
+ case "ArrowRight": {
18812
+ const row = target.closest("[role=\"treeitem\"]");
18813
+ const toggle = row?.querySelector(":scope > [data-tree-focus]");
18814
+ if (toggle && toggle.tagName === "BUTTON" && toggle.getAttribute("aria-expanded") === "false") {
18815
+ event.preventDefault();
18816
+ toggle.click();
18817
+ } else {
18818
+ const firstChild = row?.querySelector(":scope > ul [data-tree-focus]");
18819
+ if (firstChild) {
18820
+ event.preventDefault();
18821
+ firstChild.focus();
18822
+ }
18823
+ }
18824
+ break;
18825
+ }
18826
+ case "ArrowLeft": {
18827
+ const row = target.closest("[role=\"treeitem\"]");
18828
+ const toggle = row?.querySelector(":scope > [data-tree-focus]");
18829
+ if (toggle && toggle.tagName === "BUTTON" && toggle.getAttribute("aria-expanded") === "true") {
18830
+ event.preventDefault();
18831
+ toggle.click();
18832
+ } else {
18833
+ const parentFocus = (row?.parentElement?.closest("[role=\"treeitem\"]"))?.querySelector(":scope > [data-tree-focus]");
18834
+ if (parentFocus) {
18835
+ event.preventDefault();
18836
+ parentFocus.focus();
18837
+ }
18838
+ }
18839
+ break;
18840
+ }
18841
+ case "*":
18842
+ target.closest("ul")?.querySelectorAll(":scope > [role=\"treeitem\"] > button[aria-expanded=\"false\"]").forEach((button) => {
18843
+ button.click();
18844
+ });
18845
+ break;
18846
+ default: if (event.key.length === 1 && !event.ctrlKey && !event.metaKey) {
18847
+ const state = searchRef.current;
18848
+ window.clearTimeout(state.timer);
18849
+ state.text += event.key.toLowerCase();
18850
+ state.timer = window.setTimeout(() => {
18851
+ state.text = "";
18852
+ }, 500);
18853
+ const match = items.find((item) => (item.textContent || "").trim().toLowerCase().startsWith(state.text));
18854
+ if (match) {
18855
+ event.preventDefault();
18856
+ match.focus();
18857
+ }
18858
+ }
18859
+ }
18860
+ };
18861
+ const content = containsList(children) ? Children.map(children, (child) => isListElement(child) ? /* @__PURE__ */ jsx(ListItemsAsNodes, { items: child.props.children }, listFingerprint(child)) : child) : children;
18862
+ return /* @__PURE__ */ jsx("div", {
18863
+ ref: rootRef,
18864
+ style,
18865
+ className: `${styles.tree} ${className || ""}`,
18866
+ onKeyDown,
18867
+ children: /* @__PURE__ */ jsx("ul", {
18868
+ role: "tree",
18869
+ "aria-label": "File tree",
18870
+ className: styles.treeList,
18871
+ children: content
18872
+ })
18873
+ });
18874
+ }
18875
+ function Tree(props) {
18876
+ return /* @__PURE__ */ jsx(TreeRoot, { ...props });
18877
+ }
18878
+ /** Alias: <Tree> and <FileTree> are interchangeable, like Mintlify. */
18879
+ function FileTree(props) {
18880
+ return /* @__PURE__ */ jsx(TreeRoot, { ...props });
18881
+ }
18882
+ Tree.Folder = TreeFolder;
18883
+ Tree.File = TreeFile;
18884
+ FileTree.Folder = TreeFolder;
18885
+ FileTree.File = TreeFile;
18886
+ const FileTreeFolder = TreeFolder;
18887
+ const FileTreeFile = TreeFile;
18888
+
18009
18889
  //#endregion
18010
18890
  //#region ../../node_modules/.pnpm/@base-ui+react@1.7.0_@types_e9c1e83f6bc6140c3efaf3427f2fbf0a/node_modules/@base-ui/react/dialog/root/DialogRootContext.mjs
18011
18891
  const DialogRootContext = /*#__PURE__*/ React$1.createContext(void 0);
@@ -18896,17 +19776,24 @@ var docs_exports = /* @__PURE__ */ __exportAll({
18896
19776
  Callout: () => Callout,
18897
19777
  Card: () => Card,
18898
19778
  CardGroup: () => CardGroup,
19779
+ Changelog: () => Changelog,
18899
19780
  Check: () => Check,
18900
19781
  CodeGroup: () => CodeGroup,
18901
19782
  Column: () => Column,
18902
19783
  Columns: () => Columns,
18903
19784
  Danger: () => Danger,
18904
19785
  Expandable: () => Expandable,
19786
+ FileTree: () => FileTree,
19787
+ FileTreeFile: () => FileTreeFile,
19788
+ FileTreeFolder: () => FileTreeFolder,
18905
19789
  Frame: () => Frame,
18906
19790
  Icon: () => Icon,
18907
19791
  Info: () => Info,
18908
19792
  Link: () => Link,
19793
+ Mermaid: () => Mermaid,
18909
19794
  Note: () => Note,
19795
+ Panel: () => Panel,
19796
+ PanelProvider: () => PanelProvider,
18910
19797
  Param: () => Param,
18911
19798
  ParamField: () => ParamField,
18912
19799
  PropertiesTable: () => PropertiesTable,
@@ -18915,12 +19802,21 @@ var docs_exports = /* @__PURE__ */ __exportAll({
18915
19802
  Steps: () => Steps,
18916
19803
  Tab: () => Tab,
18917
19804
  Tabs: () => Tabs,
19805
+ Tile: () => Tile,
19806
+ Tiles: () => Tiles,
18918
19807
  Tip: () => Tip,
18919
19808
  Tooltip: () => Tooltip,
19809
+ Tree: () => Tree,
19810
+ TreeFile: () => TreeFile,
19811
+ TreeFolder: () => TreeFolder,
19812
+ Update: () => Update,
18920
19813
  Warning: () => Warning,
18921
19814
  WarningBanner: () => WarningBanner,
18922
- ZoomableImage: () => ZoomableImage
19815
+ ZoomableImage: () => ZoomableImage,
19816
+ mermaidSource: () => mermaidSource,
19817
+ usePanelContent: () => usePanelContent,
19818
+ useSetPanelContent: () => useSetPanelContent
18923
19819
  });
18924
19820
 
18925
19821
  //#endregion
18926
- export { POPUP_COLLISION_AVOIDANCE as $, isHTMLElement as $n, itemPress as $t, popupStoreSelectors as A, ARROW_UP$1 as An, Danger as At, useSyncedFloatingRootContext as B, EMPTY_ARRAY$1 as Bn, AccordionGroup as Bt, pressableTriggerOpenStateMapping as C, isTypeableCombobox as Cn, COMPOSITE_KEYS as Ct, useFocus as D, ARROW_DOWN$1 as Dn, CardGroup as Dt, useHoverFloatingInteraction as E, getTarget as En, Card as Et, setPopupOpenState as F, useId as Fn, WarningBanner as Ft, FloatingNode as G, ownerDocument as Gn, useValueAsRef as Gt, useDismiss as H, useMergedRefs as Hn, getIcon as Ht, useImplicitActiveTrigger as I, useTimeout as In, Button as It, useFloatingParentNodeId as J, useIsoLayoutEffect as Jn, createChangeEventDetails as Jt, FloatingTree as K, useCompositeRootContext as Kn, useCompositeListItem as Kt, useOpenStateTransitions as L, Button$1 as Ln, Badge as Lt, FOCUSABLE_POPUP_PROPS as M, webkit as Mn, Note as Mt, PopupHandleAttachment as N, mac as Nn, Tip as Nt, usePopupHandleStore as O, ARROW_LEFT$1 as On, Callout as Ot, attachPreventUnmountOnClose as P, useBaseUiId as Pn, Warning as Pt, DROPDOWN_COLLISION_AVOIDANCE as Q, getWindow as Qn, imperativeAction as Qt, usePopupInteractionProps as R, cn as Rn, Badge$1 as Rt, popupTransitionStateMapping as S, getFloatingFocusElement as Sn, CodeGroup as St, useHoverReferenceInteraction as T, contains as Tn, useCompositeItem as Tt, useClick as U, useButton as Un, useOpenChangeComplete as Ut, ReactStore as V, EMPTY_OBJECT as Vn, resolveIcon as Vt, FloatingFocusManager as W, dispatchClickWithModifiers as Wn, useAnimationsFinished as Wt, FloatingTreeStore as X, useRefWithInit as Xn, escapeKey as Xt, useFloatingTree as Y, useStableCallback as Yn, cancelOpen as Yt, FloatingPortal as Z, getParentNode as Zn, focusOut as Zt, Tooltip as _, isIndexOutOfListBounds as _n, Collapsible as _t, DialogTitle as a, triggerPress as an, BrowserRouter as ar, Tabs as at, getDisabledMountTransitionStyles as b, isVirtualPointerEvent as bn, Column as bt, useOpenInteractionType as c, useDirection as cn, Route as cr, ResponseField as ct, useScrollLock as d, getTabbableBeforeElement as dn, useLocation as dr, ParamField as dt, listNavigation as en, isLastTraversableNode as er, enqueueFocus as et, DialogPortal$1 as f, isOutsideEvent as fn, useNavigate as fr, Link as ft, DialogBackdrop as g, isElementVisible as gn, Expandable as gt, DialogClose as h, getMinListIndex as hn, ABSOLUTE_URL_REGEX as hr, renderInlineMarkdown as ht, DialogContent as i, triggerHover as in, createLucideIcon as ir, Tab as it, PopupTriggerMap as j, jsdom as jn, Info as jt, createInitialPopupStoreState as k, ARROW_RIGHT$1 as kn, Check as kt, DialogTitle$1 as l, getNextTabbable as ln, Router as lr, PropertiesTable as lt, DialogPopup as m, getMaxListIndex as mn, parsePath as mr, Frame as mt, ZoomableImage as n, siblingOpen as nn, ChevronRight as nr, fastComponent as nt, DialogTrigger as o, CompositeList as on, Link$1 as or, Step as ot, InternalBackdrop as p, findNonDisabledListIndex as pn, createPath as pr, Icon as pt, useFloatingNodeId as q, mergeProps as qn, useAnimationFrame as qt, Dialog as r, triggerFocus as rn, Check$1 as rr, fastComponentRef as rt, DialogTrigger$1 as s, addEventListener as sn, Navigate as sr, Steps as st, docs_exports as t, outsidePress as tn, X as tr, FocusGuard as tt, DialogRoot as u, getTabbableAfterElement as un, Routes as ur, Param as ut, TooltipProvider as v, isListIndexDisabled as vn, CollapsibleContent as vt, safePolygon as w, activeElement as wn, inertValue as wt, useAnchorPositioning as x, stopEvent as xn, Columns as xt, usePositioner as y, isVirtualClick as yn, CollapsibleTrigger as yt, useTriggerDataForwarding as z, useRenderElement as zn, Accordion as zt };
19822
+ export { useFloatingNodeId as $, useTimeout as $n, Accordion as $t, safePolygon as A, findNonDisabledListIndex as An, createPath as Ar, CollapsibleContent as At, attachPreventUnmountOnClose as B, isTypeableCombobox as Bn, Card as Bt, Tooltip as C, styles as Cn, Link$1 as Cr, useSetPanelContent as Ct, useAnchorPositioning as D, getTabbableAfterElement as Dn, Routes as Dr, renderInlineMarkdown as Dt, getDisabledMountTransitionStyles as E, getNextTabbable as En, Router as Er, Frame as Et, createInitialPopupStoreState as F, isListIndexDisabled as Fn, COMPOSITE_KEYS as Ft, useTriggerDataForwarding as G, ARROW_LEFT$1 as Gn, Info as Gt, useImplicitActiveTrigger as H, contains as Hn, Callout as Ht, popupStoreSelectors as I, isVirtualClick as In, inertValue as It, useDismiss as J, jsdom as Jn, Warning as Jt, useSyncedFloatingRootContext as K, ARROW_RIGHT$1 as Kn, Note as Kt, PopupTriggerMap as L, isVirtualPointerEvent as Ln, useCompositeItem as Lt, useHoverFloatingInteraction as M, getMinListIndex as Mn, ABSOLUTE_URL_REGEX as Mr, Column as Mt, useFocus as N, isElementVisible as Nn, __commonJSMin as Nr, Columns as Nt, popupTransitionStateMapping as O, getTabbableBeforeElement as On, useLocation as Or, Expandable as Ot, usePopupHandleStore as P, isIndexOutOfListBounds as Pn, __toESM as Pr, CodeGroup as Pt, FloatingTree as Q, useId$1 as Qn, Badge$1 as Qt, FOCUSABLE_POPUP_PROPS as R, stopEvent as Rn, Changelog as Rt, TreeFolder as S, mermaidSource as Sn, BrowserRouter as Sr, usePanelContent as St, usePositioner as T, useDirection as Tn, Route as Tr, Icon as Tt, useOpenStateTransitions as U, getTarget as Un, Check as Ut, setPopupOpenState as V, activeElement as Vn, CardGroup as Vt, usePopupInteractionProps as W, ARROW_DOWN$1 as Wn, Danger as Wt, FloatingFocusManager as X, mac as Xn, Button as Xt, useClick as Y, webkit as Yn, WarningBanner as Yt, FloatingNode as Z, useBaseUiId as Zn, Badge as Zt, FileTree as _, triggerFocus as _n, isLastTraversableNode as _r, PropertiesTable as _t, DialogTitle as a, useValueAsRef as an, useMergedRefs as ar, POPUP_COLLISION_AVOIDANCE as at, Tree as b, CompositeList as bn, Check$1 as br, Panel as bt, useOpenInteractionType as c, createChangeEventDetails as cn, ownerDocument as cr, fastComponent as ct, useScrollLock as d, focusOut as dn, useIsoLayoutEffect as dr, Tiles as dt, AccordionGroup as en, Button$1 as er, useFloatingParentNodeId as et, DialogPortal$1 as f, imperativeAction as fn, useStableCallback as fr, Tab as ft, DialogBackdrop as g, siblingOpen as gn, isHTMLElement as gr, ResponseField as gt, DialogClose as h, outsidePress as hn, getWindow as hr, Steps as ht, DialogContent as i, useAnimationsFinished as in, EMPTY_OBJECT as ir, DROPDOWN_COLLISION_AVOIDANCE as it, useHoverReferenceInteraction as j, getMaxListIndex as jn, parsePath as jr, CollapsibleTrigger as jt, pressableTriggerOpenStateMapping as k, isOutsideEvent as kn, useNavigate as kr, Collapsible as kt, DialogTitle$1 as l, cancelOpen as ln, useCompositeRootContext as lr, fastComponentRef as lt, DialogPopup as m, listNavigation as mn, getParentNode as mr, Step as mt, ZoomableImage as n, getIcon as nn, useRenderElement as nr, FloatingTreeStore as nt, DialogTrigger as o, useCompositeListItem as on, useButton as or, enqueueFocus as ot, InternalBackdrop as p, itemPress as pn, useRefWithInit as pr, Tabs as pt, ReactStore as q, ARROW_UP$1 as qn, Tip as qt, Dialog as r, useOpenChangeComplete as rn, EMPTY_ARRAY$1 as rr, FloatingPortal as rt, DialogTrigger$1 as s, useAnimationFrame as sn, dispatchClickWithModifiers as sr, FocusGuard as st, docs_exports as t, resolveIcon as tn, cn as tr, useFloatingTree as tt, DialogRoot as u, escapeKey as un, mergeProps as ur, Tile as ut, FileTreeFile as v, triggerHover as vn, X as vr, Param as vt, TooltipProvider as w, addEventListener as wn, Navigate as wr, Link as wt, TreeFile as x, Mermaid as xn, createLucideIcon as xr, PanelProvider as xt, FileTreeFolder as y, triggerPress as yn, ChevronRight as yr, ParamField as yt, PopupHandleAttachment as z, getFloatingFocusElement as zn, Update as zt };