@photon-ai/pho-ui 2.1.0 → 2.2.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 (113) hide show
  1. package/dist/chunks/IconAlertCircleFilled-VxKU8TYK.js.map +1 -1
  2. package/dist/chunks/IconArrowUpRight-DGgKzQwV.js.map +1 -1
  3. package/dist/chunks/IconCheck-D2WuculQ.js.map +1 -1
  4. package/dist/chunks/IconChevronLeft-CSWMKQ4C.js.map +1 -1
  5. package/dist/chunks/IconInfoCircle-L0zfhg7R.js.map +1 -1
  6. package/dist/chunks/IconX-pZ9vrtSr.js.map +1 -1
  7. package/dist/chunks/animated-height-C2eQstGy.js.map +1 -1
  8. package/dist/chunks/{avatar-CiAvJNNs.js → avatar-BkmGDIqf.js} +3 -3
  9. package/dist/chunks/{avatar-CiAvJNNs.js.map → avatar-BkmGDIqf.js.map} +1 -1
  10. package/dist/chunks/basic-page-CB36yrpL.js +643 -0
  11. package/dist/chunks/basic-page-CB36yrpL.js.map +1 -0
  12. package/dist/chunks/{button-X5wsWvRa.js → button-BmhyLgy5.js} +3 -3
  13. package/dist/chunks/{button-X5wsWvRa.js.map → button-BmhyLgy5.js.map} +1 -1
  14. package/dist/chunks/{card-9cGnv-VD.js → card-DSW3Uhag.js} +2 -2
  15. package/dist/chunks/{card-9cGnv-VD.js.map → card-DSW3Uhag.js.map} +1 -1
  16. package/dist/chunks/{close-button-xadxp0j8.js → close-button-GvqWbLl0.js} +2 -2
  17. package/dist/chunks/{close-button-xadxp0j8.js.map → close-button-GvqWbLl0.js.map} +1 -1
  18. package/dist/chunks/{cn-DTiB6ek_.js → cn-ChIgwEl3.js} +99 -96
  19. package/dist/chunks/{cn-DTiB6ek_.js.map → cn-ChIgwEl3.js.map} +1 -1
  20. package/dist/chunks/{combobox-rLdS6fl-.js → combobox-Dj5m_dDd.js} +2 -2
  21. package/dist/chunks/{combobox-rLdS6fl-.js.map → combobox-Dj5m_dDd.js.map} +1 -1
  22. package/dist/chunks/createReactComponent-BqCmnqfX.js.map +1 -1
  23. package/dist/chunks/{dialog-BC23YRUq.js → dialog-DtFO7oy0.js} +5 -5
  24. package/dist/chunks/{dialog-BC23YRUq.js.map → dialog-DtFO7oy0.js.map} +1 -1
  25. package/dist/chunks/{error-DR6G2LmG.js → error-Da7P5WZi.js} +11 -10
  26. package/dist/chunks/{error-DR6G2LmG.js.map → error-Da7P5WZi.js.map} +1 -1
  27. package/dist/chunks/{input-D3XQcC4J.js → input-QSAUO30c.js} +2 -2
  28. package/dist/chunks/{input-D3XQcC4J.js.map → input-QSAUO30c.js.map} +1 -1
  29. package/dist/chunks/{input-group-D6dlma8k.js → input-group-5AtpIhC_.js} +2 -2
  30. package/dist/chunks/{input-group-D6dlma8k.js.map → input-group-5AtpIhC_.js.map} +1 -1
  31. package/dist/chunks/{menu-BC-9IP29.js → menu-Cgj3lq9z.js} +3 -3
  32. package/dist/chunks/{menu-BC-9IP29.js.map → menu-Cgj3lq9z.js.map} +1 -1
  33. package/dist/chunks/{popover-EL1SE1kj.js → popover-BhBJO346.js} +2 -2
  34. package/dist/chunks/{popover-EL1SE1kj.js.map → popover-BhBJO346.js.map} +1 -1
  35. package/dist/chunks/{scroll-area-CNZVwe7v.js → scroll-area-Cw4JFqNG.js} +2 -2
  36. package/dist/chunks/{scroll-area-CNZVwe7v.js.map → scroll-area-Cw4JFqNG.js.map} +1 -1
  37. package/dist/chunks/{sidebar-DDJC1MeD.js → sidebar-BETMObNj.js} +25 -24
  38. package/dist/chunks/{sidebar-DDJC1MeD.js.map → sidebar-BETMObNj.js.map} +1 -1
  39. package/dist/chunks/{spinner-Cy8bkyJf.js → spinner-BzLUo4Xk.js} +2 -2
  40. package/dist/chunks/{spinner-Cy8bkyJf.js.map → spinner-BzLUo4Xk.js.map} +1 -1
  41. package/dist/chunks/{status-view-CcbctPqR.js → status-view-C8tabjDu.js} +2 -2
  42. package/dist/chunks/{status-view-CcbctPqR.js.map → status-view-C8tabjDu.js.map} +1 -1
  43. package/dist/components/accordion.js +1 -1
  44. package/dist/components/autocomplete.js +1 -1
  45. package/dist/components/avatar.js +1 -1
  46. package/dist/components/badge.js +1 -1
  47. package/dist/components/button.js +2 -2
  48. package/dist/components/card.js +1 -1
  49. package/dist/components/checkbox.js +1 -1
  50. package/dist/components/checkbox.js.map +1 -1
  51. package/dist/components/collapsible.js +1 -1
  52. package/dist/components/combobox.js +1 -1
  53. package/dist/components/command.js +2 -2
  54. package/dist/components/command.js.map +1 -1
  55. package/dist/components/context-menu.js +2 -2
  56. package/dist/components/context-menu.js.map +1 -1
  57. package/dist/components/dialog.js +1 -1
  58. package/dist/components/drawer.js +1 -1
  59. package/dist/components/error.js +1 -1
  60. package/dist/components/field.js +1 -1
  61. package/dist/components/fieldset.js +1 -1
  62. package/dist/components/form.js +1 -1
  63. package/dist/components/input-group.js +1 -1
  64. package/dist/components/input.js +1 -1
  65. package/dist/components/kbd.js +1 -1
  66. package/dist/components/kbd.js.map +1 -1
  67. package/dist/components/menu.js +1 -1
  68. package/dist/components/menubar.js +1 -1
  69. package/dist/components/meter.js +1 -1
  70. package/dist/components/navigation-menu.js +1 -1
  71. package/dist/components/notification.js +1 -1
  72. package/dist/components/notification.js.map +1 -1
  73. package/dist/components/number-field.js +1 -1
  74. package/dist/components/otp-field.js +1 -1
  75. package/dist/components/otp-field.js.map +1 -1
  76. package/dist/components/phone-input.js +2064 -2050
  77. package/dist/components/phone-input.js.map +1 -1
  78. package/dist/components/popover.js +1 -1
  79. package/dist/components/preview-card.js +1 -1
  80. package/dist/components/progress.js +1 -1
  81. package/dist/components/radio-group.js +1 -1
  82. package/dist/components/radio-group.js.map +1 -1
  83. package/dist/components/scroll-area.js +1 -1
  84. package/dist/components/select.js +1 -1
  85. package/dist/components/select.js.map +1 -1
  86. package/dist/components/separator.js +1 -1
  87. package/dist/components/skeleton.js +1 -1
  88. package/dist/components/slider.js +1 -1
  89. package/dist/components/spinner.js +1 -1
  90. package/dist/components/status-view.js +1 -1
  91. package/dist/components/switch.js +1 -1
  92. package/dist/components/switch.js.map +1 -1
  93. package/dist/components/tabs.js +1 -1
  94. package/dist/components/theme-toggle.js +1 -1
  95. package/dist/components/theme-toggle.js.map +1 -1
  96. package/dist/components/toast.js +1 -1
  97. package/dist/components/toggle-group.js +1 -1
  98. package/dist/components/toggle.js +1 -1
  99. package/dist/components/toolbar.js +1 -1
  100. package/dist/components/tooltip.js +1 -1
  101. package/dist/icons.js.map +1 -1
  102. package/dist/index.js +11 -11
  103. package/dist/primitives.js +1 -3
  104. package/dist/sections/basic-page.js +1 -1
  105. package/dist/sections/sidebar.js +1 -1
  106. package/dist/src/components/toast/toast.d.ts +1 -1
  107. package/dist/src/sections/basic-page/basic-page.d.ts +57 -21
  108. package/dist/src/sections/basic-page/index.d.ts +1 -1
  109. package/dist/utils.js +1 -1
  110. package/package.json +21 -20
  111. package/dist/chunks/basic-page-Dfln58iw.js +0 -482
  112. package/dist/chunks/basic-page-Dfln58iw.js.map +0 -1
  113. package/dist/primitives.js.map +0 -1
@@ -73,8 +73,11 @@ export interface BasicPageTitleProps extends ComponentProps<"h1"> {
73
73
  * Rise this title into its line on mount — for a subpage title whose line
74
74
  * an inbound Title ↔ Back morph departs from. The moment the word lifts
75
75
  * off, this title floats up from just below it (the Stack physics), so
76
- * the two form one upward stream and never overlap. Skipped under
77
- * reduced motion.
76
+ * the two form one upward stream and never overlap. Combines with
77
+ * `morphId` for a mid-level page (a list that is itself a subpage): the
78
+ * word rises in when the page is entered from its parent and flies in
79
+ * from the back link when returned to from its own subpage. Skipped
80
+ * under reduced motion.
78
81
  */
79
82
  enter?: boolean;
80
83
  ref?: Ref<HTMLHeadingElement>;
@@ -332,33 +335,64 @@ export interface BasicPageRevealProps extends Omit<ComponentProps<"div">, Reveal
332
335
  * runtime glides open/closed while its neighbours follow.
333
336
  */
334
337
  declare function Reveal({ show, gap, dividers, className, ...props }: BasicPageRevealProps): import("react").JSX.Element;
335
- export interface BasicPageBackProps extends Omit<ButtonLinkProps, "variant" | "size" | "shape" | "prefix" | "suffix" | "svgOnly" | "href"> {
336
- /** Parent destination — rendered through the host's `LinkProvider`. */
338
+ export interface BasicPageBreadcrumbsProps extends ComponentProps<"nav"> {
339
+ /** `Crumb`s, root-most first; the last one is the immediate parent. */
340
+ children: ReactNode;
341
+ }
342
+ /**
343
+ * The trail above the title — where this page sits, root-most crumb first,
344
+ * ending with the immediate parent; the current page is the `Title` below.
345
+ * Place inside `Root`, before `Title`. It floats in `Root`'s reserved top
346
+ * padding (vertically centered in the 64px zone) instead of taking layout
347
+ * space, so `Title` sits at the same position whether or not a page has
348
+ * one.
349
+ *
350
+ * One form at every depth: `‹ parent / parent / parent` — the chevron opens
351
+ * the trail (it is the way up), slashes separate the crumbs (they are the
352
+ * path), one crumb or many. Below `sm` the path collapses to `‹ parent` —
353
+ * the last crumb alone. Crumbs render through the host's `LinkProvider`.
354
+ *
355
+ * The offsets align the first *label* glyph with the title glyph. Title
356
+ * text sits 40px in (`px-5` root gutter + `px-5` title pad); inside a `sm`
357
+ * ghost button the label sits 29.75px in (8px icon-side pad + 15.75px
358
+ * chevron, 1.125em at the 14px `text-base`, + 4px gap + 2px label-span
359
+ * `px-0.5`) — so `left` is the 10.25px difference. `top-4` centers the 32px
360
+ * buttons in the 64px reserved zone. The chevron and the ghost hover pills
361
+ * hang in the padding — the usual optical alignment for borderless controls.
362
+ *
363
+ * Motion between pages: the tail crumb is the morph partner of the child
364
+ * page's `Title` (pair their `morphId`s); everything before it holds still.
365
+ * On a push the trail grows by one — a separator emerges from under the
366
+ * arriving word; on a pop it loses its tail — the word grows back into the
367
+ * title and the spare separator fades. Collapsed, it behaves as `Back`.
368
+ */
369
+ declare function Breadcrumbs({ className, children, ...props }: BasicPageBreadcrumbsProps): import("react").JSX.Element;
370
+ export interface BasicPageCrumbProps extends Omit<ButtonLinkProps, "variant" | "size" | "shape" | "prefix" | "suffix" | "svgOnly" | "href"> {
371
+ /** Destination — rendered through the host's `LinkProvider`. */
337
372
  href: string;
338
- /** Label — name the parent page. @default "Back" */
373
+ /** Label — name the page. @default "Back" */
339
374
  children?: ReactNode;
340
375
  /**
341
- * Shared-element key. Pair with the same `morphId` on the parent page's
342
- * `Title` and the word morphs between title and back link across the
343
- * navigation. Skipped under reduced motion.
376
+ * Shared-element key. Pair with the same `morphId` on that page's `Title`
377
+ * and the word morphs between title and crumb across the navigation.
378
+ * Skipped under reduced motion.
344
379
  */
345
380
  morphId?: string;
346
381
  }
347
382
  /**
348
- * Back link for a subpage — a small ghost `ButtonLink`; place inside `Root`,
349
- * before `Title`. It floats in `Root`'s reserved top padding (vertically
350
- * centered in the 48px zone) instead of taking layout space, so `Title` sits
351
- * at exactly the same position whether or not a page has one.
352
- *
353
- * The offsets align the *label* glyph with the title glyph. Title text sits
354
- * 40px in (`px-5` root gutter + `px-5` title pad); inside a `sm` ghost button
355
- * the label sits 29.75px in (8px icon-side pad + 15.75px chevron, 1.125em at
356
- * the 14px `text-base`, + 4px gap + 2px label-span `px-0.5`) — so `left` is
357
- * the 10.25px difference. `top-4` centers the 32px button in the 64px
358
- * reserved zone. The chevron and the ghost hover pill hang in the padding —
359
- * the usual optical alignment for borderless controls.
383
+ * One step of the trail — a small ghost `ButtonLink`. Only meaningful
384
+ * inside `Breadcrumbs`, which decides what shows at which width and which
385
+ * crumb is the tail; `Back` is the one-crumb shorthand.
386
+ */
387
+ declare function Crumb({ href, className, morphId, children, ...props }: BasicPageCrumbProps): import("react").JSX.Element;
388
+ export type BasicPageBackProps = BasicPageCrumbProps;
389
+ /**
390
+ * Back link for a subpage one level down — the one-crumb `Breadcrumbs`:
391
+ * `‹ parent`, floating in `Root`'s reserved top padding, morphing with the
392
+ * parent's `Title` when they share a `morphId`. Deeper pages list the whole
393
+ * path with `Breadcrumbs` + `Crumb` instead.
360
394
  */
361
- declare function Back({ href, className, morphId, children, ...props }: BasicPageBackProps): import("react").JSX.Element;
395
+ declare function Back({ className, ...props }: BasicPageBackProps): import("react").JSX.Element;
362
396
  export interface BasicPageRowLinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, "href" | "title"> {
363
397
  /** Left-side field name — plain text, or compose with a trailing badge. */
364
398
  label: ReactNode;
@@ -439,6 +473,8 @@ declare function RowLink({ label, description, leading, href, className, childre
439
473
  */
440
474
  export declare const BasicPage: {
441
475
  Root: typeof Root;
476
+ Breadcrumbs: typeof Breadcrumbs;
477
+ Crumb: typeof Crumb;
442
478
  Back: typeof Back;
443
479
  Title: typeof Title;
444
480
  Stack: typeof Stack;
@@ -1 +1 @@
1
- export { BasicPage, BASIC_PAGE_CARD, BASIC_PAGE_CALLOUT, BASIC_PAGE_ROW, BASIC_PAGE_ITEM, BASIC_PAGE_ITEM_PANEL, BASIC_PAGE_ITEM_PANEL_DIVIDED, type BasicPageRowProps, type BasicPageRowLinkProps, type BasicPageBackProps, type BasicPageFooterProps, type BasicPageItemPanelProps, } from './basic-page';
1
+ export { BasicPage, BASIC_PAGE_CARD, BASIC_PAGE_CALLOUT, BASIC_PAGE_ROW, BASIC_PAGE_ITEM, BASIC_PAGE_ITEM_PANEL, BASIC_PAGE_ITEM_PANEL_DIVIDED, type BasicPageRowProps, type BasicPageRowLinkProps, type BasicPageBackProps, type BasicPageBreadcrumbsProps, type BasicPageCrumbProps, type BasicPageFooterProps, type BasicPageItemPanelProps, } from './basic-page';
package/dist/utils.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as s } from "./chunks/cn-DTiB6ek_.js";
2
+ import { t as s } from "./chunks/cn-ChIgwEl3.js";
3
3
  import { n as t, r as e, t as a } from "./chunks/link-provider-9TFNyDqO.js";
4
4
  import { t as i } from "./chunks/resolve-variant-CcD8iG5l.js";
5
5
  import { n as p, r as P, t as R } from "./chunks/use-press-pulse-8iorQPsh.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@photon-ai/pho-ui",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "Pho Design System — Photon's React component library, built on Base UI",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -407,33 +407,34 @@
407
407
  "react-dom": "^18.0.0 || ^19.0.0"
408
408
  },
409
409
  "devDependencies": {
410
- "@tabler/icons-react": "^3.44.0",
411
- "@tailwindcss/vite": "^4.1.0",
412
- "@testing-library/jest-dom": "^6.9.1",
410
+ "@tabler/icons-react": "^3.46.0",
411
+ "@tailwindcss/vite": "^4.3.3",
412
+ "@testing-library/jest-dom": "^7.0.1",
413
413
  "@testing-library/react": "^16.3.2",
414
- "@testing-library/user-event": "^14.6.1",
415
- "@types/node": "^26.0.1",
416
- "@types/react": "^19.2.0",
417
- "@types/react-dom": "^19.2.0",
418
- "@vitejs/plugin-react": "^6.0.3",
419
- "happy-dom": "^20.10.6",
414
+ "@testing-library/user-event": "^14.6.5",
415
+ "@types/node": "^26.2.0",
416
+ "@types/react": "^19.2.18",
417
+ "@types/react-dom": "^19.2.4",
418
+ "@typescript/typescript6": "^6.0.2",
419
+ "@vitejs/plugin-react": "^6.0.5",
420
+ "happy-dom": "^20.11.2",
420
421
  "plop": "^4.0.5",
421
- "react": "^19.2.0",
422
- "react-dom": "^19.2.0",
423
- "tailwindcss": "^4.1.0",
424
- "tsx": "^4.22.4",
425
- "typescript": "^5.9.0",
426
- "vite": "^8.1.0",
422
+ "react": "^19.2.8",
423
+ "react-dom": "^19.2.8",
424
+ "tailwindcss": "^4.3.3",
425
+ "tsx": "^4.23.12",
426
+ "typescript": "^7.0.2",
427
+ "vite": "^8.2.1",
427
428
  "vite-plugin-dts": "^5.0.3",
428
- "vitest": "^4.1.9"
429
+ "vitest": "^4.1.10"
429
430
  },
430
431
  "dependencies": {
431
- "@base-ui/react": "^1.6.0",
432
+ "@base-ui/react": "^1.7.0",
432
433
  "clsx": "^2.1.1",
433
434
  "cmdk": "^1.1.1",
434
435
  "country-flag-icons": "^1.6.20",
435
- "libphonenumber-js": "^1.13.10",
436
- "motion": "^12.42.0",
436
+ "libphonenumber-js": "^1.13.11",
437
+ "motion": "^13.1.0",
437
438
  "tailwind-merge": "^3.6.0"
438
439
  },
439
440
  "scripts": {
@@ -1,482 +0,0 @@
1
- "use client";
2
- import { t as r } from "./cn-DTiB6ek_.js";
3
- import { n as R } from "./link-provider-9TFNyDqO.js";
4
- import { o as I } from "./button-X5wsWvRa.js";
5
- import { t as P } from "./createReactComponent-BqCmnqfX.js";
6
- import { t as S } from "./error-DR6G2LmG.js";
7
- import { t as N } from "./IconChevronLeft-CSWMKQ4C.js";
8
- import { t as M } from "./animated-height-C2eQstGy.js";
9
- import { Children as k, useEffect as T, useRef as O, useState as A } from "react";
10
- import { jsx as a, jsxs as p } from "react/jsx-runtime";
11
- import { AnimatePresence as v, motion as u, useReducedMotion as d } from "motion/react";
12
- var L = [["path", {
13
- d: "M9 6l6 6l-6 6",
14
- key: "svg-0"
15
- }]], D = P("outline", "chevron-right", "ChevronRight", L), _ = "rounded-base border border-pho-secondary bg-pho-primary", h = "divide-y divide-pho-secondary [&>:has(+[data-basic-page-alert])]:border-b-0", B = `${_} ${h}`, b = "flex min-w-0 flex-col gap-3 rounded-base border border-pho-secondary bg-pho-page p-5", G = "flex min-h-[4.25rem] min-w-0 flex-col gap-3 px-5 py-4 sm:flex-row sm:items-center sm:justify-between sm:gap-6", H = "flex flex-col gap-3 px-5 py-4", j = "-mx-5 -mb-4 flex items-center rounded-b-[calc(0.75rem-1px)] bg-pho-secondary py-1 pr-3 pl-5", z = "-mx-2 -mt-1.5 flex items-center rounded-sm bg-pho-secondary px-2 py-0.5", m = {
16
- type: "spring",
17
- stiffness: 400,
18
- damping: 40
19
- }, f = {
20
- duration: 0.25,
21
- ease: "easeOut"
22
- };
23
- function F({ className: e, ...t }) {
24
- return /* @__PURE__ */ a("div", {
25
- className: r("relative mx-auto flex min-h-full w-full max-w-[44.5rem] min-w-0 flex-col px-5 pt-12 pb-12 *:min-w-0 has-[[data-basic-page-back]]:pt-16", e),
26
- ...t
27
- });
28
- }
29
- function V(e) {
30
- return e.normalize("NFKD").replace(/[\u0300-\u036f]/g, "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
31
- }
32
- function $(e) {
33
- if (!(typeof e != "string" && typeof e != "number"))
34
- return V(String(e)) || void 0;
35
- }
36
- function g(e, t) {
37
- if (e !== "")
38
- return e ?? $(t);
39
- }
40
- var K = (e) => `basic-page-morph-${e}`, U = { layout: m }, W = 10, X = {
41
- delay: 0.2,
42
- duration: 0.12,
43
- ease: "easeOut"
44
- }, q = {
45
- duration: 0.18,
46
- ease: "easeOut"
47
- }, w = /* @__PURE__ */ new Map();
48
- function C(e) {
49
- const [t] = A(() => e != null && w.get(e) === !0), i = O(null);
50
- return T(() => {
51
- if (e == null || typeof IntersectionObserver > "u") return;
52
- const n = i.current;
53
- if (!n) return;
54
- const o = new IntersectionObserver(([s]) => {
55
- s && w.set(e, s.isIntersecting);
56
- });
57
- return o.observe(n), () => {
58
- o.disconnect();
59
- };
60
- }, [e]), {
61
- fly: t,
62
- ref: i
63
- };
64
- }
65
- function E({ morphId: e, fromClassName: t, fly: i, morphRef: n, fallback: o = !1, children: s }) {
66
- const [l, c] = A(!1), y = !i && o;
67
- return /* @__PURE__ */ p(u.span, {
68
- ref: n,
69
- layoutId: K(e),
70
- initial: y ? { opacity: 0 } : void 0,
71
- animate: y ? { opacity: 1 } : void 0,
72
- transition: i ? U : {
73
- layout: { duration: 0 },
74
- opacity: f
75
- },
76
- onLayoutAnimationStart: () => {
77
- i && c(!0);
78
- },
79
- onLayoutAnimationComplete: () => c(!1),
80
- className: "relative inline-block max-w-full min-w-0 truncate",
81
- children: [s, l && /* @__PURE__ */ a(u.span, {
82
- "aria-hidden": !0,
83
- initial: { opacity: 1 },
84
- animate: { opacity: 0 },
85
- transition: q,
86
- className: r("absolute inset-0", t),
87
- children: s
88
- })]
89
- });
90
- }
91
- function J({ id: e, morphId: t, enter: i, className: n, children: o, ...s }) {
92
- const l = g(e, o), c = d(), y = C(t);
93
- return /* @__PURE__ */ a("h1", {
94
- id: l,
95
- className: r("text-display-base text-pho-primary max-w-full min-w-0 scroll-mt-12 truncate px-5 font-medium", n),
96
- ...s,
97
- children: t != null && !c ? /* @__PURE__ */ a(E, {
98
- morphId: t,
99
- fromClassName: "text-pho-secondary",
100
- fly: y.fly,
101
- morphRef: y.ref,
102
- children: o
103
- }) : i && !c ? /* @__PURE__ */ a(u.span, {
104
- initial: {
105
- opacity: 0,
106
- y: x
107
- },
108
- animate: {
109
- opacity: 1,
110
- y: 0
111
- },
112
- transition: {
113
- y: m,
114
- opacity: f
115
- },
116
- className: "inline-block max-w-full min-w-0 truncate",
117
- children: o
118
- }) : o
119
- });
120
- }
121
- function Q({ className: e, ...t }) {
122
- const i = d();
123
- return /* @__PURE__ */ a(u.div, {
124
- initial: i ? !1 : {
125
- opacity: 0,
126
- y: x
127
- },
128
- animate: {
129
- opacity: 1,
130
- y: 0
131
- },
132
- transition: {
133
- y: m,
134
- opacity: f
135
- },
136
- className: r("mt-6 flex min-w-0 flex-col gap-10", "*:flex *:min-w-0 *:flex-col *:gap-3", e),
137
- ...t
138
- });
139
- }
140
- function Y({ enter: e, className: t, ...i }) {
141
- const n = d();
142
- return e && !n ? /* @__PURE__ */ a(u.div, {
143
- initial: {
144
- opacity: 0,
145
- y: x
146
- },
147
- animate: {
148
- opacity: 1,
149
- y: 0
150
- },
151
- transition: {
152
- y: m,
153
- opacity: f
154
- },
155
- className: r("flex min-w-0 flex-col", t),
156
- ...i
157
- }) : /* @__PURE__ */ a("div", {
158
- className: r("flex min-w-0 flex-col", t),
159
- ...i
160
- });
161
- }
162
- function Z({ id: e, className: t, children: i, ...n }) {
163
- return /* @__PURE__ */ a("h2", {
164
- id: g(e, i),
165
- className: r("text-display-xs text-pho-primary max-w-full min-w-0 scroll-mt-12 truncate px-5 font-medium", t),
166
- ...n,
167
- children: i
168
- });
169
- }
170
- function ee({ className: e, ...t }) {
171
- return /* @__PURE__ */ a("p", {
172
- className: r("text-display-xs text-pho-description px-5 font-normal", e),
173
- ...t
174
- });
175
- }
176
- function te({ className: e, ...t }) {
177
- return /* @__PURE__ */ a("p", {
178
- className: r("text-pho-description px-5 text-xs font-normal", e),
179
- ...t
180
- });
181
- }
182
- function ie({ animateHeight: e, className: t, children: i, ...n }) {
183
- return e ? /* @__PURE__ */ a("div", {
184
- className: r(_, "min-h-0 overflow-hidden", t),
185
- ...n,
186
- children: /* @__PURE__ */ a(M, {
187
- transition: m,
188
- className: h,
189
- children: i
190
- })
191
- }) : /* @__PURE__ */ a("div", {
192
- className: r(B, t),
193
- ...n,
194
- children: i
195
- });
196
- }
197
- function ae({ className: e, ...t }) {
198
- return /* @__PURE__ */ a("div", {
199
- className: r(H, e),
200
- ...t
201
- });
202
- }
203
- function ne({ divided: e = !1, className: t, ...i }) {
204
- return /* @__PURE__ */ a("div", {
205
- className: r(e ? z : j, t),
206
- ...i
207
- });
208
- }
209
- function re({ className: e, icon: t, children: i, ...n }) {
210
- if (t == null || t === !1 || t === !0) return /* @__PURE__ */ a("div", {
211
- className: r(b, e),
212
- ...n,
213
- children: i
214
- });
215
- const [o, ...s] = k.toArray(i);
216
- return /* @__PURE__ */ p("div", {
217
- className: r(b, e),
218
- ...n,
219
- children: [/* @__PURE__ */ p("div", {
220
- className: "relative",
221
- children: [/* @__PURE__ */ a("div", {
222
- className: "min-w-0 pr-16",
223
- children: o
224
- }), /* @__PURE__ */ a("div", {
225
- "aria-hidden": !0,
226
- className: "text-pho-description pointer-events-none absolute top-1/2 right-0 size-14 -translate-y-1/2 opacity-50 [&>svg]:size-full",
227
- children: t
228
- })]
229
- }), s]
230
- });
231
- }
232
- function oe({ id: e, className: t, children: i, ...n }) {
233
- return /* @__PURE__ */ a("h2", {
234
- id: g(e, i),
235
- className: r("text-display-xs text-pho-primary max-w-full min-w-0 scroll-mt-12 truncate font-medium", t),
236
- ...n,
237
- children: i
238
- });
239
- }
240
- function se({ className: e, ...t }) {
241
- return /* @__PURE__ */ a("p", {
242
- className: r("text-display-xs text-pho-description font-normal", e),
243
- ...t
244
- });
245
- }
246
- function le({ label: e, description: t, htmlFor: i, stacked: n = !1, className: o, children: s, ...l }) {
247
- return /* @__PURE__ */ p("div", {
248
- className: r(G, n && "sm:flex-col sm:items-stretch sm:justify-start sm:gap-3", o),
249
- ...l,
250
- children: [/* @__PURE__ */ p("div", {
251
- className: "min-w-0",
252
- children: [i ? /* @__PURE__ */ a("label", {
253
- htmlFor: i,
254
- className: "text-pho-primary block text-base font-normal",
255
- children: e
256
- }) : /* @__PURE__ */ a("p", {
257
- className: "text-pho-primary text-base font-normal",
258
- children: e
259
- }), t ? /* @__PURE__ */ a("p", {
260
- className: "text-pho-description text-xs",
261
- children: t
262
- }) : null]
263
- }), /* @__PURE__ */ a("div", {
264
- className: r("flex w-full min-w-0 items-center gap-2 sm:w-auto", n && "sm:w-full"),
265
- children: s
266
- })]
267
- });
268
- }
269
- function ce({ className: e, ...t }) {
270
- return /* @__PURE__ */ a("p", {
271
- className: r("text-pho-description max-w-full min-w-0 truncate text-base", e),
272
- ...t
273
- });
274
- }
275
- function me({ error: e, show: t, className: i, children: n, ...o }) {
276
- const s = d();
277
- return /* @__PURE__ */ a(v, {
278
- initial: !1,
279
- children: (t ?? !0) && (e != null || n != null) ? /* @__PURE__ */ a(u.div, {
280
- "data-basic-page-alert": "",
281
- className: "overflow-hidden",
282
- initial: {
283
- height: 0,
284
- opacity: 0
285
- },
286
- animate: {
287
- height: "auto",
288
- opacity: 1
289
- },
290
- exit: {
291
- height: 0,
292
- opacity: 0
293
- },
294
- transition: s ? { duration: 0 } : {
295
- height: m,
296
- opacity: f
297
- },
298
- children: /* @__PURE__ */ a(S, {
299
- error: e,
300
- className: r("px-5 pb-3", i),
301
- ...o,
302
- children: n
303
- })
304
- }) : null
305
- });
306
- }
307
- function ue({ show: e, className: t, ...i }) {
308
- const n = d(), o = /* @__PURE__ */ a("div", {
309
- className: r("flex items-center justify-between gap-6 px-5 py-4", t),
310
- ...i
311
- });
312
- return e === void 0 ? o : /* @__PURE__ */ a(v, {
313
- initial: !1,
314
- children: e ? /* @__PURE__ */ a(u.div, {
315
- className: "overflow-hidden",
316
- initial: {
317
- height: 0,
318
- opacity: 0
319
- },
320
- animate: {
321
- height: "auto",
322
- opacity: 1
323
- },
324
- exit: {
325
- height: 0,
326
- opacity: 0
327
- },
328
- transition: n ? { duration: 0 } : {
329
- height: m,
330
- opacity: f
331
- },
332
- children: o
333
- }) : null
334
- });
335
- }
336
- var x = 12, pe = {
337
- stack: "-2.5rem",
338
- block: "-0.75rem",
339
- none: "0px"
340
- };
341
- function fe({ show: e, gap: t = "stack", dividers: i, className: n, ...o }) {
342
- const s = d(), l = pe[i ? "none" : t];
343
- return e === void 0 ? /* @__PURE__ */ a(u.div, {
344
- initial: s ? !1 : {
345
- opacity: 0,
346
- y: x
347
- },
348
- animate: {
349
- opacity: 1,
350
- y: 0
351
- },
352
- transition: {
353
- y: m,
354
- opacity: f
355
- },
356
- className: r(i && h, n),
357
- ...o
358
- }) : /* @__PURE__ */ a(v, {
359
- initial: !1,
360
- children: e ? /* @__PURE__ */ a(u.div, {
361
- initial: {
362
- height: 0,
363
- opacity: 0,
364
- marginTop: l
365
- },
366
- animate: {
367
- height: "auto",
368
- opacity: 1,
369
- marginTop: 0
370
- },
371
- exit: {
372
- height: 0,
373
- opacity: 0,
374
- marginTop: l
375
- },
376
- transition: s ? { duration: 0 } : {
377
- height: m,
378
- marginTop: m,
379
- opacity: f
380
- },
381
- className: r("overflow-hidden", i && h, n),
382
- ...o
383
- }) : null
384
- });
385
- }
386
- function de({ href: e, className: t, morphId: i, children: n = "Back", ...o }) {
387
- const s = d(), l = i != null && !s, c = C(l ? i : void 0);
388
- return /* @__PURE__ */ a(I, {
389
- variant: "ghost",
390
- size: "sm",
391
- href: e,
392
- "data-basic-page-back": "",
393
- prefix: l ? /* @__PURE__ */ a(u.span, {
394
- initial: c.fly ? {
395
- opacity: 0,
396
- x: W
397
- } : { opacity: 0 },
398
- animate: c.fly ? {
399
- opacity: 1,
400
- x: 0
401
- } : { opacity: 1 },
402
- transition: c.fly ? X : f,
403
- className: "inline-flex [&>svg]:size-[1.125em] [&>svg]:shrink-0",
404
- children: /* @__PURE__ */ a(N, {})
405
- }) : /* @__PURE__ */ a(N, {}),
406
- className: r("absolute top-4 left-[10.25px]", t),
407
- ...o,
408
- children: l && i != null ? /* @__PURE__ */ a(E, {
409
- morphId: i,
410
- fromClassName: "text-pho-primary",
411
- fly: c.fly,
412
- morphRef: c.ref,
413
- fallback: !0,
414
- children: n
415
- }) : n
416
- });
417
- }
418
- function ye({ label: e, description: t, leading: i, href: n, className: o, children: s, ...l }) {
419
- return /* @__PURE__ */ p(R(), {
420
- href: n,
421
- ...l,
422
- className: r("flex min-h-[4.25rem] min-w-0 flex-row items-center justify-between gap-6 px-5 py-4", "group outline-pho-brand hover:bg-pho-primary-hover cursor-pointer transition-colors focus-visible:outline-2 focus-visible:-outline-offset-2", "first:rounded-t-[calc(var(--radius-base)-1px)] last:rounded-b-[calc(var(--radius-base)-1px)]", o),
423
- children: [/* @__PURE__ */ p("div", {
424
- className: r("flex min-w-0 flex-1 items-center", i != null && "gap-3"),
425
- children: [i, /* @__PURE__ */ p("div", {
426
- className: "min-w-0",
427
- children: [/* @__PURE__ */ a("div", {
428
- className: "flex min-w-0 items-center gap-1",
429
- children: typeof e == "string" || typeof e == "number" ? /* @__PURE__ */ a("p", {
430
- className: "text-pho-primary truncate text-base font-medium",
431
- children: e
432
- }) : e
433
- }), t ? /* @__PURE__ */ a("div", {
434
- className: "text-pho-description truncate text-xs",
435
- children: t
436
- }) : null]
437
- })]
438
- }), /* @__PURE__ */ p("div", {
439
- className: "flex min-w-0 items-center justify-end gap-2",
440
- children: [s != null ? /* @__PURE__ */ a("div", {
441
- className: "min-w-0",
442
- children: s
443
- }) : null, /* @__PURE__ */ a(D, {
444
- "aria-hidden": !0,
445
- className: "text-pho-secondary group-hover:text-pho-secondary-hover size-4 shrink-0 transition-colors"
446
- })]
447
- })]
448
- });
449
- }
450
- var Ee = {
451
- Root: F,
452
- Back: de,
453
- Title: J,
454
- Stack: Q,
455
- Header: Y,
456
- SectionTitle: Z,
457
- Description: ee,
458
- SectionFooter: te,
459
- Card: ie,
460
- Item: ae,
461
- ItemPanel: ne,
462
- Callout: re,
463
- CalloutTitle: oe,
464
- CalloutDescription: se,
465
- Row: le,
466
- RowLink: ye,
467
- Value: ce,
468
- Alert: me,
469
- Footer: ue,
470
- Reveal: fe
471
- };
472
- export {
473
- z as a,
474
- j as i,
475
- B as n,
476
- G as o,
477
- H as r,
478
- Ee as s,
479
- b as t
480
- };
481
-
482
- //# sourceMappingURL=basic-page-Dfln58iw.js.map