@photon-ai/pho-ui 0.7.2 → 1.0.1

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/avatar-CiAvJNNs.js +99 -0
  2. package/dist/chunks/avatar-CiAvJNNs.js.map +1 -0
  3. package/dist/chunks/close-button-8f-oRJXt.js +420 -0
  4. package/dist/chunks/close-button-8f-oRJXt.js.map +1 -0
  5. package/dist/chunks/{cn-7uGUzCOM.js → cn-DTiB6ek_.js} +4 -2
  6. package/dist/chunks/{cn-7uGUzCOM.js.map → cn-DTiB6ek_.js.map} +1 -1
  7. package/dist/chunks/dialog-Bgb2Z1_v.js +141 -0
  8. package/dist/chunks/dialog-Bgb2Z1_v.js.map +1 -0
  9. package/dist/chunks/{input-DbJpdu6v.js → input-BSJGBUbf.js} +36 -36
  10. package/dist/chunks/input-BSJGBUbf.js.map +1 -0
  11. package/dist/chunks/menu-Dan0oRvL.js +208 -0
  12. package/dist/chunks/menu-Dan0oRvL.js.map +1 -0
  13. package/dist/chunks/{sidebar-CivriTLb.js → sidebar-Buhva5xa.js} +13 -13
  14. package/dist/chunks/sidebar-Buhva5xa.js.map +1 -0
  15. package/dist/chunks/spinner-Cy8bkyJf.js +54 -0
  16. package/dist/chunks/spinner-Cy8bkyJf.js.map +1 -0
  17. package/dist/components/accordion.js +21 -21
  18. package/dist/components/accordion.js.map +1 -1
  19. package/dist/components/alert-dialog.js +26 -26
  20. package/dist/components/alert-dialog.js.map +1 -1
  21. package/dist/components/autocomplete.js +46 -46
  22. package/dist/components/autocomplete.js.map +1 -1
  23. package/dist/components/avatar.js +1 -1
  24. package/dist/components/badge.js +1 -1
  25. package/dist/components/button.js +11 -11
  26. package/dist/components/checkbox.js +3 -3
  27. package/dist/components/checkbox.js.map +1 -1
  28. package/dist/components/collapsible.js +8 -8
  29. package/dist/components/collapsible.js.map +1 -1
  30. package/dist/components/combobox.js +69 -69
  31. package/dist/components/combobox.js.map +1 -1
  32. package/dist/components/context-menu.js +55 -39
  33. package/dist/components/context-menu.js.map +1 -1
  34. package/dist/components/dialog.js +3 -2
  35. package/dist/components/drawer.js +15 -15
  36. package/dist/components/drawer.js.map +1 -1
  37. package/dist/components/field.js +18 -18
  38. package/dist/components/field.js.map +1 -1
  39. package/dist/components/fieldset.js +9 -9
  40. package/dist/components/fieldset.js.map +1 -1
  41. package/dist/components/form.js +1 -1
  42. package/dist/components/input.js +1 -1
  43. package/dist/components/kbd.js +6 -6
  44. package/dist/components/kbd.js.map +1 -1
  45. package/dist/components/menu.js +6 -4
  46. package/dist/components/menubar.js +5 -5
  47. package/dist/components/menubar.js.map +1 -1
  48. package/dist/components/meter.js +20 -20
  49. package/dist/components/meter.js.map +1 -1
  50. package/dist/components/navigation-menu.js +8 -8
  51. package/dist/components/navigation-menu.js.map +1 -1
  52. package/dist/components/notification.js +24 -24
  53. package/dist/components/notification.js.map +1 -1
  54. package/dist/components/number-field.js +32 -32
  55. package/dist/components/number-field.js.map +1 -1
  56. package/dist/components/otp-field.js +5 -5
  57. package/dist/components/otp-field.js.map +1 -1
  58. package/dist/components/popover.js +10 -10
  59. package/dist/components/popover.js.map +1 -1
  60. package/dist/components/preview-card.js +8 -8
  61. package/dist/components/preview-card.js.map +1 -1
  62. package/dist/components/progress.js +25 -25
  63. package/dist/components/progress.js.map +1 -1
  64. package/dist/components/radio-group.js +13 -13
  65. package/dist/components/radio-group.js.map +1 -1
  66. package/dist/components/scroll-area.js +1 -1
  67. package/dist/components/select.js +35 -35
  68. package/dist/components/select.js.map +1 -1
  69. package/dist/components/separator.js +1 -1
  70. package/dist/components/slider.js +17 -17
  71. package/dist/components/slider.js.map +1 -1
  72. package/dist/components/spinner.js +6 -0
  73. package/dist/components/switch.js +10 -10
  74. package/dist/components/switch.js.map +1 -1
  75. package/dist/components/tabs.js +16 -16
  76. package/dist/components/tabs.js.map +1 -1
  77. package/dist/components/theme-toggle.js +203 -0
  78. package/dist/components/theme-toggle.js.map +1 -0
  79. package/dist/components/toast.js +24 -24
  80. package/dist/components/toast.js.map +1 -1
  81. package/dist/components/toggle-group.js +1 -1
  82. package/dist/components/toggle.js +5 -5
  83. package/dist/components/toggle.js.map +1 -1
  84. package/dist/components/toolbar.js +8 -8
  85. package/dist/components/toolbar.js.map +1 -1
  86. package/dist/components/tooltip.js +10 -10
  87. package/dist/components/tooltip.js.map +1 -1
  88. package/dist/index.js +29 -28
  89. package/dist/sections/sidebar.js +1 -1
  90. package/dist/src/components/avatar/avatar.d.ts +24 -2
  91. package/dist/src/components/avatar/index.d.ts +1 -1
  92. package/dist/src/components/button/button.d.ts +58 -44
  93. package/dist/src/components/button/index.d.ts +1 -1
  94. package/dist/src/components/dialog/dialog.d.ts +50 -7
  95. package/dist/src/components/dialog/index.d.ts +1 -1
  96. package/dist/src/components/menu/index.d.ts +1 -1
  97. package/dist/src/components/menu/menu-pending.d.ts +43 -0
  98. package/dist/src/components/spinner/index.d.ts +1 -0
  99. package/dist/src/components/spinner/spinner.d.ts +32 -0
  100. package/dist/src/components/theme-toggle/index.d.ts +1 -0
  101. package/dist/src/components/theme-toggle/theme-toggle.d.ts +81 -0
  102. package/dist/src/sections/sidebar/sidebar.d.ts +5 -6
  103. package/dist/utils.js +1 -1
  104. package/package.json +9 -1
  105. package/src/styles/fonts.css +14 -18
  106. package/src/styles/pho.css +5 -1
  107. package/src/styles/theme.css +183 -147
  108. package/dist/chunks/avatar-Bb4RZQIa.js +0 -53
  109. package/dist/chunks/avatar-Bb4RZQIa.js.map +0 -1
  110. package/dist/chunks/button-CQ4cZvkC.js +0 -365
  111. package/dist/chunks/button-CQ4cZvkC.js.map +0 -1
  112. package/dist/chunks/close-button-CNhn8z0w.js +0 -29
  113. package/dist/chunks/close-button-CNhn8z0w.js.map +0 -1
  114. package/dist/chunks/dialog-7oOe-eaO.js +0 -63
  115. package/dist/chunks/dialog-7oOe-eaO.js.map +0 -1
  116. package/dist/chunks/input-DbJpdu6v.js.map +0 -1
  117. package/dist/chunks/menu-BfaNHnOp.js +0 -101
  118. package/dist/chunks/menu-BfaNHnOp.js.map +0 -1
  119. package/dist/chunks/sidebar-CivriTLb.js.map +0 -1
  120. package/dist/src/components/context-menu/context-menu.d.ts +0 -34
  121. package/dist/src/components/menu/menu.d.ts +0 -47
@@ -1,46 +1,46 @@
1
1
  "use client";
2
- import { t as o } from "../chunks/cn-7uGUzCOM.js";
2
+ import { t } from "../chunks/cn-DTiB6ek_.js";
3
3
  import "react";
4
4
  import { jsx as i } from "react/jsx-runtime";
5
- import { Field as t } from "@base-ui/react/field";
6
- function n({ className: r, ...e }) {
7
- return /* @__PURE__ */ i(t.Root, {
8
- className: o("group/field flex flex-col gap-1.5", r),
5
+ import { Field as o } from "@base-ui/react/field";
6
+ function a({ className: r, ...e }) {
7
+ return /* @__PURE__ */ i(o.Root, {
8
+ className: t("group/field flex flex-col gap-1.5", r),
9
9
  ...e
10
10
  });
11
11
  }
12
- function a({ className: r, ...e }) {
13
- return /* @__PURE__ */ i(t.Label, {
14
- className: o("text-pho-secondary cursor-default text-sm font-medium", r),
12
+ function n({ className: r, ...e }) {
13
+ return /* @__PURE__ */ i(o.Label, {
14
+ className: t("text-pho-secondary cursor-default text-base font-medium", r),
15
15
  ...e
16
16
  });
17
17
  }
18
18
  function l({ className: r, ...e }) {
19
- return /* @__PURE__ */ i(t.Control, {
20
- className: o("bg-pho-primary ring-pho-primary text-pho-primary placeholder:text-pho-placeholder text-md w-full rounded-lg px-3 py-2 ring-1 transition-shadow duration-100 ease-linear outline-none ring-inset", "focus-visible:ring-pho-brand focus-visible:ring-2", "data-[invalid]:ring-pho-error-subtle data-[invalid]:focus-visible:ring-pho-error", "disabled:cursor-not-allowed disabled:opacity-50", r),
19
+ return /* @__PURE__ */ i(o.Control, {
20
+ className: t("bg-pho-primary ring-pho-primary text-pho-primary placeholder:text-pho-placeholder text-md rounded-base w-full px-3 py-2 ring-1 transition-shadow duration-100 ease-linear outline-none ring-inset", "focus-visible:ring-pho-brand focus-visible:ring-2", "data-[invalid]:ring-pho-error-subtle data-[invalid]:focus-visible:ring-pho-error", "disabled:cursor-not-allowed disabled:opacity-50", r),
21
21
  ...e
22
22
  });
23
23
  }
24
24
  function s({ className: r, ...e }) {
25
- return /* @__PURE__ */ i(t.Description, {
26
- className: o("text-pho-tertiary text-sm", r),
25
+ return /* @__PURE__ */ i(o.Description, {
26
+ className: t("text-pho-description text-base", r),
27
27
  ...e
28
28
  });
29
29
  }
30
30
  function p({ className: r, ...e }) {
31
- return /* @__PURE__ */ i(t.Error, {
32
- className: o("text-pho-error text-sm", r),
31
+ return /* @__PURE__ */ i(o.Error, {
32
+ className: t("text-pho-error text-base", r),
33
33
  ...e
34
34
  });
35
35
  }
36
36
  var f = {
37
- Root: n,
38
- Label: a,
37
+ Root: a,
38
+ Label: n,
39
39
  Control: l,
40
40
  Description: s,
41
41
  Error: p,
42
- Item: t.Item,
43
- Validity: t.Validity
42
+ Item: o.Item,
43
+ Validity: o.Validity
44
44
  };
45
45
  export {
46
46
  f as Field
@@ -1 +1 @@
1
- {"version":3,"file":"field.js","names":[],"sources":["../../src/components/field/field.tsx"],"sourcesContent":["import { type ComponentProps, type ElementType } from \"react\";\nimport { Field as BaseField } from \"@base-ui/react/field\";\nimport { cn } from \"../../utils/cn\";\n\n/** Override Base UI's `string | (state) => string` className with plain string. */\ntype StyledProps<T extends ElementType> = Omit<\n ComponentProps<T>,\n \"className\"\n> & {\n className?: string;\n};\n\nfunction Root({ className, ...props }: StyledProps<typeof BaseField.Root>) {\n return (\n <BaseField.Root\n className={cn(\"group/field flex flex-col gap-1.5\", className)}\n {...props}\n />\n );\n}\n\nfunction Label({ className, ...props }: StyledProps<typeof BaseField.Label>) {\n return (\n <BaseField.Label\n className={cn(\n \"text-pho-secondary cursor-default text-sm font-medium\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction Control({\n className,\n ...props\n}: StyledProps<typeof BaseField.Control>) {\n return (\n <BaseField.Control\n className={cn(\n // Flat field surface — hairline ring carries the edge (site has no\n // resting shadows outside floating layers).\n \"bg-pho-primary ring-pho-primary text-pho-primary placeholder:text-pho-placeholder text-md w-full rounded-lg px-3 py-2 ring-1 transition-shadow duration-100 ease-linear outline-none ring-inset\",\n \"focus-visible:ring-pho-brand focus-visible:ring-2\",\n \"data-[invalid]:ring-pho-error-subtle data-[invalid]:focus-visible:ring-pho-error\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction Description({\n className,\n ...props\n}: StyledProps<typeof BaseField.Description>) {\n return (\n <BaseField.Description\n className={cn(\"text-pho-tertiary text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction Error({ className, ...props }: StyledProps<typeof BaseField.Error>) {\n return (\n <BaseField.Error\n className={cn(\"text-pho-error text-sm\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Form field built on Base UI `Field`. Wires a label, description, and\n * validation error to a control for you — compose it around `Field.Control`\n * (or any control via `render`). `Field.Error` shows when the control is\n * invalid; `Field.Validity` exposes raw validity for custom messages.\n */\nexport const Field = {\n Root,\n Label,\n Control,\n Description,\n Error,\n Item: BaseField.Item,\n Validity: BaseField.Validity,\n};\n"],"mappings":";;;;;AAYA,SAAS,EAAK,EAAE,WAAA,GAAW,GAAG,EAAA,GAA6C;AACzE,SACE,gBAAA,EAAC,EAAU,MAAX;AAAA,IACE,WAAW,EAAG,qCAAqC,CAAS;AAAA,IAC5D,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,WAAA,GAAW,GAAG,EAAA,GAA8C;AAC3E,SACE,gBAAA,EAAC,EAAU,OAAX;AAAA,IACE,WAAW,EACT,yDACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAQ,EACf,WAAA,GACA,GAAG,EAAA,GACqC;AACxC,SACE,gBAAA,EAAC,EAAU,SAAX;AAAA,IACE,WAAW,EAGT,mMACA,qDACA,oFACA,mDACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAY,EACnB,WAAA,GACA,GAAG,EAAA,GACyC;AAC5C,SACE,gBAAA,EAAC,EAAU,aAAX;AAAA,IACE,WAAW,EAAG,6BAA6B,CAAS;AAAA,IACpD,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,WAAA,GAAW,GAAG,EAAA,GAA8C;AAC3E,SACE,gBAAA,EAAC,EAAU,OAAX;AAAA,IACE,WAAW,EAAG,0BAA0B,CAAS;AAAA,IACjD,GAAI;AAAA,EACL,CAAA;AAEL;AAQA,IAAa,IAAQ;AAAA,EACnB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAM,EAAU;AAAA,EAChB,UAAU,EAAU;AACtB"}
1
+ {"version":3,"file":"field.js","names":[],"sources":["../../src/components/field/field.tsx"],"sourcesContent":["import { type ComponentProps, type ElementType } from \"react\";\nimport { Field as BaseField } from \"@base-ui/react/field\";\nimport { cn } from \"../../utils/cn\";\n\n/** Override Base UI's `string | (state) => string` className with plain string. */\ntype StyledProps<T extends ElementType> = Omit<\n ComponentProps<T>,\n \"className\"\n> & {\n className?: string;\n};\n\nfunction Root({ className, ...props }: StyledProps<typeof BaseField.Root>) {\n return (\n <BaseField.Root\n className={cn(\"group/field flex flex-col gap-1.5\", className)}\n {...props}\n />\n );\n}\n\nfunction Label({ className, ...props }: StyledProps<typeof BaseField.Label>) {\n return (\n <BaseField.Label\n className={cn(\n \"text-pho-secondary cursor-default text-base font-medium\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction Control({\n className,\n ...props\n}: StyledProps<typeof BaseField.Control>) {\n return (\n <BaseField.Control\n className={cn(\n // Flat field surface — hairline ring carries the edge (site has no\n // resting shadows outside floating layers).\n \"bg-pho-primary ring-pho-primary text-pho-primary placeholder:text-pho-placeholder text-md rounded-base w-full px-3 py-2 ring-1 transition-shadow duration-100 ease-linear outline-none ring-inset\",\n \"focus-visible:ring-pho-brand focus-visible:ring-2\",\n \"data-[invalid]:ring-pho-error-subtle data-[invalid]:focus-visible:ring-pho-error\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction Description({\n className,\n ...props\n}: StyledProps<typeof BaseField.Description>) {\n return (\n <BaseField.Description\n className={cn(\"text-pho-description text-base\", className)}\n {...props}\n />\n );\n}\n\nfunction Error({ className, ...props }: StyledProps<typeof BaseField.Error>) {\n return (\n <BaseField.Error\n className={cn(\"text-pho-error text-base\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Form field built on Base UI `Field`. Wires a label, description, and\n * validation error to a control for you — compose it around `Field.Control`\n * (or any control via `render`). `Field.Error` shows when the control is\n * invalid; `Field.Validity` exposes raw validity for custom messages.\n */\nexport const Field = {\n Root,\n Label,\n Control,\n Description,\n Error,\n Item: BaseField.Item,\n Validity: BaseField.Validity,\n};\n"],"mappings":";;;;;AAYA,SAAS,EAAK,EAAE,WAAA,GAAW,GAAG,EAAA,GAA6C;AACzE,SACE,gBAAA,EAAC,EAAU,MAAX;AAAA,IACE,WAAW,EAAG,qCAAqC,CAAS;AAAA,IAC5D,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,WAAA,GAAW,GAAG,EAAA,GAA8C;AAC3E,SACE,gBAAA,EAAC,EAAU,OAAX;AAAA,IACE,WAAW,EACT,2DACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAQ,EACf,WAAA,GACA,GAAG,EAAA,GACqC;AACxC,SACE,gBAAA,EAAC,EAAU,SAAX;AAAA,IACE,WAAW,EAGT,qMACA,qDACA,oFACA,mDACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAY,EACnB,WAAA,GACA,GAAG,EAAA,GACyC;AAC5C,SACE,gBAAA,EAAC,EAAU,aAAX;AAAA,IACE,WAAW,EAAG,kCAAkC,CAAS;AAAA,IACzD,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,WAAA,GAAW,GAAG,EAAA,GAA8C;AAC3E,SACE,gBAAA,EAAC,EAAU,OAAX;AAAA,IACE,WAAW,EAAG,4BAA4B,CAAS;AAAA,IACnD,GAAI;AAAA,EACL,CAAA;AAEL;AAQA,IAAa,IAAQ;AAAA,EACnB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAM,EAAU;AAAA,EAChB,UAAU,EAAU;AACtB"}
@@ -1,23 +1,23 @@
1
1
  "use client";
2
- import { t as o } from "../chunks/cn-7uGUzCOM.js";
2
+ import { t as o } from "../chunks/cn-DTiB6ek_.js";
3
3
  import "react";
4
4
  import { jsx as r } from "react/jsx-runtime";
5
- import { Fieldset as s } from "@base-ui/react/fieldset";
6
- function i({ className: e, ...t }) {
7
- return /* @__PURE__ */ r(s.Root, {
5
+ import { Fieldset as i } from "@base-ui/react/fieldset";
6
+ function m({ className: e, ...t }) {
7
+ return /* @__PURE__ */ r(i.Root, {
8
8
  className: o("flex flex-col gap-4", e),
9
9
  ...t
10
10
  });
11
11
  }
12
- function m({ className: e, ...t }) {
13
- return /* @__PURE__ */ r(s.Legend, {
14
- className: o("text-pho-primary text-sm font-semibold", e),
12
+ function s({ className: e, ...t }) {
13
+ return /* @__PURE__ */ r(i.Legend, {
14
+ className: o("text-pho-primary text-base font-medium", e),
15
15
  ...t
16
16
  });
17
17
  }
18
18
  var p = {
19
- Root: i,
20
- Legend: m
19
+ Root: m,
20
+ Legend: s
21
21
  };
22
22
  export {
23
23
  p as Fieldset
@@ -1 +1 @@
1
- {"version":3,"file":"fieldset.js","names":[],"sources":["../../src/components/fieldset/fieldset.tsx"],"sourcesContent":["import { type ComponentProps, type ElementType } from \"react\";\nimport { Fieldset as BaseFieldset } from \"@base-ui/react/fieldset\";\nimport { cn } from \"../../utils/cn\";\n\n/** Override Base UI's `string | (state) => string` className with plain string. */\ntype StyledProps<T extends ElementType> = Omit<\n ComponentProps<T>,\n \"className\"\n> & {\n className?: string;\n};\n\nfunction Root({ className, ...props }: StyledProps<typeof BaseFieldset.Root>) {\n return (\n <BaseFieldset.Root\n className={cn(\"flex flex-col gap-4\", className)}\n {...props}\n />\n );\n}\n\nfunction Legend({\n className,\n ...props\n}: StyledProps<typeof BaseFieldset.Legend>) {\n return (\n <BaseFieldset.Legend\n className={cn(\"text-pho-primary text-sm font-semibold\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Groups related fields under a shared legend, built on Base UI `Fieldset`.\n * Use it to title a cluster of inputs (e.g. \"Billing address\") so the grouping\n * is announced to assistive tech.\n */\nexport const Fieldset = { Root, Legend };\n"],"mappings":";;;;;AAYA,SAAS,EAAK,EAAE,WAAA,GAAW,GAAG,EAAA,GAAgD;AAC5E,SACE,gBAAA,EAAC,EAAa,MAAd;AAAA,IACE,WAAW,EAAG,uBAAuB,CAAS;AAAA,IAC9C,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAO,EACd,WAAA,GACA,GAAG,EAAA,GACuC;AAC1C,SACE,gBAAA,EAAC,EAAa,QAAd;AAAA,IACE,WAAW,EAAG,0CAA0C,CAAS;AAAA,IACjE,GAAI;AAAA,EACL,CAAA;AAEL;AAOA,IAAa,IAAW;AAAA,EAAE,MAAA;AAAA,EAAM,QAAA;AAAO"}
1
+ {"version":3,"file":"fieldset.js","names":[],"sources":["../../src/components/fieldset/fieldset.tsx"],"sourcesContent":["import { type ComponentProps, type ElementType } from \"react\";\nimport { Fieldset as BaseFieldset } from \"@base-ui/react/fieldset\";\nimport { cn } from \"../../utils/cn\";\n\n/** Override Base UI's `string | (state) => string` className with plain string. */\ntype StyledProps<T extends ElementType> = Omit<\n ComponentProps<T>,\n \"className\"\n> & {\n className?: string;\n};\n\nfunction Root({ className, ...props }: StyledProps<typeof BaseFieldset.Root>) {\n return (\n <BaseFieldset.Root\n className={cn(\"flex flex-col gap-4\", className)}\n {...props}\n />\n );\n}\n\nfunction Legend({\n className,\n ...props\n}: StyledProps<typeof BaseFieldset.Legend>) {\n return (\n <BaseFieldset.Legend\n className={cn(\"text-pho-primary text-base font-medium\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Groups related fields under a shared legend, built on Base UI `Fieldset`.\n * Use it to title a cluster of inputs (e.g. \"Billing address\") so the grouping\n * is announced to assistive tech.\n */\nexport const Fieldset = { Root, Legend };\n"],"mappings":";;;;;AAYA,SAAS,EAAK,EAAE,WAAA,GAAW,GAAG,EAAA,GAAgD;AAC5E,SACE,gBAAA,EAAC,EAAa,MAAd;AAAA,IACE,WAAW,EAAG,uBAAuB,CAAS;AAAA,IAC9C,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAO,EACd,WAAA,GACA,GAAG,EAAA,GACuC;AAC1C,SACE,gBAAA,EAAC,EAAa,QAAd;AAAA,IACE,WAAW,EAAG,0CAA0C,CAAS;AAAA,IACjE,GAAI;AAAA,EACL,CAAA;AAEL;AAOA,IAAa,IAAW;AAAA,EAAE,MAAA;AAAA,EAAM,QAAA;AAAO"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as m } from "../chunks/cn-7uGUzCOM.js";
2
+ import { t as m } from "../chunks/cn-DTiB6ek_.js";
3
3
  import "react";
4
4
  import { jsx as t } from "react/jsx-runtime";
5
5
  import { Form as e } from "@base-ui/react/form";
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as e } from "../chunks/input-DbJpdu6v.js";
2
+ import { t as e } from "../chunks/input-BSJGBUbf.js";
3
3
  export {
4
4
  e as Input
5
5
  };
@@ -1,18 +1,18 @@
1
1
  "use client";
2
- import { t as i } from "../chunks/cn-7uGUzCOM.js";
2
+ import { t as i } from "../chunks/cn-DTiB6ek_.js";
3
3
  import "react";
4
4
  import { jsx as o } from "react/jsx-runtime";
5
- var m = "inline-flex h-4 min-w-4 items-center justify-center rounded-[3px] px-1 font-mono text-xs font-medium text-pho-quaternary ring-1 ring-pho-secondary ring-inset select-none";
6
- function s({ keys: e, className: n, children: t, ...r }) {
5
+ var s = "inline-flex h-4 min-w-4 items-center justify-center rounded-[3px] px-1 font-mono text-xs font-medium text-pho-secondary ring-1 ring-pho-secondary ring-inset select-none";
6
+ function m({ keys: e, className: n, children: t, ...r }) {
7
7
  return /* @__PURE__ */ o("kbd", {
8
- className: i(m, n),
8
+ className: i(s, n),
9
9
  ...r,
10
10
  children: t ?? e
11
11
  });
12
12
  }
13
- s.displayName = "Kbd";
13
+ m.displayName = "Kbd";
14
14
  export {
15
- s as Kbd
15
+ m as Kbd
16
16
  };
17
17
 
18
18
  //# sourceMappingURL=kbd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"kbd.js","names":[],"sources":["../../src/components/kbd/kbd.tsx"],"sourcesContent":["import { type ComponentProps } from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n/** A single keycap surface — a mono-label pill with the site hairline (ring-pho-secondary) in the quaternary ink. */\nconst KBD_CLASS =\n \"inline-flex h-4 min-w-4 items-center justify-center rounded-[3px] px-1 font-mono text-xs font-medium text-pho-quaternary ring-1 ring-pho-secondary ring-inset select-none\";\n\ninterface KbdBaseProps {\n /** Convenience string for the key(s) to show, e.g. \"⌘K\". Ignored when `children` are provided. */\n keys?: string;\n}\n\nexport interface KbdProps\n extends KbdBaseProps, Omit<ComponentProps<\"kbd\">, keyof KbdBaseProps> {}\n\n/**\n * Kbd — a keyboard keycap for documenting a shortcut (`⌘K`, `Esc`, `↵`). Supply\n * the key via `children` or the `keys` string; for a chord, place several in a\n * row (`Press ⌘ K`). It's purely presentational and carries no interaction — to\n * actually trigger a shortcut, wire a key handler on the target control.\n */\nexport function Kbd({ keys, className, children, ...props }: KbdProps) {\n return (\n <kbd className={cn(KBD_CLASS, className)} {...props}>\n {children ?? keys}\n </kbd>\n );\n}\n\nKbd.displayName = \"Kbd\";\n"],"mappings":";;;;AAIA,IAAM,IACJ;AAgBF,SAAgB,EAAI,EAAE,MAAA,GAAM,WAAA,GAAW,UAAA,GAAU,GAAG,EAAA,GAAmB;AACrE,SACE,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW,EAAG,GAAW,CAAS;AAAA,IAAG,GAAI;AAAA,cAC3C,KAAY;AAAA,EACV,CAAA;AAET;AAEA,EAAI,cAAc"}
1
+ {"version":3,"file":"kbd.js","names":[],"sources":["../../src/components/kbd/kbd.tsx"],"sourcesContent":["import { type ComponentProps } from \"react\";\nimport { cn } from \"../../utils/cn\";\n\n/** A single keycap surface — a mono-label pill with the site hairline (ring-pho-secondary) in secondary ink. */\nconst KBD_CLASS =\n \"inline-flex h-4 min-w-4 items-center justify-center rounded-[3px] px-1 font-mono text-xs font-medium text-pho-secondary ring-1 ring-pho-secondary ring-inset select-none\";\n\ninterface KbdBaseProps {\n /** Convenience string for the key(s) to show, e.g. \"⌘K\". Ignored when `children` are provided. */\n keys?: string;\n}\n\nexport interface KbdProps\n extends KbdBaseProps, Omit<ComponentProps<\"kbd\">, keyof KbdBaseProps> {}\n\n/**\n * Kbd — a keyboard keycap for documenting a shortcut (`⌘K`, `Esc`, `↵`). Supply\n * the key via `children` or the `keys` string; for a chord, place several in a\n * row (`Press ⌘ K`). It's purely presentational and carries no interaction — to\n * actually trigger a shortcut, wire a key handler on the target control.\n */\nexport function Kbd({ keys, className, children, ...props }: KbdProps) {\n return (\n <kbd className={cn(KBD_CLASS, className)} {...props}>\n {children ?? keys}\n </kbd>\n );\n}\n\nKbd.displayName = \"Kbd\";\n"],"mappings":";;;;AAIA,IAAM,IACJ;AAgBF,SAAgB,EAAI,EAAE,MAAA,GAAM,WAAA,GAAW,UAAA,GAAU,GAAG,EAAA,GAAmB;AACrE,SACE,gBAAA,EAAC,OAAD;AAAA,IAAK,WAAW,EAAG,GAAW,CAAS;AAAA,IAAG,GAAI;AAAA,cAC3C,KAAY;AAAA,EACV,CAAA;AAET;AAEA,EAAI,cAAc"}
@@ -1,7 +1,9 @@
1
1
  "use client";
2
- import { n as r, r as s, t } from "../chunks/menu-BfaNHnOp.js";
2
+ import { i as e, n as M, r as n, s as a, t as E } from "../chunks/menu-Dan0oRvL.js";
3
3
  export {
4
- t as MENU_ITEM,
5
- r as MENU_POPUP,
6
- s as Menu
4
+ E as MENU_ITEM,
5
+ M as MENU_ITEM_COLORS,
6
+ n as MENU_POPUP,
7
+ e as Menu,
8
+ a as useMenuPending
7
9
  };
@@ -1,11 +1,11 @@
1
1
  "use client";
2
- import { t as o } from "../chunks/cn-7uGUzCOM.js";
2
+ import { t as o } from "../chunks/cn-DTiB6ek_.js";
3
3
  import "react";
4
- import { jsx as n } from "react/jsx-runtime";
5
- import { Menubar as a } from "@base-ui/react/menubar";
4
+ import { jsx as a } from "react/jsx-runtime";
5
+ import { Menubar as n } from "@base-ui/react/menubar";
6
6
  function i({ className: r, ...e }) {
7
- return /* @__PURE__ */ n(a, {
8
- className: o("squircle border-pho-secondary bg-pho-primary inline-flex items-center gap-1 rounded-lg border p-1", r),
7
+ return /* @__PURE__ */ a(n, {
8
+ className: o("border-pho-secondary bg-pho-primary rounded-base inline-flex items-center gap-1 border p-1", r),
9
9
  ...e
10
10
  });
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"menubar.js","names":[],"sources":["../../src/components/menubar/menubar.tsx"],"sourcesContent":["import { type ComponentProps } from \"react\";\nimport { Menubar as BaseMenubar } from \"@base-ui/react/menubar\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface MenubarProps extends Omit<\n ComponentProps<typeof BaseMenubar>,\n \"className\"\n> {\n className?: string;\n}\n\n/**\n * Horizontal bar of top-level menus, built on Base UI `Menubar` — the classic\n * desktop-app menu strip (File / Edit / View). Place `Menu` components inside;\n * the menubar coordinates roving focus and lets open menus switch on hover.\n */\nexport function Menubar({ className, ...props }: MenubarProps) {\n return (\n <BaseMenubar\n className={cn(\n // Static app chrome, not a floating layer — flat, the hairline border\n // carries the edge (shadows are reserved for the menus it opens).\n \"squircle border-pho-secondary bg-pho-primary inline-flex items-center gap-1 rounded-lg border p-1\",\n className,\n )}\n {...props}\n />\n );\n}\n\nMenubar.displayName = \"Menubar\";\n"],"mappings":";;;;;AAgBA,SAAgB,EAAQ,EAAE,WAAA,GAAW,GAAG,EAAA,GAAuB;AAC7D,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,WAAW,EAGT,qGACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,EAAQ,cAAc"}
1
+ {"version":3,"file":"menubar.js","names":[],"sources":["../../src/components/menubar/menubar.tsx"],"sourcesContent":["import { type ComponentProps } from \"react\";\nimport { Menubar as BaseMenubar } from \"@base-ui/react/menubar\";\nimport { cn } from \"../../utils/cn\";\n\nexport interface MenubarProps extends Omit<\n ComponentProps<typeof BaseMenubar>,\n \"className\"\n> {\n className?: string;\n}\n\n/**\n * Horizontal bar of top-level menus, built on Base UI `Menubar` — the classic\n * desktop-app menu strip (File / Edit / View). Place `Menu` components inside;\n * the menubar coordinates roving focus and lets open menus switch on hover.\n */\nexport function Menubar({ className, ...props }: MenubarProps) {\n return (\n <BaseMenubar\n className={cn(\n // Static app chrome, not a floating layer — flat, the hairline border\n // carries the edge (shadows are reserved for the menus it opens).\n \"border-pho-secondary bg-pho-primary rounded-base inline-flex items-center gap-1 border p-1\",\n className,\n )}\n {...props}\n />\n );\n}\n\nMenubar.displayName = \"Menubar\";\n"],"mappings":";;;;;AAgBA,SAAgB,EAAQ,EAAE,WAAA,GAAW,GAAG,EAAA,GAAuB;AAC7D,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,WAAW,EAGT,8FACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,EAAQ,cAAc"}
@@ -1,44 +1,44 @@
1
1
  "use client";
2
- import { t as r } from "../chunks/cn-7uGUzCOM.js";
2
+ import { t as r } from "../chunks/cn-DTiB6ek_.js";
3
3
  import "react";
4
4
  import { jsx as o } from "react/jsx-runtime";
5
5
  import { Meter as a } from "@base-ui/react/meter";
6
- function l({ className: t, ...e }) {
6
+ function n({ className: e, ...t }) {
7
7
  return /* @__PURE__ */ o(a.Root, {
8
- className: r("flex w-full flex-col gap-2", t),
9
- ...e
8
+ className: r("flex w-full flex-col gap-2", e),
9
+ ...t
10
10
  });
11
11
  }
12
- function n({ className: t, ...e }) {
12
+ function l({ className: e, ...t }) {
13
13
  return /* @__PURE__ */ o(a.Label, {
14
- className: r("text-pho-secondary text-sm font-medium", t),
15
- ...e
14
+ className: r("text-pho-secondary text-base font-medium", e),
15
+ ...t
16
16
  });
17
17
  }
18
- function u({ className: t, ...e }) {
18
+ function u({ className: e, ...t }) {
19
19
  return /* @__PURE__ */ o(a.Value, {
20
- className: r("text-pho-tertiary text-sm tabular-nums", t),
21
- ...e
20
+ className: r("text-pho-secondary text-base tabular-nums", e),
21
+ ...t
22
22
  });
23
23
  }
24
- function i({ className: t, ...e }) {
24
+ function s({ className: e, ...t }) {
25
25
  return /* @__PURE__ */ o(a.Track, {
26
- className: r("bg-pho-tertiary relative h-2 w-full overflow-hidden rounded-full", t),
27
- ...e
26
+ className: r("bg-pho-secondary relative h-2 w-full overflow-hidden rounded-full", e),
27
+ ...t
28
28
  });
29
29
  }
30
- function s({ className: t, ...e }) {
30
+ function c({ className: e, ...t }) {
31
31
  return /* @__PURE__ */ o(a.Indicator, {
32
- className: r("bg-pho-brand-solid h-full rounded-full transition-all duration-200 ease-out", t),
33
- ...e
32
+ className: r("bg-pho-brand-solid h-full rounded-full transition-all duration-200 ease-out", e),
33
+ ...t
34
34
  });
35
35
  }
36
36
  var p = {
37
- Root: l,
38
- Label: n,
37
+ Root: n,
38
+ Label: l,
39
39
  Value: u,
40
- Track: i,
41
- Indicator: s
40
+ Track: s,
41
+ Indicator: c
42
42
  };
43
43
  export {
44
44
  p as Meter
@@ -1 +1 @@
1
- {"version":3,"file":"meter.js","names":[],"sources":["../../src/components/meter/meter.tsx"],"sourcesContent":["import { type ComponentProps, type ElementType } from \"react\";\nimport { Meter as BaseMeter } from \"@base-ui/react/meter\";\nimport { cn } from \"../../utils/cn\";\n\n/** Override Base UI's `string | (state) => string` className with plain string. */\ntype StyledProps<T extends ElementType> = Omit<\n ComponentProps<T>,\n \"className\"\n> & {\n className?: string;\n};\n\nfunction Root({ className, ...props }: StyledProps<typeof BaseMeter.Root>) {\n return (\n <BaseMeter.Root\n className={cn(\"flex w-full flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction Label({ className, ...props }: StyledProps<typeof BaseMeter.Label>) {\n return (\n <BaseMeter.Label\n className={cn(\"text-pho-secondary text-sm font-medium\", className)}\n {...props}\n />\n );\n}\n\nfunction Value({ className, ...props }: StyledProps<typeof BaseMeter.Value>) {\n return (\n <BaseMeter.Value\n className={cn(\"text-pho-tertiary text-sm tabular-nums\", className)}\n {...props}\n />\n );\n}\n\nfunction Track({ className, ...props }: StyledProps<typeof BaseMeter.Track>) {\n return (\n <BaseMeter.Track\n className={cn(\n \"bg-pho-tertiary relative h-2 w-full overflow-hidden rounded-full\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction Indicator({\n className,\n ...props\n}: StyledProps<typeof BaseMeter.Indicator>) {\n return (\n <BaseMeter.Indicator\n className={cn(\n \"bg-pho-brand-solid h-full rounded-full transition-all duration-200 ease-out\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/**\n * Meter built on Base UI `Meter`. Unlike `Progress`, a meter shows a static\n * measurement within a known range (disk usage, score, capacity) rather than\n * task completion. Set `value` on `Meter.Root`.\n */\nexport const Meter = { Root, Label, Value, Track, Indicator };\n"],"mappings":";;;;;AAYA,SAAS,EAAK,EAAE,WAAA,GAAW,GAAG,EAAA,GAA6C;AACzE,SACE,gBAAA,EAAC,EAAU,MAAX;AAAA,IACE,WAAW,EAAG,8BAA8B,CAAS;AAAA,IACrD,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,WAAA,GAAW,GAAG,EAAA,GAA8C;AAC3E,SACE,gBAAA,EAAC,EAAU,OAAX;AAAA,IACE,WAAW,EAAG,0CAA0C,CAAS;AAAA,IACjE,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,WAAA,GAAW,GAAG,EAAA,GAA8C;AAC3E,SACE,gBAAA,EAAC,EAAU,OAAX;AAAA,IACE,WAAW,EAAG,0CAA0C,CAAS;AAAA,IACjE,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,WAAA,GAAW,GAAG,EAAA,GAA8C;AAC3E,SACE,gBAAA,EAAC,EAAU,OAAX;AAAA,IACE,WAAW,EACT,oEACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAU,EACjB,WAAA,GACA,GAAG,EAAA,GACuC;AAC1C,SACE,gBAAA,EAAC,EAAU,WAAX;AAAA,IACE,WAAW,EACT,+EACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAOA,IAAa,IAAQ;AAAA,EAAE,MAAA;AAAA,EAAM,OAAA;AAAA,EAAO,OAAA;AAAA,EAAO,OAAA;AAAA,EAAO,WAAA;AAAU"}
1
+ {"version":3,"file":"meter.js","names":[],"sources":["../../src/components/meter/meter.tsx"],"sourcesContent":["import { type ComponentProps, type ElementType } from \"react\";\nimport { Meter as BaseMeter } from \"@base-ui/react/meter\";\nimport { cn } from \"../../utils/cn\";\n\n/** Override Base UI's `string | (state) => string` className with plain string. */\ntype StyledProps<T extends ElementType> = Omit<\n ComponentProps<T>,\n \"className\"\n> & {\n className?: string;\n};\n\nfunction Root({ className, ...props }: StyledProps<typeof BaseMeter.Root>) {\n return (\n <BaseMeter.Root\n className={cn(\"flex w-full flex-col gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction Label({ className, ...props }: StyledProps<typeof BaseMeter.Label>) {\n return (\n <BaseMeter.Label\n className={cn(\"text-pho-secondary text-base font-medium\", className)}\n {...props}\n />\n );\n}\n\nfunction Value({ className, ...props }: StyledProps<typeof BaseMeter.Value>) {\n return (\n <BaseMeter.Value\n className={cn(\"text-pho-secondary text-base tabular-nums\", className)}\n {...props}\n />\n );\n}\n\nfunction Track({ className, ...props }: StyledProps<typeof BaseMeter.Track>) {\n return (\n <BaseMeter.Track\n className={cn(\n \"bg-pho-secondary relative h-2 w-full overflow-hidden rounded-full\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction Indicator({\n className,\n ...props\n}: StyledProps<typeof BaseMeter.Indicator>) {\n return (\n <BaseMeter.Indicator\n className={cn(\n \"bg-pho-brand-solid h-full rounded-full transition-all duration-200 ease-out\",\n className,\n )}\n {...props}\n />\n );\n}\n\n/**\n * Meter built on Base UI `Meter`. Unlike `Progress`, a meter shows a static\n * measurement within a known range (disk usage, score, capacity) rather than\n * task completion. Set `value` on `Meter.Root`.\n */\nexport const Meter = { Root, Label, Value, Track, Indicator };\n"],"mappings":";;;;;AAYA,SAAS,EAAK,EAAE,WAAA,GAAW,GAAG,EAAA,GAA6C;AACzE,SACE,gBAAA,EAAC,EAAU,MAAX;AAAA,IACE,WAAW,EAAG,8BAA8B,CAAS;AAAA,IACrD,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,WAAA,GAAW,GAAG,EAAA,GAA8C;AAC3E,SACE,gBAAA,EAAC,EAAU,OAAX;AAAA,IACE,WAAW,EAAG,4CAA4C,CAAS;AAAA,IACnE,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,WAAA,GAAW,GAAG,EAAA,GAA8C;AAC3E,SACE,gBAAA,EAAC,EAAU,OAAX;AAAA,IACE,WAAW,EAAG,6CAA6C,CAAS;AAAA,IACpE,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,WAAA,GAAW,GAAG,EAAA,GAA8C;AAC3E,SACE,gBAAA,EAAC,EAAU,OAAX;AAAA,IACE,WAAW,EACT,qEACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAU,EACjB,WAAA,GACA,GAAG,EAAA,GACuC;AAC1C,SACE,gBAAA,EAAC,EAAU,WAAX;AAAA,IACE,WAAW,EACT,+EACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAOA,IAAa,IAAQ;AAAA,EAAE,MAAA;AAAA,EAAM,OAAA;AAAA,EAAO,OAAA;AAAA,EAAO,OAAA;AAAA,EAAO,WAAA;AAAU"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as n } from "../chunks/cn-7uGUzCOM.js";
2
+ import { t as n } from "../chunks/cn-DTiB6ek_.js";
3
3
  import "react";
4
4
  import { jsx as i } from "react/jsx-runtime";
5
5
  import { NavigationMenu as e } from "@base-ui/react/navigation-menu";
@@ -18,7 +18,7 @@ function s({ className: t, ...o }) {
18
18
  var p = e.Item, u = e.Icon;
19
19
  function l({ className: t, ...o }) {
20
20
  return /* @__PURE__ */ i(e.Trigger, {
21
- className: n("outline-pho-brand text-pho-secondary hover:bg-pho-ghost-hover data-[popup-open]:bg-pho-ghost-hover inline-flex cursor-pointer items-center gap-1 rounded-md px-3 py-2 text-sm font-medium transition focus-visible:outline-2 focus-visible:-outline-offset-1", "[&>svg]:size-4 [&>svg]:transition-transform [&>svg]:duration-150 data-[popup-open]:[&>svg]:rotate-180", t),
21
+ className: n("outline-pho-brand text-pho-secondary hover:bg-pho-ghost-hover data-[popup-open]:bg-pho-ghost-hover inline-flex cursor-pointer items-center gap-1 rounded-sm px-3 py-2 text-base font-medium transition focus-visible:outline-2 focus-visible:-outline-offset-1", "[&>svg]:size-4 [&>svg]:transition-transform [&>svg]:duration-150 data-[popup-open]:[&>svg]:rotate-180", t),
22
22
  ...o
23
23
  });
24
24
  }
@@ -30,12 +30,12 @@ function c({ className: t, ...o }) {
30
30
  }
31
31
  function g({ className: t, ...o }) {
32
32
  return /* @__PURE__ */ i(e.Link, {
33
- className: n("outline-pho-brand text-pho-secondary hover:bg-pho-ghost-hover hover:text-pho-primary block rounded-lg px-3 py-2 text-sm transition focus-visible:outline-2 focus-visible:-outline-offset-1", t),
33
+ className: n("outline-pho-brand text-pho-secondary hover:bg-pho-ghost-hover hover:text-pho-primary rounded-base block px-3 py-2 text-base transition focus-visible:outline-2 focus-visible:-outline-offset-1", t),
34
34
  ...o
35
35
  });
36
36
  }
37
- var m = e.Portal;
38
- function h({ className: t, sideOffset: o = 8, ...r }) {
37
+ var h = e.Portal;
38
+ function m({ className: t, sideOffset: o = 8, ...r }) {
39
39
  return /* @__PURE__ */ i(e.Positioner, {
40
40
  sideOffset: o,
41
41
  className: n("z-50", t),
@@ -44,7 +44,7 @@ function h({ className: t, sideOffset: o = 8, ...r }) {
44
44
  }
45
45
  function f({ className: t, ...o }) {
46
46
  return /* @__PURE__ */ i(e.Popup, {
47
- className: n("squircle bg-pho-primary text-pho-primary shadow-pho-lg ring-pho-secondary relative h-[var(--popup-height)] w-[var(--popup-width)] origin-[var(--transform-origin)] rounded-xl ring-1 transition-[opacity,transform,width,height] duration-150 ease-out outline-none ring-inset", "data-[starting-style]:scale-95 data-[starting-style]:opacity-0", "data-[ending-style]:scale-95 data-[ending-style]:opacity-0", t),
47
+ className: n("bg-pho-primary text-pho-primary shadow-pho-lg ring-pho-secondary rounded-base relative h-[var(--popup-height)] w-[var(--popup-width)] origin-[var(--transform-origin)] ring-1 transition-[opacity,transform,width,height] duration-150 ease-out outline-none ring-inset", "data-[starting-style]:scale-95 data-[starting-style]:opacity-0", "data-[ending-style]:scale-95 data-[ending-style]:opacity-0", t),
48
48
  ...o
49
49
  });
50
50
  }
@@ -62,8 +62,8 @@ var N = {
62
62
  Content: c,
63
63
  Link: g,
64
64
  Icon: u,
65
- Portal: m,
66
- Positioner: h,
65
+ Portal: h,
66
+ Positioner: m,
67
67
  Popup: f,
68
68
  Viewport: v
69
69
  };
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-menu.js","names":[],"sources":["../../src/components/navigation-menu/navigation-menu.tsx"],"sourcesContent":["import { type ComponentProps, type ElementType } from \"react\";\nimport { NavigationMenu as BaseNav } from \"@base-ui/react/navigation-menu\";\nimport { cn } from \"../../utils/cn\";\n\n/** Override Base UI's `string | (state) => string` className with plain string. */\ntype StyledProps<T extends ElementType> = Omit<\n ComponentProps<T>,\n \"className\"\n> & {\n className?: string;\n};\n\nfunction Root({ className, ...props }: StyledProps<typeof BaseNav.Root>) {\n return (\n <BaseNav.Root className={cn(\"relative min-w-max\", className)} {...props} />\n );\n}\n\nfunction List({ className, ...props }: StyledProps<typeof BaseNav.List>) {\n return (\n <BaseNav.List\n className={cn(\"relative flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nconst Item = BaseNav.Item;\nconst Icon = BaseNav.Icon;\n\nfunction Trigger({ className, ...props }: StyledProps<typeof BaseNav.Trigger>) {\n return (\n <BaseNav.Trigger\n className={cn(\n \"outline-pho-brand text-pho-secondary hover:bg-pho-ghost-hover data-[popup-open]:bg-pho-ghost-hover inline-flex cursor-pointer items-center gap-1 rounded-md px-3 py-2 text-sm font-medium transition focus-visible:outline-2 focus-visible:-outline-offset-1\",\n \"[&>svg]:size-4 [&>svg]:transition-transform [&>svg]:duration-150 data-[popup-open]:[&>svg]:rotate-180\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction Content({ className, ...props }: StyledProps<typeof BaseNav.Content>) {\n return <BaseNav.Content className={cn(\"w-full p-2\", className)} {...props} />;\n}\n\nfunction Link({ className, ...props }: StyledProps<typeof BaseNav.Link>) {\n return (\n <BaseNav.Link\n className={cn(\n \"outline-pho-brand text-pho-secondary hover:bg-pho-ghost-hover hover:text-pho-primary block rounded-lg px-3 py-2 text-sm transition focus-visible:outline-2 focus-visible:-outline-offset-1\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst Portal = BaseNav.Portal;\n\nfunction Positioner({\n className,\n sideOffset = 8,\n ...props\n}: StyledProps<typeof BaseNav.Positioner>) {\n return (\n <BaseNav.Positioner\n sideOffset={sideOffset}\n className={cn(\"z-50\", className)}\n {...props}\n />\n );\n}\n\nfunction Popup({ className, ...props }: StyledProps<typeof BaseNav.Popup>) {\n return (\n <BaseNav.Popup\n className={cn(\n \"squircle bg-pho-primary text-pho-primary shadow-pho-lg ring-pho-secondary relative h-[var(--popup-height)] w-[var(--popup-width)] origin-[var(--transform-origin)] rounded-xl ring-1 transition-[opacity,transform,width,height] duration-150 ease-out outline-none ring-inset\",\n \"data-[starting-style]:scale-95 data-[starting-style]:opacity-0\",\n \"data-[ending-style]:scale-95 data-[ending-style]:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction Viewport({\n className,\n ...props\n}: StyledProps<typeof BaseNav.Viewport>) {\n return (\n <BaseNav.Viewport\n className={cn(\"relative h-full w-full overflow-hidden\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Site navigation menu built on Base UI `NavigationMenu` — a horizontal bar\n * whose items open animated dropdown panels that resize to their content. Each\n * `Item` pairs a `Trigger` with `Content` (rendered into the shared\n * `Viewport`). Use it for primary site nav with grouped links; for app action\n * menus use `Menu`.\n */\nexport const NavigationMenu = {\n Root,\n List,\n Item,\n Trigger,\n Content,\n Link,\n Icon,\n Portal,\n Positioner,\n Popup,\n Viewport,\n};\n"],"mappings":";;;;;AAYA,SAAS,EAAK,EAAE,WAAA,GAAW,GAAG,EAAA,GAA2C;AACvE,SACE,gBAAA,EAAC,EAAQ,MAAT;AAAA,IAAc,WAAW,EAAG,sBAAsB,CAAS;AAAA,IAAG,GAAI;AAAA,EAAQ,CAAA;AAE9E;AAEA,SAAS,EAAK,EAAE,WAAA,GAAW,GAAG,EAAA,GAA2C;AACvE,SACE,gBAAA,EAAC,EAAQ,MAAT;AAAA,IACE,WAAW,EAAG,oCAAoC,CAAS;AAAA,IAC3D,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,IAAM,IAAO,EAAQ,MACf,IAAO,EAAQ;AAErB,SAAS,EAAQ,EAAE,WAAA,GAAW,GAAG,EAAA,GAA8C;AAC7E,SACE,gBAAA,EAAC,EAAQ,SAAT;AAAA,IACE,WAAW,EACT,gQACA,yGACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAQ,EAAE,WAAA,GAAW,GAAG,EAAA,GAA8C;AAC7E,SAAO,gBAAA,EAAC,EAAQ,SAAT;AAAA,IAAiB,WAAW,EAAG,cAAc,CAAS;AAAA,IAAG,GAAI;AAAA,EAAQ,CAAA;AAC9E;AAEA,SAAS,EAAK,EAAE,WAAA,GAAW,GAAG,EAAA,GAA2C;AACvE,SACE,gBAAA,EAAC,EAAQ,MAAT;AAAA,IACE,WAAW,EACT,8LACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,IAAM,IAAS,EAAQ;AAEvB,SAAS,EAAW,EAClB,WAAA,GACA,YAAA,IAAa,GACb,GAAG,EAAA,GACsC;AACzC,SACE,gBAAA,EAAC,EAAQ,YAAT;AAAA,IACc,YAAA;AAAA,IACZ,WAAW,EAAG,QAAQ,CAAS;AAAA,IAC/B,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,WAAA,GAAW,GAAG,EAAA,GAA4C;AACzE,SACE,gBAAA,EAAC,EAAQ,OAAT;AAAA,IACE,WAAW,EACT,kRACA,kEACA,8DACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAS,EAChB,WAAA,GACA,GAAG,EAAA,GACoC;AACvC,SACE,gBAAA,EAAC,EAAQ,UAAT;AAAA,IACE,WAAW,EAAG,0CAA0C,CAAS;AAAA,IACjE,GAAI;AAAA,EACL,CAAA;AAEL;AASA,IAAa,IAAiB;AAAA,EAC5B,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AACF"}
1
+ {"version":3,"file":"navigation-menu.js","names":[],"sources":["../../src/components/navigation-menu/navigation-menu.tsx"],"sourcesContent":["import { type ComponentProps, type ElementType } from \"react\";\nimport { NavigationMenu as BaseNav } from \"@base-ui/react/navigation-menu\";\nimport { cn } from \"../../utils/cn\";\n\n/** Override Base UI's `string | (state) => string` className with plain string. */\ntype StyledProps<T extends ElementType> = Omit<\n ComponentProps<T>,\n \"className\"\n> & {\n className?: string;\n};\n\nfunction Root({ className, ...props }: StyledProps<typeof BaseNav.Root>) {\n return (\n <BaseNav.Root className={cn(\"relative min-w-max\", className)} {...props} />\n );\n}\n\nfunction List({ className, ...props }: StyledProps<typeof BaseNav.List>) {\n return (\n <BaseNav.List\n className={cn(\"relative flex items-center gap-1\", className)}\n {...props}\n />\n );\n}\n\nconst Item = BaseNav.Item;\nconst Icon = BaseNav.Icon;\n\nfunction Trigger({ className, ...props }: StyledProps<typeof BaseNav.Trigger>) {\n return (\n <BaseNav.Trigger\n className={cn(\n \"outline-pho-brand text-pho-secondary hover:bg-pho-ghost-hover data-[popup-open]:bg-pho-ghost-hover inline-flex cursor-pointer items-center gap-1 rounded-sm px-3 py-2 text-base font-medium transition focus-visible:outline-2 focus-visible:-outline-offset-1\",\n \"[&>svg]:size-4 [&>svg]:transition-transform [&>svg]:duration-150 data-[popup-open]:[&>svg]:rotate-180\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction Content({ className, ...props }: StyledProps<typeof BaseNav.Content>) {\n return <BaseNav.Content className={cn(\"w-full p-2\", className)} {...props} />;\n}\n\nfunction Link({ className, ...props }: StyledProps<typeof BaseNav.Link>) {\n return (\n <BaseNav.Link\n className={cn(\n \"outline-pho-brand text-pho-secondary hover:bg-pho-ghost-hover hover:text-pho-primary rounded-base block px-3 py-2 text-base transition focus-visible:outline-2 focus-visible:-outline-offset-1\",\n className,\n )}\n {...props}\n />\n );\n}\n\nconst Portal = BaseNav.Portal;\n\nfunction Positioner({\n className,\n sideOffset = 8,\n ...props\n}: StyledProps<typeof BaseNav.Positioner>) {\n return (\n <BaseNav.Positioner\n sideOffset={sideOffset}\n className={cn(\"z-50\", className)}\n {...props}\n />\n );\n}\n\nfunction Popup({ className, ...props }: StyledProps<typeof BaseNav.Popup>) {\n return (\n <BaseNav.Popup\n className={cn(\n \"bg-pho-primary text-pho-primary shadow-pho-lg ring-pho-secondary rounded-base relative h-[var(--popup-height)] w-[var(--popup-width)] origin-[var(--transform-origin)] ring-1 transition-[opacity,transform,width,height] duration-150 ease-out outline-none ring-inset\",\n \"data-[starting-style]:scale-95 data-[starting-style]:opacity-0\",\n \"data-[ending-style]:scale-95 data-[ending-style]:opacity-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction Viewport({\n className,\n ...props\n}: StyledProps<typeof BaseNav.Viewport>) {\n return (\n <BaseNav.Viewport\n className={cn(\"relative h-full w-full overflow-hidden\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Site navigation menu built on Base UI `NavigationMenu` — a horizontal bar\n * whose items open animated dropdown panels that resize to their content. Each\n * `Item` pairs a `Trigger` with `Content` (rendered into the shared\n * `Viewport`). Use it for primary site nav with grouped links; for app action\n * menus use `Menu`.\n */\nexport const NavigationMenu = {\n Root,\n List,\n Item,\n Trigger,\n Content,\n Link,\n Icon,\n Portal,\n Positioner,\n Popup,\n Viewport,\n};\n"],"mappings":";;;;;AAYA,SAAS,EAAK,EAAE,WAAA,GAAW,GAAG,EAAA,GAA2C;AACvE,SACE,gBAAA,EAAC,EAAQ,MAAT;AAAA,IAAc,WAAW,EAAG,sBAAsB,CAAS;AAAA,IAAG,GAAI;AAAA,EAAQ,CAAA;AAE9E;AAEA,SAAS,EAAK,EAAE,WAAA,GAAW,GAAG,EAAA,GAA2C;AACvE,SACE,gBAAA,EAAC,EAAQ,MAAT;AAAA,IACE,WAAW,EAAG,oCAAoC,CAAS;AAAA,IAC3D,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,IAAM,IAAO,EAAQ,MACf,IAAO,EAAQ;AAErB,SAAS,EAAQ,EAAE,WAAA,GAAW,GAAG,EAAA,GAA8C;AAC7E,SACE,gBAAA,EAAC,EAAQ,SAAT;AAAA,IACE,WAAW,EACT,kQACA,yGACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAQ,EAAE,WAAA,GAAW,GAAG,EAAA,GAA8C;AAC7E,SAAO,gBAAA,EAAC,EAAQ,SAAT;AAAA,IAAiB,WAAW,EAAG,cAAc,CAAS;AAAA,IAAG,GAAI;AAAA,EAAQ,CAAA;AAC9E;AAEA,SAAS,EAAK,EAAE,WAAA,GAAW,GAAG,EAAA,GAA2C;AACvE,SACE,gBAAA,EAAC,EAAQ,MAAT;AAAA,IACE,WAAW,EACT,kMACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,IAAM,IAAS,EAAQ;AAEvB,SAAS,EAAW,EAClB,WAAA,GACA,YAAA,IAAa,GACb,GAAG,EAAA,GACsC;AACzC,SACE,gBAAA,EAAC,EAAQ,YAAT;AAAA,IACc,YAAA;AAAA,IACZ,WAAW,EAAG,QAAQ,CAAS;AAAA,IAC/B,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAM,EAAE,WAAA,GAAW,GAAG,EAAA,GAA4C;AACzE,SACE,gBAAA,EAAC,EAAQ,OAAT;AAAA,IACE,WAAW,EACT,2QACA,kEACA,8DACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,EAAS,EAChB,WAAA,GACA,GAAG,EAAA,GACoC;AACvC,SACE,gBAAA,EAAC,EAAQ,UAAT;AAAA,IACE,WAAW,EAAG,0CAA0C,CAAS;AAAA,IACjE,GAAI;AAAA,EACL,CAAA;AAEL;AASA,IAAa,IAAiB;AAAA,EAC5B,MAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AACF"}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import { t } from "../chunks/cn-7uGUzCOM.js";
3
- import { t as N } from "../chunks/resolve-variant-CcD8iG5l.js";
2
+ import { t } from "../chunks/cn-DTiB6ek_.js";
3
+ import { t as b } from "../chunks/resolve-variant-CcD8iG5l.js";
4
4
  import { t as s } from "../chunks/createReactComponent-BqCmnqfX.js";
5
- import { t as b } from "../chunks/IconX-pZ9vrtSr.js";
5
+ import { t as N } from "../chunks/IconX-pZ9vrtSr.js";
6
6
  import "react";
7
- import { jsx as e, jsxs as r } from "react/jsx-runtime";
7
+ import { jsx as e, jsxs as o } from "react/jsx-runtime";
8
8
  var k = [
9
9
  ["path", {
10
10
  d: "M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0",
@@ -39,11 +39,11 @@ var k = [
39
39
  }]
40
40
  ], l = s("outline", "info-circle", "InfoCircle", w), M = {
41
41
  brand: {
42
- classes: "text-fg-pho-brand",
42
+ classes: "text-pho-brand",
43
43
  description: "Informational / product update (default)"
44
44
  },
45
45
  gray: {
46
- classes: "text-fg-pho-secondary",
46
+ classes: "text-pho-secondary",
47
47
  description: "Neutral, low-stakes note"
48
48
  },
49
49
  success: {
@@ -55,7 +55,7 @@ var k = [
55
55
  description: "Needs attention, not yet failed"
56
56
  },
57
57
  error: {
58
- classes: "text-fg-pho-error",
58
+ classes: "text-pho-error",
59
59
  description: "Something went wrong"
60
60
  }
61
61
  }, _ = {
@@ -64,34 +64,34 @@ var k = [
64
64
  success: I,
65
65
  warning: c,
66
66
  error: c
67
- }, d = "cursor-pointer text-sm font-medium outline-pho-brand transition duration-100 ease-linear focus-visible:outline-2 focus-visible:outline-offset-2";
68
- function A({ color: i = "brand", title: h, description: o, confirmLabel: n, onConfirm: p, dismissLabel: u = "Dismiss", onClose: a, icon: m, className: f, ref: v, ...g }) {
67
+ }, d = "cursor-pointer text-base font-medium outline-pho-brand transition duration-100 ease-linear focus-visible:outline-2 focus-visible:outline-offset-2";
68
+ function A({ color: i = "brand", title: p, description: r, confirmLabel: n, onConfirm: h, dismissLabel: u = "Dismiss", onClose: a, icon: m, className: v, ref: f, ...g }) {
69
69
  const x = m ?? _[i], y = !!n;
70
- return /* @__PURE__ */ r("div", {
71
- ref: v,
70
+ return /* @__PURE__ */ o("div", {
71
+ ref: f,
72
72
  ...g,
73
- className: t("squircle ring-pho-secondary bg-pho-primary shadow-pho-lg relative flex w-full max-w-sm gap-4 rounded-xl p-4 ring-1 ring-inset", f),
73
+ className: t("ring-pho-secondary bg-pho-primary shadow-pho-lg rounded-base relative flex w-full max-w-sm gap-4 p-4 ring-1 ring-inset", v),
74
74
  children: [
75
75
  /* @__PURE__ */ e(x, {
76
76
  "aria-hidden": "true",
77
- className: t("mt-0.5 size-5 shrink-0", N(M, i))
77
+ className: t("mt-0.5 size-5 shrink-0", b(M, i))
78
78
  }),
79
- /* @__PURE__ */ r("div", {
79
+ /* @__PURE__ */ o("div", {
80
80
  className: "flex flex-1 flex-col gap-3 pr-6",
81
- children: [/* @__PURE__ */ r("div", {
81
+ children: [/* @__PURE__ */ o("div", {
82
82
  className: "flex flex-col gap-1",
83
83
  children: [/* @__PURE__ */ e("p", {
84
- className: "text-pho-primary text-sm font-semibold",
85
- children: h
86
- }), o != null && o !== !1 && /* @__PURE__ */ e("p", {
87
- className: "text-pho-tertiary text-sm",
88
- children: o
84
+ className: "text-pho-primary text-base font-medium",
85
+ children: p
86
+ }), r != null && r !== !1 && /* @__PURE__ */ e("p", {
87
+ className: "text-pho-description text-base",
88
+ children: r
89
89
  })]
90
- }), y && /* @__PURE__ */ r("div", {
90
+ }), y && /* @__PURE__ */ o("div", {
91
91
  className: "flex gap-4",
92
92
  children: [/* @__PURE__ */ e("button", {
93
93
  type: "button",
94
- onClick: p,
94
+ onClick: h,
95
95
  className: t(d, "text-pho-brand hover:underline"),
96
96
  children: n
97
97
  }), /* @__PURE__ */ e("button", {
@@ -106,8 +106,8 @@ function A({ color: i = "brand", title: h, description: o, confirmLabel: n, onCo
106
106
  type: "button",
107
107
  onClick: a,
108
108
  "aria-label": "Dismiss",
109
- className: "text-fg-pho-quaternary hover:text-fg-pho-quaternary-hover hover:bg-pho-ghost-hover outline-pho-brand absolute top-2.5 right-2.5 flex size-6 cursor-pointer items-center justify-center rounded-md transition focus-visible:outline-2 [&>svg]:size-4",
110
- children: /* @__PURE__ */ e(b, { "aria-hidden": "true" })
109
+ className: "text-pho-secondary hover:text-pho-secondary-hover hover:bg-pho-ghost-hover outline-pho-brand absolute top-2.5 right-2.5 flex size-6 cursor-pointer items-center justify-center rounded-sm transition focus-visible:outline-2 [&>svg]:size-4",
110
+ children: /* @__PURE__ */ e(N, { "aria-hidden": "true" })
111
111
  })
112
112
  ]
113
113
  });
@@ -1 +1 @@
1
- {"version":3,"file":"notification.js","names":["__iconNode","__iconNode"],"sources":["../../../../node_modules/.pnpm/@tabler+icons-react@3.44.0_react@19.2.7/node_modules/@tabler/icons-react/dist/esm/icons/IconAlertCircle.mjs","../../../../node_modules/.pnpm/@tabler+icons-react@3.44.0_react@19.2.7/node_modules/@tabler/icons-react/dist/esm/icons/IconCircleCheck.mjs","../../../../node_modules/.pnpm/@tabler+icons-react@3.44.0_react@19.2.7/node_modules/@tabler/icons-react/dist/esm/icons/IconInfoCircle.mjs","../../src/components/notification/notification.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.44.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M12 8v4\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M12 16h.01\", \"key\": \"svg-2\" }]];\nconst IconAlertCircle = createReactComponent(\"outline\", \"alert-circle\", \"AlertCircle\", __iconNode);\n\nexport { __iconNode, IconAlertCircle as default };\n//# sourceMappingURL=IconAlertCircle.mjs.map\n","/**\n * @license @tabler/icons-react v3.44.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M9 12l2 2l4 -4\", \"key\": \"svg-1\" }]];\nconst IconCircleCheck = createReactComponent(\"outline\", \"circle-check\", \"CircleCheck\", __iconNode);\n\nexport { __iconNode, IconCircleCheck as default };\n//# sourceMappingURL=IconCircleCheck.mjs.map\n","/**\n * @license @tabler/icons-react v3.44.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M12 9h.01\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M11 12h1v4h1\", \"key\": \"svg-2\" }]];\nconst IconInfoCircle = createReactComponent(\"outline\", \"info-circle\", \"InfoCircle\", __iconNode);\n\nexport { __iconNode, IconInfoCircle as default };\n//# sourceMappingURL=IconInfoCircle.mjs.map\n","import { type HTMLAttributes, type ReactNode, type Ref } from \"react\";\nimport {\n IconCircleCheck,\n IconInfoCircle,\n IconAlertCircle,\n IconX,\n type Icon,\n} from \"@tabler/icons-react\";\nimport { cn } from \"../../utils/cn\";\nimport { resolveVariant, type VariantMap } from \"../../utils/resolve-variant\";\n\n/**\n * Design notes (Geist-aligned):\n * - ONE closed, semantic axis: `color`. It selects a status glyph *and* its\n * tint together — you never pick an icon and a color separately. This is the\n * `IconNotification` flavor from the app; the unused avatar/image variants of\n * the source family are intentionally dropped.\n * - The action row is a single reduced pair: a brand `confirmLabel` link beside\n * a gray dismiss link. It appears only when there's something to confirm.\n * - `onClose` is the only thing that renders the top-right close button — no\n * separate boolean flag to keep in sync.\n */\n\n/** Status color → icon tint. A bare status-tinted glyph, no badge surface. */\nexport const NOTIFICATION_COLORS = {\n brand: {\n classes: \"text-fg-pho-brand\",\n description: \"Informational / product update (default)\",\n },\n gray: {\n classes: \"text-fg-pho-secondary\",\n description: \"Neutral, low-stakes note\",\n },\n success: {\n classes: \"text-pho-success\",\n description: \"An action completed\",\n },\n warning: {\n classes: \"text-pho-warning\",\n description: \"Needs attention, not yet failed\",\n },\n error: {\n classes: \"text-fg-pho-error\",\n description: \"Something went wrong\",\n },\n} satisfies VariantMap;\n\nexport type NotificationColor = keyof typeof NOTIFICATION_COLORS;\n\n/** Status color → glyph. Mirrors the source's `iconMap` semantics. */\nconst ICON_MAP = {\n brand: IconInfoCircle,\n gray: IconInfoCircle,\n success: IconCircleCheck,\n warning: IconAlertCircle,\n error: IconAlertCircle,\n} satisfies Record<NotificationColor, Icon>;\n\nexport interface NotificationProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"title\" | \"color\"\n> {\n /** Status color — selects the glyph and its tint. @default \"brand\" */\n color?: NotificationColor;\n /** Bold heading line. */\n title: ReactNode;\n /** Supporting line under the title. */\n description?: ReactNode;\n /** Confirm action label — renders a brand link paired with a dismiss link. */\n confirmLabel?: string;\n /** Called when the confirm link is clicked. */\n onConfirm?: () => void;\n /** Dismiss link label, shown beside the confirm link. @default \"Dismiss\" */\n dismissLabel?: string;\n /** Called on dismiss. Its presence also renders the top-right close button. */\n onClose?: () => void;\n /** Override the status glyph while keeping the color's tint. */\n icon?: Icon;\n className?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst LINK_CLASS =\n \"cursor-pointer text-sm font-medium outline-pho-brand transition duration-100 ease-linear focus-visible:outline-2 focus-visible:outline-offset-2\";\n\n/**\n * Notification — the standalone status card ported from the app's\n * `IconNotification`: a status glyph, a title/description, an optional\n * confirm+dismiss link pair, and an optional close button. It is a *card*, not a\n * lifecycle: it owns its surface but nothing about timing or stacking.\n *\n * For a transient, auto-stacking toast, drop it inside pho-ui's Base UI\n * {@link Toast} — render it as the child of a `Toast.Root` whose own surface you\n * neutralize (`className=\"bg-transparent p-0 shadow-none ring-0\"`) so the\n * manager owns motion and swipe while this card owns the look. For a choice the\n * user must make, use `AlertDialog` instead.\n */\nexport function Notification({\n color = \"brand\",\n title,\n description,\n confirmLabel,\n onConfirm,\n dismissLabel = \"Dismiss\",\n onClose,\n icon,\n className,\n ref,\n ...props\n}: NotificationProps) {\n const Glyph = icon ?? ICON_MAP[color];\n const showActions = Boolean(confirmLabel);\n\n return (\n <div\n ref={ref}\n {...props}\n className={cn(\n // Floating layer: keeps its shadow elevation, hairline card edge.\n \"squircle ring-pho-secondary bg-pho-primary shadow-pho-lg relative flex w-full max-w-sm gap-4 rounded-xl p-4 ring-1 ring-inset\",\n className,\n )}\n >\n <Glyph\n aria-hidden=\"true\"\n className={cn(\n \"mt-0.5 size-5 shrink-0\",\n resolveVariant(NOTIFICATION_COLORS, color),\n )}\n />\n\n <div className=\"flex flex-1 flex-col gap-3 pr-6\">\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-pho-primary text-sm font-semibold\">{title}</p>\n {description != null && description !== false && (\n <p className=\"text-pho-tertiary text-sm\">{description}</p>\n )}\n </div>\n\n {showActions && (\n <div className=\"flex gap-4\">\n <button\n type=\"button\"\n onClick={onConfirm}\n className={cn(\n LINK_CLASS,\n // brand text is monochrome now — underline carries the hover.\n \"text-pho-brand hover:underline\",\n )}\n >\n {confirmLabel}\n </button>\n <button\n type=\"button\"\n onClick={onClose}\n className={cn(\n LINK_CLASS,\n \"text-pho-secondary hover:text-pho-secondary-hover\",\n )}\n >\n {dismissLabel}\n </button>\n </div>\n )}\n </div>\n\n {onClose && (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Dismiss\"\n className=\"text-fg-pho-quaternary hover:text-fg-pho-quaternary-hover hover:bg-pho-ghost-hover outline-pho-brand absolute top-2.5 right-2.5 flex size-6 cursor-pointer items-center justify-center rounded-md transition focus-visible:outline-2 [&>svg]:size-4\"\n >\n <IconX aria-hidden=\"true\" />\n </button>\n )}\n </div>\n );\n}\n\nNotification.displayName = \"Notification\";\n"],"x_google_ignoreList":[0,1,2],"mappings":";;;;;;;AASA,IAAMA,IAAa;AAAA,EAAC,CAAC,QAAQ;AAAA,IAAE,GAAK;AAAA,IAAwC,KAAO;AAAA,EAAQ,CAAC;AAAA,EAAG,CAAC,QAAQ;AAAA,IAAE,GAAK;AAAA,IAAW,KAAO;AAAA,EAAQ,CAAC;AAAA,EAAG,CAAC,QAAQ;AAAA,IAAE,GAAK;AAAA,IAAc,KAAO;AAAA,EAAQ,CAAC;AAAC,GACtL,IAAkB,EAAqB,WAAW,gBAAgB,eAAeA,CAAU,GCD3FC,IAAa,CAAC,CAAC,QAAQ;AAAA,EAAE,GAAK;AAAA,EAAwC,KAAO;AAAQ,CAAC,GAAG,CAAC,QAAQ;AAAA,EAAE,GAAK;AAAA,EAAkB,KAAO;AAAQ,CAAC,CAAC,GAC5I,IAAkB,EAAqB,WAAW,gBAAgB,eAAeA,CAAU,GCD3F,IAAa;AAAA,EAAC,CAAC,QAAQ;AAAA,IAAE,GAAK;AAAA,IAAwC,KAAO;AAAA,EAAQ,CAAC;AAAA,EAAG,CAAC,QAAQ;AAAA,IAAE,GAAK;AAAA,IAAa,KAAO;AAAA,EAAQ,CAAC;AAAA,EAAG,CAAC,QAAQ;AAAA,IAAE,GAAK;AAAA,IAAgB,KAAO;AAAA,EAAQ,CAAC;AAAC,GAC1L,IAAiB,EAAqB,WAAW,eAAe,cAAc,CAAU,GCcjF,IAAsB;AAAA,EACjC,OAAO;AAAA,IACL,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AAAA,EACA,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AAAA,EACA,SAAS;AAAA,IACP,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AAAA,EACA,OAAO;AAAA,IACL,SAAS;AAAA,IACT,aAAa;AAAA,EACf;AACF,GAKM,IAAW;AAAA,EACf,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AAAA,EACT,SAAS;AAAA,EACT,OAAO;AACT,GA0BM,IACJ;AAcF,SAAgB,EAAa,EAC3B,OAAA,IAAQ,SACR,OAAA,GACA,aAAA,GACA,cAAA,GACA,WAAA,GACA,cAAA,IAAe,WACf,SAAA,GACA,MAAA,GACA,WAAA,GACA,KAAA,GACA,GAAG,EAAA,GACiB;AACpB,QAAM,IAAQ,KAAQ,EAAS,CAAA,GACzB,IAAc,EAAQ;AAE5B,SACE,gBAAA,EAAC,OAAD;AAAA,IACO,KAAA;AAAA,IACL,GAAI;AAAA,IACJ,WAAW,EAET,iIACA,CACF;AAAA,cAPF;AAAA,MASE,gBAAA,EAAC,GAAD;AAAA,QACE,eAAY;AAAA,QACZ,WAAW,EACT,0BACA,EAAe,GAAqB,CAAK,CAC3C;AAAA,MACD,CAAA;AAAA,MAED,gBAAA,EAAC,OAAD;AAAA,QAAK,WAAU;AAAA,kBAAf,CACE,gBAAA,EAAC,OAAD;AAAA,UAAK,WAAU;AAAA,oBAAf,CACE,gBAAA,EAAC,KAAD;AAAA,YAAG,WAAU;AAAA,sBAA0C;AAAA,UAAS,CAAA,GAC/D,KAAe,QAAQ,MAAgB,MACtC,gBAAA,EAAC,KAAD;AAAA,YAAG,WAAU;AAAA,sBAA6B;AAAA,UAAe,CAAA,CAExD;AAAA,YAEJ,KACC,gBAAA,EAAC,OAAD;AAAA,UAAK,WAAU;AAAA,oBAAf,CACE,gBAAA,EAAC,UAAD;AAAA,YACE,MAAK;AAAA,YACL,SAAS;AAAA,YACT,WAAW,EACT,GAEA,gCACF;AAAA,sBAEC;AAAA,UACK,CAAA,GACR,gBAAA,EAAC,UAAD;AAAA,YACE,MAAK;AAAA,YACL,SAAS;AAAA,YACT,WAAW,EACT,GACA,mDACF;AAAA,sBAEC;AAAA,UACK,CAAA,CACL;AAAA,UAEJ;AAAA;MAEJ,KACC,gBAAA,EAAC,UAAD;AAAA,QACE,MAAK;AAAA,QACL,SAAS;AAAA,QACT,cAAW;AAAA,QACX,WAAU;AAAA,kBAEV,gBAAA,EAAC,GAAD,EAAO,eAAY,OAAQ,CAAA;AAAA,MACrB,CAAA;AAAA,IAEP;AAAA;AAET;AAEA,EAAa,cAAc"}
1
+ {"version":3,"file":"notification.js","names":["__iconNode","__iconNode"],"sources":["../../../../node_modules/.pnpm/@tabler+icons-react@3.44.0_react@19.2.7/node_modules/@tabler/icons-react/dist/esm/icons/IconAlertCircle.mjs","../../../../node_modules/.pnpm/@tabler+icons-react@3.44.0_react@19.2.7/node_modules/@tabler/icons-react/dist/esm/icons/IconCircleCheck.mjs","../../../../node_modules/.pnpm/@tabler+icons-react@3.44.0_react@19.2.7/node_modules/@tabler/icons-react/dist/esm/icons/IconInfoCircle.mjs","../../src/components/notification/notification.tsx"],"sourcesContent":["/**\n * @license @tabler/icons-react v3.44.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M12 8v4\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M12 16h.01\", \"key\": \"svg-2\" }]];\nconst IconAlertCircle = createReactComponent(\"outline\", \"alert-circle\", \"AlertCircle\", __iconNode);\n\nexport { __iconNode, IconAlertCircle as default };\n//# sourceMappingURL=IconAlertCircle.mjs.map\n","/**\n * @license @tabler/icons-react v3.44.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M9 12l2 2l4 -4\", \"key\": \"svg-1\" }]];\nconst IconCircleCheck = createReactComponent(\"outline\", \"circle-check\", \"CircleCheck\", __iconNode);\n\nexport { __iconNode, IconCircleCheck as default };\n//# sourceMappingURL=IconCircleCheck.mjs.map\n","/**\n * @license @tabler/icons-react v3.44.0 - MIT\n *\n * This source code is licensed under the MIT license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createReactComponent from '../createReactComponent.mjs';\n\nconst __iconNode = [[\"path\", { \"d\": \"M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0\", \"key\": \"svg-0\" }], [\"path\", { \"d\": \"M12 9h.01\", \"key\": \"svg-1\" }], [\"path\", { \"d\": \"M11 12h1v4h1\", \"key\": \"svg-2\" }]];\nconst IconInfoCircle = createReactComponent(\"outline\", \"info-circle\", \"InfoCircle\", __iconNode);\n\nexport { __iconNode, IconInfoCircle as default };\n//# sourceMappingURL=IconInfoCircle.mjs.map\n","import { type HTMLAttributes, type ReactNode, type Ref } from \"react\";\nimport {\n IconCircleCheck,\n IconInfoCircle,\n IconAlertCircle,\n IconX,\n type Icon,\n} from \"@tabler/icons-react\";\nimport { cn } from \"../../utils/cn\";\nimport { resolveVariant, type VariantMap } from \"../../utils/resolve-variant\";\n\n/**\n * Design notes (Geist-aligned):\n * - ONE closed, semantic axis: `color`. It selects a status glyph *and* its\n * tint together — you never pick an icon and a color separately. This is the\n * `IconNotification` flavor from the app; the unused avatar/image variants of\n * the source family are intentionally dropped.\n * - The action row is a single reduced pair: a brand `confirmLabel` link beside\n * a gray dismiss link. It appears only when there's something to confirm.\n * - `onClose` is the only thing that renders the top-right close button — no\n * separate boolean flag to keep in sync.\n */\n\n/** Status color → icon tint. A bare status-tinted glyph, no badge surface. */\nexport const NOTIFICATION_COLORS = {\n brand: {\n classes: \"text-pho-brand\",\n description: \"Informational / product update (default)\",\n },\n gray: {\n classes: \"text-pho-secondary\",\n description: \"Neutral, low-stakes note\",\n },\n success: {\n classes: \"text-pho-success\",\n description: \"An action completed\",\n },\n warning: {\n classes: \"text-pho-warning\",\n description: \"Needs attention, not yet failed\",\n },\n error: {\n classes: \"text-pho-error\",\n description: \"Something went wrong\",\n },\n} satisfies VariantMap;\n\nexport type NotificationColor = keyof typeof NOTIFICATION_COLORS;\n\n/** Status color → glyph. Mirrors the source's `iconMap` semantics. */\nconst ICON_MAP = {\n brand: IconInfoCircle,\n gray: IconInfoCircle,\n success: IconCircleCheck,\n warning: IconAlertCircle,\n error: IconAlertCircle,\n} satisfies Record<NotificationColor, Icon>;\n\nexport interface NotificationProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"title\" | \"color\"\n> {\n /** Status color — selects the glyph and its tint. @default \"brand\" */\n color?: NotificationColor;\n /** Bold heading line. */\n title: ReactNode;\n /** Supporting line under the title. */\n description?: ReactNode;\n /** Confirm action label — renders a brand link paired with a dismiss link. */\n confirmLabel?: string;\n /** Called when the confirm link is clicked. */\n onConfirm?: () => void;\n /** Dismiss link label, shown beside the confirm link. @default \"Dismiss\" */\n dismissLabel?: string;\n /** Called on dismiss. Its presence also renders the top-right close button. */\n onClose?: () => void;\n /** Override the status glyph while keeping the color's tint. */\n icon?: Icon;\n className?: string;\n ref?: Ref<HTMLDivElement>;\n}\n\nconst LINK_CLASS =\n \"cursor-pointer text-base font-medium outline-pho-brand transition duration-100 ease-linear focus-visible:outline-2 focus-visible:outline-offset-2\";\n\n/**\n * Notification — the standalone status card ported from the app's\n * `IconNotification`: a status glyph, a title/description, an optional\n * confirm+dismiss link pair, and an optional close button. It is a *card*, not a\n * lifecycle: it owns its surface but nothing about timing or stacking.\n *\n * For a transient, auto-stacking toast, drop it inside pho-ui's Base UI\n * {@link Toast} — render it as the child of a `Toast.Root` whose own surface you\n * neutralize (`className=\"bg-transparent p-0 shadow-none ring-0\"`) so the\n * manager owns motion and swipe while this card owns the look. For a choice the\n * user must make, use `AlertDialog` instead.\n */\nexport function Notification({\n color = \"brand\",\n title,\n description,\n confirmLabel,\n onConfirm,\n dismissLabel = \"Dismiss\",\n onClose,\n icon,\n className,\n ref,\n ...props\n}: NotificationProps) {\n const Glyph = icon ?? ICON_MAP[color];\n const showActions = Boolean(confirmLabel);\n\n return (\n <div\n ref={ref}\n {...props}\n className={cn(\n // Floating layer: keeps its shadow elevation, hairline card edge.\n \"ring-pho-secondary bg-pho-primary shadow-pho-lg rounded-base relative flex w-full max-w-sm gap-4 p-4 ring-1 ring-inset\",\n className,\n )}\n >\n <Glyph\n aria-hidden=\"true\"\n className={cn(\n \"mt-0.5 size-5 shrink-0\",\n resolveVariant(NOTIFICATION_COLORS, color),\n )}\n />\n\n <div className=\"flex flex-1 flex-col gap-3 pr-6\">\n <div className=\"flex flex-col gap-1\">\n <p className=\"text-pho-primary text-base font-medium\">{title}</p>\n {description != null && description !== false && (\n <p className=\"text-pho-description text-base\">{description}</p>\n )}\n </div>\n\n {showActions && (\n <div className=\"flex gap-4\">\n <button\n type=\"button\"\n onClick={onConfirm}\n className={cn(\n LINK_CLASS,\n // brand text is monochrome now — underline carries the hover.\n \"text-pho-brand hover:underline\",\n )}\n >\n {confirmLabel}\n </button>\n <button\n type=\"button\"\n onClick={onClose}\n className={cn(\n LINK_CLASS,\n \"text-pho-secondary hover:text-pho-secondary-hover\",\n )}\n >\n {dismissLabel}\n </button>\n </div>\n )}\n </div>\n\n {onClose && (\n <button\n type=\"button\"\n onClick={onClose}\n aria-label=\"Dismiss\"\n className=\"text-pho-secondary hover:text-pho-secondary-hover hover:bg-pho-ghost-hover outline-pho-brand absolute top-2.5 right-2.5 flex size-6 cursor-pointer items-center justify-center rounded-sm transition focus-visible:outline-2 [&>svg]:size-4\"\n >\n <IconX aria-hidden=\"true\" />\n </button>\n )}\n </div>\n );\n}\n\nNotification.displayName = \"Notification\";\n"],"x_google_ignoreList":[0,1,2],"mappings":"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"}