@orangecheck/app-design 0.6.1 → 1.1.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 (81) hide show
  1. package/README.md +23 -6
  2. package/dist/brand.js.map +1 -1
  3. package/dist/brand.mjs.map +1 -1
  4. package/dist/chrome.d.mts +78 -55
  5. package/dist/chrome.d.ts +78 -55
  6. package/dist/chrome.js +1100 -59
  7. package/dist/chrome.js.map +1 -1
  8. package/dist/chrome.mjs +1091 -61
  9. package/dist/chrome.mjs.map +1 -1
  10. package/dist/code.d.mts +52 -0
  11. package/dist/code.d.ts +52 -0
  12. package/dist/code.js +534 -0
  13. package/dist/code.js.map +1 -0
  14. package/dist/code.mjs +522 -0
  15. package/dist/code.mjs.map +1 -0
  16. package/dist/components.d.mts +216 -42
  17. package/dist/components.d.ts +216 -42
  18. package/dist/components.js +3350 -100
  19. package/dist/components.js.map +1 -1
  20. package/dist/components.mjs +3293 -103
  21. package/dist/components.mjs.map +1 -1
  22. package/dist/docs-DhnstueM.d.ts +219 -0
  23. package/dist/docs-DiR6s43s.d.mts +219 -0
  24. package/dist/family.d.mts +2 -0
  25. package/dist/family.d.ts +2 -0
  26. package/dist/family.js +167 -0
  27. package/dist/family.js.map +1 -0
  28. package/dist/family.mjs +154 -0
  29. package/dist/family.mjs.map +1 -0
  30. package/dist/format.d.mts +12 -0
  31. package/dist/format.d.ts +12 -0
  32. package/dist/format.js +65 -0
  33. package/dist/format.js.map +1 -0
  34. package/dist/format.mjs +58 -0
  35. package/dist/format.mjs.map +1 -0
  36. package/dist/hero-Dn37il-9.d.mts +31 -0
  37. package/dist/hero-Dn37il-9.d.ts +31 -0
  38. package/dist/index-C6hDqOOS.d.mts +58 -0
  39. package/dist/index-C6hDqOOS.d.ts +58 -0
  40. package/dist/index.d.mts +12 -3
  41. package/dist/index.d.ts +12 -3
  42. package/dist/index.js +4319 -295
  43. package/dist/index.js.map +1 -1
  44. package/dist/index.mjs +4219 -298
  45. package/dist/index.mjs.map +1 -1
  46. package/dist/mdx.d.mts +58 -0
  47. package/dist/mdx.d.ts +58 -0
  48. package/dist/mdx.js +1712 -0
  49. package/dist/mdx.js.map +1 -0
  50. package/dist/mdx.mjs +1685 -0
  51. package/dist/mdx.mjs.map +1 -0
  52. package/dist/primitives.d.mts +73 -5
  53. package/dist/primitives.d.ts +73 -5
  54. package/dist/primitives.js +331 -8
  55. package/dist/primitives.js.map +1 -1
  56. package/dist/primitives.mjs +320 -11
  57. package/dist/primitives.mjs.map +1 -1
  58. package/dist/session.d.mts +18 -0
  59. package/dist/session.d.ts +18 -0
  60. package/dist/session.js +432 -0
  61. package/dist/session.js.map +1 -0
  62. package/dist/session.mjs +401 -0
  63. package/dist/session.mjs.map +1 -0
  64. package/dist/status-badge-BEOxeY9j.d.ts +13 -0
  65. package/dist/status-badge-DRwGhB0h.d.mts +13 -0
  66. package/dist/styles/code.css +97 -0
  67. package/dist/styles/fonts.css +1 -1
  68. package/dist/styles/theme.css +2 -0
  69. package/dist/styles/tokens.css +44 -2
  70. package/dist/styles.css +1 -0
  71. package/dist/tokens.d.mts +3 -1
  72. package/dist/tokens.d.ts +3 -1
  73. package/dist/tokens.js +5 -3
  74. package/dist/tokens.js.map +1 -1
  75. package/dist/tokens.mjs +5 -3
  76. package/dist/tokens.mjs.map +1 -1
  77. package/dist/tool-shell-B1C7ahKE.d.ts +81 -0
  78. package/dist/tool-shell-BDx_N5ai.d.mts +81 -0
  79. package/dist/tools-BggNN5DV.d.ts +131 -0
  80. package/dist/tools-DFIxIj5p.d.mts +131 -0
  81. package/package.json +38 -2
@@ -19,6 +19,9 @@ var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
19
19
  var PopoverPrimitive = require('@radix-ui/react-popover');
20
20
  var TooltipPrimitive = require('@radix-ui/react-tooltip');
21
21
  var TabsPrimitive = require('@radix-ui/react-tabs');
22
+ var QRCode = require('qrcode');
23
+
24
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
22
25
 
23
26
  function _interopNamespace(e) {
24
27
  if (e && e.__esModule) return e;
@@ -49,6 +52,7 @@ var DropdownMenuPrimitive__namespace = /*#__PURE__*/_interopNamespace(DropdownMe
49
52
  var PopoverPrimitive__namespace = /*#__PURE__*/_interopNamespace(PopoverPrimitive);
50
53
  var TooltipPrimitive__namespace = /*#__PURE__*/_interopNamespace(TooltipPrimitive);
51
54
  var TabsPrimitive__namespace = /*#__PURE__*/_interopNamespace(TabsPrimitive);
55
+ var QRCode__default = /*#__PURE__*/_interopDefault(QRCode);
52
56
 
53
57
  var merge = tailwindMerge.extendTailwindMerge({
54
58
  extend: {
@@ -237,13 +241,13 @@ var badgeVariants = classVarianceAuthority.cva(
237
241
  tone: {
238
242
  neutral: "border-border bg-card text-foreground",
239
243
  muted: "border-transparent bg-muted text-muted-foreground",
240
- brand: "border-transparent bg-[color-mix(in_oklab,var(--oca-orange)_12%,var(--card))] text-oca-accent-ink",
244
+ brand: "border-transparent bg-[color-mix(in_oklab,var(--oca-orange)_9%,var(--card))] text-oca-accent-ink",
241
245
  danger: "border-transparent bg-[color-mix(in_oklab,var(--destructive)_12%,var(--card))] text-destructive",
242
246
  // A good state is a neutral pill with a green dot, not a green pill.
243
247
  success: GOOD_DOT,
244
248
  // Aliases kept so older call sites keep compiling: attention is
245
249
  // the brand accent, information is neutral.
246
- warning: "border-transparent bg-[color-mix(in_oklab,var(--oca-orange)_12%,var(--card))] text-oca-accent-ink",
250
+ warning: "border-transparent bg-[color-mix(in_oklab,var(--oca-orange)_9%,var(--card))] text-oca-accent-ink",
247
251
  info: "border-border bg-card text-foreground",
248
252
  // Inverted in dark mode, where ink would sit on a card of nearly its own colour.
249
253
  ink: "border-transparent bg-oca-ink text-oca-ink-foreground dark:bg-foreground dark:text-background",
@@ -281,6 +285,30 @@ function StatusPill({
281
285
  }
282
286
  );
283
287
  }
288
+ var WORD = {
289
+ live: "Live",
290
+ testing: "In testing",
291
+ "not-yet": "Not yet",
292
+ paused: "Paused",
293
+ good: "Good",
294
+ caution: "Caution",
295
+ refused: "Refused"
296
+ };
297
+ var TONE = {
298
+ live: "success",
299
+ testing: "brand",
300
+ "not-yet": "muted",
301
+ paused: "muted",
302
+ good: "success",
303
+ caution: "brand",
304
+ refused: "danger"
305
+ };
306
+ function statusWord(status) {
307
+ return WORD[status];
308
+ }
309
+ function StatusBadge({ status, className, ...props }) {
310
+ return /* @__PURE__ */ jsxRuntime.jsx(Badge, { tone: TONE[status], "data-status": status, className: cn(className), ...props, children: WORD[status] });
311
+ }
284
312
  var cardVariants = classVarianceAuthority.cva("relative rounded-[1.25rem] border", {
285
313
  variants: {
286
314
  tone: {
@@ -323,6 +351,20 @@ function CardContent({ className, ...props }) {
323
351
  function CardFooter({ className, ...props }) {
324
352
  return /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-6 flex flex-wrap items-center gap-3", className), ...props });
325
353
  }
354
+ function sharedContext(name, initial) {
355
+ const key = /* @__PURE__ */ Symbol.for(`@orangecheck/app-design/${name}`);
356
+ const store = globalThis;
357
+ return store[key] ?? (store[key] = react.createContext(initial));
358
+ }
359
+
360
+ // src/lib/density.ts
361
+ var DensityContext = sharedContext("density", "comfortable");
362
+ function DensityProvider({ density, children }) {
363
+ return react.createElement(DensityContext.Provider, { value: density }, children);
364
+ }
365
+ function useDensity() {
366
+ return react.useContext(DensityContext);
367
+ }
326
368
  var fieldBase = [
327
369
  "w-full rounded-xl border border-input bg-card text-foreground placeholder:text-oca-subtle",
328
370
  "text-base md:text-[0.9375rem] outline-none transition-[border-color,box-shadow]",
@@ -330,8 +372,24 @@ var fieldBase = [
330
372
  "disabled:cursor-not-allowed disabled:opacity-55",
331
373
  "aria-[invalid=true]:border-destructive aria-[invalid=true]:focus:ring-[color-mix(in_oklab,var(--destructive)_14%,transparent)]"
332
374
  ];
333
- var Input = react.forwardRef(function Input2({ className, type = "text", ...props }, ref) {
334
- return /* @__PURE__ */ jsxRuntime.jsx("input", { ref, type, "data-ui": "input", className: cn(fieldBase, "h-11 px-3.5", className), ...props });
375
+ var FIELD_SIZE = {
376
+ md: "h-11 px-3.5",
377
+ sm: "h-9 rounded-[0.625rem] px-3 md:text-[0.875rem]"
378
+ };
379
+ var Input = react.forwardRef(function Input2({ className, type = "text", size, ...props }, ref) {
380
+ const density = useDensity();
381
+ const s = size ?? (density === "compact" ? "sm" : "md");
382
+ return /* @__PURE__ */ jsxRuntime.jsx(
383
+ "input",
384
+ {
385
+ ref,
386
+ type,
387
+ "data-ui": "input",
388
+ "data-size": s,
389
+ className: cn(fieldBase, FIELD_SIZE[s], className),
390
+ ...props
391
+ }
392
+ );
335
393
  });
336
394
  var Textarea = react.forwardRef(
337
395
  function Textarea2({ className, ...props }, ref) {
@@ -388,15 +446,29 @@ function Field({ label, hint, optional, error, children, className, hideLabel, a
388
446
  error ? /* @__PURE__ */ jsxRuntime.jsx("p", { id: errorId, role: "alert", className: "text-[0.8125rem] leading-snug text-destructive", children: error }) : null
389
447
  ] });
390
448
  }
391
- var Select = SelectPrimitive__namespace.Root;
449
+ var SelectFieldContext = sharedContext("select-field", null);
450
+ function Select({
451
+ id,
452
+ "aria-describedby": describedBy,
453
+ "aria-invalid": invalid,
454
+ ...props
455
+ }) {
456
+ return /* @__PURE__ */ jsxRuntime.jsx(SelectFieldContext.Provider, { value: { id, "aria-describedby": describedBy, "aria-invalid": invalid }, children: /* @__PURE__ */ jsxRuntime.jsx(SelectPrimitive__namespace.Root, { ...props }) });
457
+ }
392
458
  var SelectGroup = SelectPrimitive__namespace.Group;
393
459
  var SelectValue = SelectPrimitive__namespace.Value;
394
- var SelectTrigger = react.forwardRef(function SelectTrigger2({ className, children, ...props }, ref) {
460
+ var SelectTrigger = react.forwardRef(function SelectTrigger2({ className, children, size, ...props }, ref) {
461
+ const density = useDensity();
462
+ const field = react.useContext(SelectFieldContext);
463
+ const s = size ?? (density === "compact" ? "sm" : "md");
395
464
  return /* @__PURE__ */ jsxRuntime.jsxs(
396
465
  SelectPrimitive__namespace.Trigger,
397
466
  {
398
467
  ref,
399
- className: cn(fieldBase, "flex h-11 items-center justify-between gap-2 px-3.5 text-left", className),
468
+ id: field?.id,
469
+ "aria-describedby": field?.["aria-describedby"],
470
+ "aria-invalid": field?.["aria-invalid"],
471
+ className: cn(fieldBase, FIELD_SIZE[s], "flex items-center justify-between gap-2 text-left", className),
400
472
  ...props,
401
473
  children: [
402
474
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children }),
@@ -464,7 +536,8 @@ var Switch = react.forwardRef(function Switch2({ className, ...props }, ref) {
464
536
  className: cn(
465
537
  "peer inline-flex h-6 w-11 shrink-0 items-center rounded-full border border-transparent bg-input p-0.5",
466
538
  "outline-none transition-colors focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
467
- "data-[state=checked]:bg-brand disabled:cursor-not-allowed disabled:opacity-50",
539
+ // The deep orange: the track is the state, so it must clear 3:1 on a card.
540
+ "data-[state=checked]:bg-oca-orange-deep disabled:cursor-not-allowed disabled:opacity-50",
468
541
  className
469
542
  ),
470
543
  ...props,
@@ -756,11 +829,252 @@ var TabsTrigger = react.forwardRef(function TabsTrigger2({ className, ...props }
756
829
  var TabsContent = react.forwardRef(function TabsContent2({ className, ...props }, ref) {
757
830
  return /* @__PURE__ */ jsxRuntime.jsx(TabsPrimitive__namespace.Content, { ref, className: cn("mt-6 outline-none", className), ...props });
758
831
  });
832
+ var GroupName = react.createContext(void 0);
833
+ function Accordion({
834
+ single = false,
835
+ children,
836
+ className
837
+ }) {
838
+ const name = react.useId();
839
+ return /* @__PURE__ */ jsxRuntime.jsx(GroupName.Provider, { value: single ? name : void 0, children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("divide-y divide-border overflow-hidden rounded-[1.25rem] border border-border bg-card", className), children }) });
840
+ }
841
+ function AccordionItem({
842
+ title,
843
+ children,
844
+ defaultOpen = false,
845
+ id,
846
+ className
847
+ }) {
848
+ const name = react.useContext(GroupName);
849
+ return /* @__PURE__ */ jsxRuntime.jsxs("details", { id, name, open: defaultOpen || void 0, className: cn("group scroll-mt-24", className), children: [
850
+ /* @__PURE__ */ jsxRuntime.jsxs(
851
+ "summary",
852
+ {
853
+ className: cn(
854
+ "flex min-h-14 cursor-pointer list-none items-center justify-between gap-4 px-5 py-4 text-[1rem] font-medium leading-snug md:px-6",
855
+ // Inside the card's clip, so the ring is drawn within the row.
856
+ "transition-colors hover:bg-accent/60 focus-visible:outline-offset-[-2px] [&::-webkit-details-marker]:hidden"
857
+ ),
858
+ children: [
859
+ title,
860
+ /* @__PURE__ */ jsxRuntime.jsx(
861
+ lucideReact.ChevronDown,
862
+ {
863
+ "aria-hidden": true,
864
+ className: "size-4 shrink-0 text-muted-foreground transition-transform duration-200 group-open:rotate-180"
865
+ }
866
+ )
867
+ ]
868
+ }
869
+ ),
870
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "oca-body px-5 pb-5 text-[0.9375rem] md:px-6 md:pb-6", children })
871
+ ] });
872
+ }
873
+ var queue = [];
874
+ var asked = 0;
875
+ var hosts = 0;
876
+ var listeners = /* @__PURE__ */ new Set();
877
+ var emit = () => listeners.forEach((l) => l());
878
+ function ask(item) {
879
+ queue = [...queue, { ...item, id: ++asked }];
880
+ emit();
881
+ }
882
+ function done() {
883
+ queue = queue.slice(1);
884
+ emit();
885
+ }
886
+ function confirm(options) {
887
+ if (hosts === 0) {
888
+ console.error("confirm(): no <DialogHost /> is mounted, so nothing was asked; treating it as no.");
889
+ return Promise.resolve(false);
890
+ }
891
+ return new Promise((resolve) => ask({ id: 0, kind: "confirm", options, settle: resolve }));
892
+ }
893
+ function prompt(options) {
894
+ if (hosts === 0) {
895
+ console.error("prompt(): no <DialogHost /> is mounted, so nothing was asked; treating it as cancelled.");
896
+ return Promise.resolve(null);
897
+ }
898
+ return new Promise((resolve) => ask({ id: 0, kind: "prompt", options, settle: resolve }));
899
+ }
900
+ function subscribe(listener) {
901
+ listeners.add(listener);
902
+ hosts++;
903
+ return () => {
904
+ listeners.delete(listener);
905
+ hosts--;
906
+ };
907
+ }
908
+ var current = () => queue[0] ?? null;
909
+ var none = () => null;
910
+ function PromptBody({ ask: a }) {
911
+ const o = a.options;
912
+ const [value, setValue] = react.useState(o.defaultValue ?? "");
913
+ const [error, setError] = react.useState(null);
914
+ const submit = (e) => {
915
+ e.preventDefault();
916
+ if (o.minLength && value.length < o.minLength) {
917
+ setError(`At least ${o.minLength} characters.`);
918
+ return;
919
+ }
920
+ const refused = o.validate?.(value);
921
+ if (refused) {
922
+ setError(refused);
923
+ return;
924
+ }
925
+ a.settle(value);
926
+ done();
927
+ };
928
+ return /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: submit, noValidate: true, children: [
929
+ /* @__PURE__ */ jsxRuntime.jsx(Field, { label: o.label ?? "Your answer", hint: o.hint, error, children: /* @__PURE__ */ jsxRuntime.jsx(
930
+ Input,
931
+ {
932
+ autoFocus: true,
933
+ type: o.secret ? "password" : "text",
934
+ autoComplete: o.secret ? "new-password" : "off",
935
+ placeholder: o.placeholder,
936
+ value,
937
+ onChange: (e) => {
938
+ setValue(e.target.value);
939
+ setError(null);
940
+ }
941
+ }
942
+ ) }),
943
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogFooter, { children: [
944
+ /* @__PURE__ */ jsxRuntime.jsx(
945
+ Button,
946
+ {
947
+ variant: "secondary",
948
+ onClick: () => {
949
+ a.settle(null);
950
+ done();
951
+ },
952
+ children: o.cancelLabel ?? "Cancel"
953
+ }
954
+ ),
955
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { type: "submit", variant: o.destructive ? "danger" : "primary", children: o.confirmLabel ?? "Continue" })
956
+ ] })
957
+ ] });
958
+ }
959
+ function DialogHost() {
960
+ const a = react.useSyncExternalStore(subscribe, current, none);
961
+ const cancel = () => {
962
+ if (!a) return;
963
+ if (a.kind === "confirm") a.settle(false);
964
+ else a.settle(null);
965
+ done();
966
+ };
967
+ return /* @__PURE__ */ jsxRuntime.jsx(Dialog, { open: a !== null, onOpenChange: (open) => open ? void 0 : cancel(), children: a ? /* @__PURE__ */ jsxRuntime.jsxs(
968
+ DialogContent,
969
+ {
970
+ role: "alertdialog",
971
+ ...a.options.message ? {} : { "aria-describedby": void 0 },
972
+ className: "w-[min(92vw,28rem)]",
973
+ children: [
974
+ /* @__PURE__ */ jsxRuntime.jsxs(DialogHeader, { children: [
975
+ /* @__PURE__ */ jsxRuntime.jsx(DialogTitle, { children: a.options.title }),
976
+ a.options.message ? /* @__PURE__ */ jsxRuntime.jsx(DialogDescription, { children: a.options.message }) : null
977
+ ] }),
978
+ a.kind === "prompt" ? (
979
+ // Keyed by the ask, so a second prompt starts empty.
980
+ /* @__PURE__ */ jsxRuntime.jsx(PromptBody, { ask: a }, a.id)
981
+ ) : /* @__PURE__ */ jsxRuntime.jsxs(DialogFooter, { children: [
982
+ /* @__PURE__ */ jsxRuntime.jsx(Button, { variant: "secondary", onClick: cancel, children: a.options.cancelLabel ?? "Cancel" }),
983
+ /* @__PURE__ */ jsxRuntime.jsx(
984
+ Button,
985
+ {
986
+ variant: a.options.destructive ? "danger" : "primary",
987
+ onClick: () => {
988
+ a.settle(true);
989
+ done();
990
+ },
991
+ children: a.options.confirmLabel ?? "Continue"
992
+ }
993
+ )
994
+ ] })
995
+ ]
996
+ }
997
+ ) : null });
998
+ }
999
+ var N = new Intl.NumberFormat("en-US");
1000
+ function Pagination({
1001
+ pageIndex,
1002
+ pageSize,
1003
+ total,
1004
+ onPage,
1005
+ label = "Pages",
1006
+ className
1007
+ }) {
1008
+ const pages = Math.max(1, Math.ceil(total / pageSize));
1009
+ const index = Math.min(Math.max(0, pageIndex), pages - 1);
1010
+ if (index !== pageIndex && typeof process !== "undefined" && process.env.NODE_ENV !== "production") {
1011
+ console.warn(`Pagination: pageIndex ${pageIndex} is outside 0\u2013${pages - 1}; it counts from 0.`);
1012
+ }
1013
+ if (total <= pageSize) return null;
1014
+ const from = index * pageSize + 1;
1015
+ const to = Math.min(total, (index + 1) * pageSize);
1016
+ return /* @__PURE__ */ jsxRuntime.jsxs("nav", { "aria-label": label, className: cn("flex items-center justify-between gap-4", className), children: [
1017
+ /* @__PURE__ */ jsxRuntime.jsxs("p", { "aria-live": "polite", className: "oca-tabular text-[0.875rem] text-muted-foreground", children: [
1018
+ N.format(from),
1019
+ "\u2013",
1020
+ N.format(to),
1021
+ " of ",
1022
+ N.format(total)
1023
+ ] }),
1024
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
1025
+ /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "secondary", size: "sm", disabled: index === 0, onClick: () => onPage(index - 1), className: "pl-3", children: [
1026
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { "aria-hidden": true }),
1027
+ "Previous"
1028
+ ] }),
1029
+ /* @__PURE__ */ jsxRuntime.jsxs(Button, { variant: "secondary", size: "sm", disabled: index >= pages - 1, onClick: () => onPage(index + 1), className: "pr-3", children: [
1030
+ "Next",
1031
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { "aria-hidden": true })
1032
+ ] })
1033
+ ] })
1034
+ ] });
1035
+ }
1036
+ function QrCode({
1037
+ value,
1038
+ size = 200,
1039
+ label,
1040
+ className
1041
+ }) {
1042
+ const matrix = react.useMemo(() => {
1043
+ try {
1044
+ return QRCode__default.default.create(value, { errorCorrectionLevel: "M" }).modules;
1045
+ } catch {
1046
+ return null;
1047
+ }
1048
+ }, [value]);
1049
+ const path = react.useMemo(() => {
1050
+ if (!matrix) return "";
1051
+ let d = "";
1052
+ for (let y = 0; y < matrix.size; y++) {
1053
+ for (let x = 0; x < matrix.size; x++) {
1054
+ if (matrix.get(y, x)) d += `M${x} ${y}h1v1h-1z`;
1055
+ }
1056
+ }
1057
+ return d;
1058
+ }, [matrix]);
1059
+ const short = value.length > 28 ? `${value.slice(0, 28)}\u2026` : value;
1060
+ return /* @__PURE__ */ jsxRuntime.jsx(
1061
+ "div",
1062
+ {
1063
+ role: "img",
1064
+ "aria-label": matrix ? label ?? `QR code for ${short}` : "Too long for a QR code",
1065
+ className: cn("inline-block shrink-0 rounded-2xl bg-white p-3 ring-1 ring-border", className),
1066
+ style: { width: size, height: size },
1067
+ children: matrix ? /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: `0 0 ${matrix.size} ${matrix.size}`, shapeRendering: "crispEdges", "aria-hidden": true, className: "block size-full", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: path, fill: "#0a0a0a" }) }) : /* @__PURE__ */ jsxRuntime.jsx("div", { "aria-hidden": true, className: "flex size-full items-center justify-center text-center text-[0.8125rem] text-[#54585e]", children: "Too long for a QR code" })
1068
+ }
1069
+ );
1070
+ }
759
1071
 
760
1072
  Object.defineProperty(exports, "toast", {
761
1073
  enumerable: true,
762
1074
  get: function () { return sonner.toast; }
763
1075
  });
1076
+ exports.Accordion = Accordion;
1077
+ exports.AccordionItem = AccordionItem;
764
1078
  exports.Badge = Badge;
765
1079
  exports.Button = Button;
766
1080
  exports.Card = Card;
@@ -771,12 +1085,14 @@ exports.CardHeader = CardHeader;
771
1085
  exports.CardNumeral = CardNumeral;
772
1086
  exports.CardTitle = CardTitle;
773
1087
  exports.Checkbox = Checkbox;
1088
+ exports.DensityProvider = DensityProvider;
774
1089
  exports.Dialog = Dialog;
775
1090
  exports.DialogClose = DialogClose;
776
1091
  exports.DialogContent = DialogContent;
777
1092
  exports.DialogDescription = DialogDescription;
778
1093
  exports.DialogFooter = DialogFooter;
779
1094
  exports.DialogHeader = DialogHeader;
1095
+ exports.DialogHost = DialogHost;
780
1096
  exports.DialogTitle = DialogTitle;
781
1097
  exports.DialogTrigger = DialogTrigger;
782
1098
  exports.DropdownMenu = DropdownMenu;
@@ -790,10 +1106,12 @@ exports.Field = Field;
790
1106
  exports.Input = Input;
791
1107
  exports.Kbd = Kbd;
792
1108
  exports.Label = Label;
1109
+ exports.Pagination = Pagination;
793
1110
  exports.Popover = Popover;
794
1111
  exports.PopoverAnchor = PopoverAnchor;
795
1112
  exports.PopoverContent = PopoverContent;
796
1113
  exports.PopoverTrigger = PopoverTrigger;
1114
+ exports.QrCode = QrCode;
797
1115
  exports.RadioGroup = RadioGroup;
798
1116
  exports.RadioGroupItem = RadioGroupItem;
799
1117
  exports.ScrollFade = ScrollFade;
@@ -812,6 +1130,7 @@ exports.SheetTitle = SheetTitle;
812
1130
  exports.SheetTrigger = SheetTrigger;
813
1131
  exports.Skeleton = Skeleton;
814
1132
  exports.Spinner = Spinner;
1133
+ exports.StatusBadge = StatusBadge;
815
1134
  exports.StatusDot = StatusDot;
816
1135
  exports.StatusPill = StatusPill;
817
1136
  exports.Switch = Switch;
@@ -829,6 +1148,10 @@ exports.badgeVariants = badgeVariants;
829
1148
  exports.buttonVariants = buttonVariants;
830
1149
  exports.cardVariants = cardVariants;
831
1150
  exports.cn = cn;
1151
+ exports.confirm = confirm;
1152
+ exports.prompt = prompt;
1153
+ exports.statusWord = statusWord;
1154
+ exports.useDensity = useDensity;
832
1155
  exports.useTimedOut = useTimedOut;
833
1156
  //# sourceMappingURL=primitives.js.map
834
1157
  //# sourceMappingURL=primitives.js.map