@axtec/components 0.1.5 → 0.1.6

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 (80) hide show
  1. package/README.md +6 -0
  2. package/dist/components/OptionDivider/OptionDivider.d.ts +5 -0
  3. package/dist/components/OptionDivider/index.d.ts +1 -0
  4. package/dist/components/SelectionCard/SelectionCard.d.ts +12 -0
  5. package/dist/components/SelectionCard/index.d.ts +1 -0
  6. package/dist/components/index.d.ts +2 -0
  7. package/dist/index.css +1 -1
  8. package/dist/index.js +106 -102
  9. package/dist/index.js.map +1 -1
  10. package/dist/index12.js +1 -1
  11. package/dist/index3.js +2 -2
  12. package/dist/index43.js +12 -14
  13. package/dist/index43.js.map +1 -1
  14. package/dist/index44.js +11 -87
  15. package/dist/index44.js.map +1 -1
  16. package/dist/index45.js +91 -69
  17. package/dist/index45.js.map +1 -1
  18. package/dist/index46.js +68 -121
  19. package/dist/index46.js.map +1 -1
  20. package/dist/index47.js +118 -36
  21. package/dist/index47.js.map +1 -1
  22. package/dist/index48.js +40 -44
  23. package/dist/index48.js.map +1 -1
  24. package/dist/index49.js +44 -56
  25. package/dist/index49.js.map +1 -1
  26. package/dist/index50.js +56 -16
  27. package/dist/index50.js.map +1 -1
  28. package/dist/index51.js +16 -65
  29. package/dist/index51.js.map +1 -1
  30. package/dist/index52.js +62 -51
  31. package/dist/index52.js.map +1 -1
  32. package/dist/index53.js +54 -37
  33. package/dist/index53.js.map +1 -1
  34. package/dist/index54.js +37 -66
  35. package/dist/index54.js.map +1 -1
  36. package/dist/index55.js +63 -19
  37. package/dist/index55.js.map +1 -1
  38. package/dist/index56.js +19 -101
  39. package/dist/index56.js.map +1 -1
  40. package/dist/index57.js +99 -213
  41. package/dist/index57.js.map +1 -1
  42. package/dist/index58.js +58 -62
  43. package/dist/index58.js.map +1 -1
  44. package/dist/index59.js +206 -224
  45. package/dist/index59.js.map +1 -1
  46. package/dist/index60.js +62 -96
  47. package/dist/index60.js.map +1 -1
  48. package/dist/index61.js +233 -33
  49. package/dist/index61.js.map +1 -1
  50. package/dist/index62.js +98 -14
  51. package/dist/index62.js.map +1 -1
  52. package/dist/index63.js +35 -59
  53. package/dist/index63.js.map +1 -1
  54. package/dist/index64.js +16 -59
  55. package/dist/index64.js.map +1 -1
  56. package/dist/index65.js +57 -72
  57. package/dist/index65.js.map +1 -1
  58. package/dist/index66.js +58 -106
  59. package/dist/index66.js.map +1 -1
  60. package/dist/index67.js +70 -43
  61. package/dist/index67.js.map +1 -1
  62. package/dist/index68.js +101 -40
  63. package/dist/index68.js.map +1 -1
  64. package/dist/index69.js +44 -72
  65. package/dist/index69.js.map +1 -1
  66. package/dist/index70.js +47 -53
  67. package/dist/index70.js.map +1 -1
  68. package/dist/index71.js +70 -62
  69. package/dist/index71.js.map +1 -1
  70. package/dist/index72.js +46 -28
  71. package/dist/index72.js.map +1 -1
  72. package/dist/index73.js +67 -13
  73. package/dist/index73.js.map +1 -1
  74. package/dist/index74.js +35 -2263
  75. package/dist/index74.js.map +1 -1
  76. package/dist/index75.js +17 -0
  77. package/dist/index75.js.map +1 -0
  78. package/dist/index76.js +2267 -0
  79. package/dist/index76.js.map +1 -0
  80. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index51.js","sources":["../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\n\nexport interface RadioOption {\n value: string\n label: string\n description?: string\n disabled?: boolean\n}\n\nexport interface RadioGroupProps {\n options: RadioOption[]\n value?: string\n onChange?: (value: string) => void\n name: string\n orientation?: 'horizontal' | 'vertical'\n className?: string\n}\n\nexport function RadioGroup({\n options,\n value,\n onChange,\n name,\n orientation = 'vertical',\n className,\n}: RadioGroupProps) {\n return (\n <div\n className={cn(\n 'flex gap-3',\n orientation === 'vertical' ? 'flex-col' : 'flex-row flex-wrap',\n className\n )}\n role=\"radiogroup\"\n >\n {options.map((option) => (\n <label\n key={option.value}\n className={cn(\n 'flex items-start gap-3 cursor-pointer group',\n option.disabled && 'opacity-50 cursor-not-allowed'\n )}\n >\n <div className=\"relative flex-shrink-0 mt-0.5\">\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={value === option.value}\n onChange={() => onChange?.(option.value)}\n disabled={option.disabled}\n className=\"peer sr-only\"\n />\n <div\n className={cn(\n 'h-5 w-5 rounded-full border-2 transition-colors duration-200',\n 'flex items-center justify-center',\n 'peer-focus:ring-2 peer-focus:ring-primary-500 peer-focus:ring-offset-2',\n value === option.value\n ? 'border-primary-500'\n : 'border-slate-300 group-hover:border-slate-400'\n )}\n >\n {value === option.value && (\n <div className=\"h-2.5 w-2.5 rounded-full bg-primary-500\" />\n )}\n </div>\n </div>\n <div className=\"flex flex-col\">\n <span className=\"text-sm font-medium text-slate-900\">\n {option.label}\n </span>\n {option.description && (\n <span className=\"text-sm text-slate-500\">{option.description}</span>\n )}\n </div>\n </label>\n ))}\n </div>\n )\n}\n"],"names":["RadioGroup","options","value","onChange","name","orientation","className","jsx","cn","option","jsxs"],"mappings":";;AAkBO,SAASA,EAAW;AAAA,EACzB,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,WAAAC;AACF,GAAoB;AAClB,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAH,MAAgB,aAAa,aAAa;AAAA,QAC1CC;AAAA,MAAA;AAAA,MAEF,MAAK;AAAA,MAEJ,UAAAL,EAAQ,IAAI,CAACQ,MACZ,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAWF;AAAA,YACT;AAAA,YACAC,EAAO,YAAY;AAAA,UAAA;AAAA,UAGrB,UAAA;AAAA,YAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,iCACb,UAAA;AAAA,cAAA,gBAAAH;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,MAAAH;AAAA,kBACA,OAAOK,EAAO;AAAA,kBACd,SAASP,MAAUO,EAAO;AAAA,kBAC1B,UAAU,MAAMN,KAAA,gBAAAA,EAAWM,EAAO;AAAA,kBAClC,UAAUA,EAAO;AAAA,kBACjB,WAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEZ,gBAAAF;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWC;AAAA,oBACT;AAAA,oBACA;AAAA,oBACA;AAAA,oBACAN,MAAUO,EAAO,QACb,uBACA;AAAA,kBAAA;AAAA,kBAGL,gBAAUA,EAAO,SAChB,gBAAAF,EAAC,OAAA,EAAI,WAAU,0CAAA,CAA0C;AAAA,gBAAA;AAAA,cAAA;AAAA,YAE7D,GACF;AAAA,YACA,gBAAAG,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,cAAA,gBAAAH,EAAC,QAAA,EAAK,WAAU,sCACb,UAAAE,EAAO,OACV;AAAA,cACCA,EAAO,eACN,gBAAAF,EAAC,UAAK,WAAU,0BAA0B,YAAO,YAAA,CAAY;AAAA,YAAA,EAAA,CAEjE;AAAA,UAAA;AAAA,QAAA;AAAA,QAtCKE,EAAO;AAAA,MAAA,CAwCf;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"index51.js","sources":["../src/components/QuickActions/QuickActions.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\nimport { cn } from '@/lib/utils'\n\nexport interface QuickActionsProps {\n children: ReactNode\n bottom?: number\n right?: number\n className?: string\n}\n\nexport const QuickActions = ({\n children,\n bottom = 60,\n right = 18,\n className,\n}: QuickActionsProps) => {\n return (\n <div\n className={cn('fixed z-10', className)}\n style={{ bottom: `${bottom}px`, right: `${right}px` }}\n >\n {children}\n </div>\n )\n}\n"],"names":["QuickActions","children","bottom","right","className","jsx","cn"],"mappings":";;AAUO,MAAMA,IAAe,CAAC;AAAA,EAC3B,UAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,OAAAC,IAAQ;AAAA,EACR,WAAAC;AACF,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC,EAAG,cAAcF,CAAS;AAAA,IACrC,OAAO,EAAE,QAAQ,GAAGF,CAAM,MAAM,OAAO,GAAGC,CAAK,KAAA;AAAA,IAE9C,UAAAF;AAAA,EAAA;AAAA;"}
package/dist/index52.js CHANGED
@@ -1,57 +1,68 @@
1
- import { jsxs as S, jsx as e } from "react/jsx-runtime";
2
- import { useState as M } from "react";
3
- import { cn as r } from "./index3.js";
4
- import { StarIcon as V } from "@heroicons/react/24/solid";
5
- import { StarIcon as w } from "@heroicons/react/24/outline";
6
- const y = {
7
- sm: "w-4 h-4",
8
- md: "w-6 h-6",
9
- lg: "w-8 h-8"
10
- }, E = ({
11
- value: d = 0,
12
- onChange: n,
13
- max: a = 5,
14
- size: p = "md",
15
- readonly: t = !1,
16
- label: l,
17
- error: c,
18
- className: h
19
- }) => {
20
- const [i, m] = M(null), x = (s) => {
21
- !t && n && n(s);
22
- }, b = (s) => {
23
- t || m(s);
24
- }, g = () => {
25
- m(null);
26
- }, v = i !== null ? i : d, u = y[p];
27
- return /* @__PURE__ */ S("div", { className: r("flex flex-col", h), children: [
28
- l && /* @__PURE__ */ e("span", { className: "text-sm font-semibold text-slate-700 mb-2", children: l }),
29
- /* @__PURE__ */ e("div", { className: "flex items-center gap-1", children: Array.from({ length: a }, (s, f) => {
30
- const o = f + 1, N = o <= v;
31
- return /* @__PURE__ */ e(
32
- "button",
1
+ import { jsx as r, jsxs as s } from "react/jsx-runtime";
2
+ import { cn as c } from "./index3.js";
3
+ function o({
4
+ options: d,
5
+ value: l,
6
+ onChange: a,
7
+ name: i,
8
+ orientation: t = "vertical",
9
+ className: m
10
+ }) {
11
+ return /* @__PURE__ */ r(
12
+ "div",
13
+ {
14
+ className: c(
15
+ "flex gap-3",
16
+ t === "vertical" ? "flex-col" : "flex-row flex-wrap",
17
+ m
18
+ ),
19
+ role: "radiogroup",
20
+ children: d.map((e) => /* @__PURE__ */ s(
21
+ "label",
33
22
  {
34
- type: "button",
35
- onClick: () => x(o),
36
- onMouseEnter: () => b(o),
37
- onMouseLeave: g,
38
- disabled: t,
39
- className: r(
40
- "p-0 border-0 bg-transparent",
41
- t ? "cursor-default" : "cursor-pointer",
42
- "transition-transform hover:scale-110",
43
- "focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-1 rounded"
23
+ className: c(
24
+ "flex items-start gap-3 cursor-pointer group",
25
+ e.disabled && "opacity-50 cursor-not-allowed"
44
26
  ),
45
- "aria-label": `Rate ${o} out of ${a}`,
46
- children: N ? /* @__PURE__ */ e(V, { className: r(u, "text-primary-500") }) : /* @__PURE__ */ e(w, { className: r(u, "text-slate-300") })
27
+ children: [
28
+ /* @__PURE__ */ s("div", { className: "relative flex-shrink-0 mt-0.5", children: [
29
+ /* @__PURE__ */ r(
30
+ "input",
31
+ {
32
+ type: "radio",
33
+ name: i,
34
+ value: e.value,
35
+ checked: l === e.value,
36
+ onChange: () => a == null ? void 0 : a(e.value),
37
+ disabled: e.disabled,
38
+ className: "peer sr-only"
39
+ }
40
+ ),
41
+ /* @__PURE__ */ r(
42
+ "div",
43
+ {
44
+ className: c(
45
+ "h-5 w-5 rounded-full border-2 transition-colors duration-200",
46
+ "flex items-center justify-center",
47
+ "peer-focus:ring-2 peer-focus:ring-primary-500 peer-focus:ring-offset-2",
48
+ l === e.value ? "border-primary-500" : "border-slate-300 group-hover:border-slate-400"
49
+ ),
50
+ children: l === e.value && /* @__PURE__ */ r("div", { className: "h-2.5 w-2.5 rounded-full bg-primary-500" })
51
+ }
52
+ )
53
+ ] }),
54
+ /* @__PURE__ */ s("div", { className: "flex flex-col", children: [
55
+ /* @__PURE__ */ r("span", { className: "text-sm font-medium text-slate-900", children: e.label }),
56
+ e.description && /* @__PURE__ */ r("span", { className: "text-sm text-slate-500", children: e.description })
57
+ ] })
58
+ ]
47
59
  },
48
- f
49
- );
50
- }) }),
51
- c && /* @__PURE__ */ e("span", { className: "text-sm text-red-500 mt-1", children: c })
52
- ] });
53
- };
60
+ e.value
61
+ ))
62
+ }
63
+ );
64
+ }
54
65
  export {
55
- E as Rating
66
+ o as RadioGroup
56
67
  };
57
68
  //# sourceMappingURL=index52.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index52.js","sources":["../src/components/Rating/Rating.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { cn } from '@/lib/utils'\nimport { StarIcon as StarSolid } from '@heroicons/react/24/solid'\nimport { StarIcon as StarOutline } from '@heroicons/react/24/outline'\n\nexport interface RatingProps {\n value?: number\n onChange?: (rating: number) => void\n max?: number\n size?: 'sm' | 'md' | 'lg'\n readonly?: boolean\n label?: string\n error?: string\n className?: string\n}\n\nconst sizeStyles = {\n sm: 'w-4 h-4',\n md: 'w-6 h-6',\n lg: 'w-8 h-8',\n}\n\nexport const Rating = ({\n value = 0,\n onChange,\n max = 5,\n size = 'md',\n readonly = false,\n label,\n error,\n className,\n}: RatingProps) => {\n const [hoverValue, setHoverValue] = useState<number | null>(null)\n\n const handleClick = (rating: number) => {\n if (!readonly && onChange) {\n onChange(rating)\n }\n }\n\n const handleMouseEnter = (rating: number) => {\n if (!readonly) {\n setHoverValue(rating)\n }\n }\n\n const handleMouseLeave = () => {\n setHoverValue(null)\n }\n\n const displayValue = hoverValue !== null ? hoverValue : value\n const iconClass = sizeStyles[size]\n\n return (\n <div className={cn('flex flex-col', className)}>\n {label && (\n <span className=\"text-sm font-semibold text-slate-700 mb-2\">\n {label}\n </span>\n )}\n <div className=\"flex items-center gap-1\">\n {Array.from({ length: max }, (_, index) => {\n const starValue = index + 1\n const isFilled = starValue <= displayValue\n\n return (\n <button\n key={index}\n type=\"button\"\n onClick={() => handleClick(starValue)}\n onMouseEnter={() => handleMouseEnter(starValue)}\n onMouseLeave={handleMouseLeave}\n disabled={readonly}\n className={cn(\n 'p-0 border-0 bg-transparent',\n readonly ? 'cursor-default' : 'cursor-pointer',\n 'transition-transform hover:scale-110',\n 'focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-1 rounded'\n )}\n aria-label={`Rate ${starValue} out of ${max}`}\n >\n {isFilled ? (\n <StarSolid className={cn(iconClass, 'text-primary-500')} />\n ) : (\n <StarOutline className={cn(iconClass, 'text-slate-300')} />\n )}\n </button>\n )\n })}\n </div>\n {error && (\n <span className=\"text-sm text-red-500 mt-1\">{error}</span>\n )}\n </div>\n )\n}\n"],"names":["sizeStyles","Rating","value","onChange","max","size","readonly","label","error","className","hoverValue","setHoverValue","useState","handleClick","rating","handleMouseEnter","handleMouseLeave","displayValue","iconClass","cn","jsx","_","index","starValue","isFilled","StarSolid","StarOutline"],"mappings":";;;;;AAgBA,MAAMA,IAAa;AAAA,EACjB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEaC,IAAS,CAAC;AAAA,EACrB,OAAAC,IAAQ;AAAA,EACR,UAAAC;AAAA,EACA,KAAAC,IAAM;AAAA,EACN,MAAAC,IAAO;AAAA,EACP,UAAAC,IAAW;AAAA,EACX,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AACF,MAAmB;AACjB,QAAM,CAACC,GAAYC,CAAa,IAAIC,EAAwB,IAAI,GAE1DC,IAAc,CAACC,MAAmB;AACtC,IAAI,CAACR,KAAYH,KACfA,EAASW,CAAM;AAAA,EAEnB,GAEMC,IAAmB,CAACD,MAAmB;AAC3C,IAAKR,KACHK,EAAcG,CAAM;AAAA,EAExB,GAEME,IAAmB,MAAM;AAC7B,IAAAL,EAAc,IAAI;AAAA,EACpB,GAEMM,IAAeP,MAAe,OAAOA,IAAaR,GAClDgB,IAAYlB,EAAWK,CAAI;AAEjC,2BACG,OAAA,EAAI,WAAWc,EAAG,iBAAiBV,CAAS,GAC1C,UAAA;AAAA,IAAAF,KACC,gBAAAa,EAAC,QAAA,EAAK,WAAU,6CACb,UAAAb,GACH;AAAA,IAEF,gBAAAa,EAAC,OAAA,EAAI,WAAU,2BACZ,UAAA,MAAM,KAAK,EAAE,QAAQhB,EAAA,GAAO,CAACiB,GAAGC,MAAU;AACzC,YAAMC,IAAYD,IAAQ,GACpBE,IAAWD,KAAaN;AAE9B,aACE,gBAAAG;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,MAAK;AAAA,UACL,SAAS,MAAMP,EAAYU,CAAS;AAAA,UACpC,cAAc,MAAMR,EAAiBQ,CAAS;AAAA,UAC9C,cAAcP;AAAA,UACd,UAAUV;AAAA,UACV,WAAWa;AAAA,YACT;AAAA,YACAb,IAAW,mBAAmB;AAAA,YAC9B;AAAA,YACA;AAAA,UAAA;AAAA,UAEF,cAAY,QAAQiB,CAAS,WAAWnB,CAAG;AAAA,UAE1C,UAAAoB,IACC,gBAAAJ,EAACK,GAAA,EAAU,WAAWN,EAAGD,GAAW,kBAAkB,EAAA,CAAG,sBAExDQ,GAAA,EAAY,WAAWP,EAAGD,GAAW,gBAAgB,EAAA,CAAG;AAAA,QAAA;AAAA,QAjBtDI;AAAA,MAAA;AAAA,IAqBX,CAAC,EAAA,CACH;AAAA,IACCd,KACC,gBAAAY,EAAC,QAAA,EAAK,WAAU,6BAA6B,UAAAZ,EAAA,CAAM;AAAA,EAAA,GAEvD;AAEJ;"}
1
+ {"version":3,"file":"index52.js","sources":["../src/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\n\nexport interface RadioOption {\n value: string\n label: string\n description?: string\n disabled?: boolean\n}\n\nexport interface RadioGroupProps {\n options: RadioOption[]\n value?: string\n onChange?: (value: string) => void\n name: string\n orientation?: 'horizontal' | 'vertical'\n className?: string\n}\n\nexport function RadioGroup({\n options,\n value,\n onChange,\n name,\n orientation = 'vertical',\n className,\n}: RadioGroupProps) {\n return (\n <div\n className={cn(\n 'flex gap-3',\n orientation === 'vertical' ? 'flex-col' : 'flex-row flex-wrap',\n className\n )}\n role=\"radiogroup\"\n >\n {options.map((option) => (\n <label\n key={option.value}\n className={cn(\n 'flex items-start gap-3 cursor-pointer group',\n option.disabled && 'opacity-50 cursor-not-allowed'\n )}\n >\n <div className=\"relative flex-shrink-0 mt-0.5\">\n <input\n type=\"radio\"\n name={name}\n value={option.value}\n checked={value === option.value}\n onChange={() => onChange?.(option.value)}\n disabled={option.disabled}\n className=\"peer sr-only\"\n />\n <div\n className={cn(\n 'h-5 w-5 rounded-full border-2 transition-colors duration-200',\n 'flex items-center justify-center',\n 'peer-focus:ring-2 peer-focus:ring-primary-500 peer-focus:ring-offset-2',\n value === option.value\n ? 'border-primary-500'\n : 'border-slate-300 group-hover:border-slate-400'\n )}\n >\n {value === option.value && (\n <div className=\"h-2.5 w-2.5 rounded-full bg-primary-500\" />\n )}\n </div>\n </div>\n <div className=\"flex flex-col\">\n <span className=\"text-sm font-medium text-slate-900\">\n {option.label}\n </span>\n {option.description && (\n <span className=\"text-sm text-slate-500\">{option.description}</span>\n )}\n </div>\n </label>\n ))}\n </div>\n )\n}\n"],"names":["RadioGroup","options","value","onChange","name","orientation","className","jsx","cn","option","jsxs"],"mappings":";;AAkBO,SAASA,EAAW;AAAA,EACzB,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,WAAAC;AACF,GAAoB;AAClB,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAH,MAAgB,aAAa,aAAa;AAAA,QAC1CC;AAAA,MAAA;AAAA,MAEF,MAAK;AAAA,MAEJ,UAAAL,EAAQ,IAAI,CAACQ,MACZ,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,WAAWF;AAAA,YACT;AAAA,YACAC,EAAO,YAAY;AAAA,UAAA;AAAA,UAGrB,UAAA;AAAA,YAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,iCACb,UAAA;AAAA,cAAA,gBAAAH;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,MAAAH;AAAA,kBACA,OAAOK,EAAO;AAAA,kBACd,SAASP,MAAUO,EAAO;AAAA,kBAC1B,UAAU,MAAMN,KAAA,gBAAAA,EAAWM,EAAO;AAAA,kBAClC,UAAUA,EAAO;AAAA,kBACjB,WAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEZ,gBAAAF;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWC;AAAA,oBACT;AAAA,oBACA;AAAA,oBACA;AAAA,oBACAN,MAAUO,EAAO,QACb,uBACA;AAAA,kBAAA;AAAA,kBAGL,gBAAUA,EAAO,SAChB,gBAAAF,EAAC,OAAA,EAAI,WAAU,0CAAA,CAA0C;AAAA,gBAAA;AAAA,cAAA;AAAA,YAE7D,GACF;AAAA,YACA,gBAAAG,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,cAAA,gBAAAH,EAAC,QAAA,EAAK,WAAU,sCACb,UAAAE,EAAO,OACV;AAAA,cACCA,EAAO,eACN,gBAAAF,EAAC,UAAK,WAAU,0BAA0B,YAAO,YAAA,CAAY;AAAA,YAAA,EAAA,CAEjE;AAAA,UAAA;AAAA,QAAA;AAAA,QAtCKE,EAAO;AAAA,MAAA,CAwCf;AAAA,IAAA;AAAA,EAAA;AAGP;"}
package/dist/index53.js CHANGED
@@ -1,40 +1,57 @@
1
- import { jsx as o } from "react/jsx-runtime";
2
- import { cn as c } from "./index3.js";
3
- const f = {
4
- start: "items-start",
5
- center: "items-center",
6
- end: "items-end",
7
- stretch: "items-stretch"
8
- }, u = {
9
- start: "justify-start",
10
- center: "justify-center",
11
- end: "justify-end",
12
- between: "justify-between",
13
- around: "justify-around"
14
- }, y = ({
15
- children: s,
16
- height: t = 48,
17
- className: r,
18
- gap: e,
19
- align: n = "center",
20
- justify: i = "start"
21
- }) => /* @__PURE__ */ o(
22
- "div",
23
- {
24
- className: c(
25
- "flex flex-row w-full",
26
- f[n],
27
- u[i],
28
- r
29
- ),
30
- style: {
31
- height: typeof t == "number" ? `${t}px` : t,
32
- gap: e ? `${e}px` : void 0
33
- },
34
- children: s
35
- }
36
- );
1
+ import { jsxs as S, jsx as e } from "react/jsx-runtime";
2
+ import { useState as M } from "react";
3
+ import { cn as r } from "./index3.js";
4
+ import { StarIcon as V } from "@heroicons/react/24/solid";
5
+ import { StarIcon as w } from "@heroicons/react/24/outline";
6
+ const y = {
7
+ sm: "w-4 h-4",
8
+ md: "w-6 h-6",
9
+ lg: "w-8 h-8"
10
+ }, E = ({
11
+ value: d = 0,
12
+ onChange: n,
13
+ max: a = 5,
14
+ size: p = "md",
15
+ readonly: t = !1,
16
+ label: l,
17
+ error: c,
18
+ className: h
19
+ }) => {
20
+ const [i, m] = M(null), x = (s) => {
21
+ !t && n && n(s);
22
+ }, b = (s) => {
23
+ t || m(s);
24
+ }, g = () => {
25
+ m(null);
26
+ }, v = i !== null ? i : d, u = y[p];
27
+ return /* @__PURE__ */ S("div", { className: r("flex flex-col", h), children: [
28
+ l && /* @__PURE__ */ e("span", { className: "text-sm font-semibold text-slate-700 mb-2", children: l }),
29
+ /* @__PURE__ */ e("div", { className: "flex items-center gap-1", children: Array.from({ length: a }, (s, f) => {
30
+ const o = f + 1, N = o <= v;
31
+ return /* @__PURE__ */ e(
32
+ "button",
33
+ {
34
+ type: "button",
35
+ onClick: () => x(o),
36
+ onMouseEnter: () => b(o),
37
+ onMouseLeave: g,
38
+ disabled: t,
39
+ className: r(
40
+ "p-0 border-0 bg-transparent",
41
+ t ? "cursor-default" : "cursor-pointer",
42
+ "transition-transform hover:scale-110",
43
+ "focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-1 rounded"
44
+ ),
45
+ "aria-label": `Rate ${o} out of ${a}`,
46
+ children: N ? /* @__PURE__ */ e(V, { className: r(u, "text-primary-500") }) : /* @__PURE__ */ e(w, { className: r(u, "text-slate-300") })
47
+ },
48
+ f
49
+ );
50
+ }) }),
51
+ c && /* @__PURE__ */ e("span", { className: "text-sm text-red-500 mt-1", children: c })
52
+ ] });
53
+ };
37
54
  export {
38
- y as Row
55
+ E as Rating
39
56
  };
40
57
  //# sourceMappingURL=index53.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index53.js","sources":["../src/components/Row/Row.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\nimport { cn } from '@/lib/utils'\n\nexport interface RowProps {\n children: ReactNode\n height?: number | string\n className?: string\n gap?: number\n align?: 'start' | 'center' | 'end' | 'stretch'\n justify?: 'start' | 'center' | 'end' | 'between' | 'around'\n}\n\nconst alignStyles = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n}\n\nconst justifyStyles = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n}\n\nexport const Row = ({\n children,\n height = 48,\n className,\n gap,\n align = 'center',\n justify = 'start',\n}: RowProps) => {\n return (\n <div\n className={cn(\n 'flex flex-row w-full',\n alignStyles[align],\n justifyStyles[justify],\n className\n )}\n style={{\n height: typeof height === 'number' ? `${height}px` : height,\n gap: gap ? `${gap}px` : undefined,\n }}\n >\n {children}\n </div>\n )\n}\n"],"names":["alignStyles","justifyStyles","Row","children","height","className","gap","align","justify","jsx","cn"],"mappings":";;AAYA,MAAMA,IAAc;AAAA,EAClB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,SAAS;AACX,GAEMC,IAAgB;AAAA,EACpB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,SAAS;AAAA,EACT,QAAQ;AACV,GAEaC,IAAM,CAAC;AAAA,EAClB,UAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,WAAAC;AAAA,EACA,KAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,SAAAC,IAAU;AACZ,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAV,EAAYO,CAAK;AAAA,MACjBN,EAAcO,CAAO;AAAA,MACrBH;AAAA,IAAA;AAAA,IAEF,OAAO;AAAA,MACL,QAAQ,OAAOD,KAAW,WAAW,GAAGA,CAAM,OAAOA;AAAA,MACrD,KAAKE,IAAM,GAAGA,CAAG,OAAO;AAAA,IAAA;AAAA,IAGzB,UAAAH;AAAA,EAAA;AAAA;"}
1
+ {"version":3,"file":"index53.js","sources":["../src/components/Rating/Rating.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { cn } from '@/lib/utils'\nimport { StarIcon as StarSolid } from '@heroicons/react/24/solid'\nimport { StarIcon as StarOutline } from '@heroicons/react/24/outline'\n\nexport interface RatingProps {\n value?: number\n onChange?: (rating: number) => void\n max?: number\n size?: 'sm' | 'md' | 'lg'\n readonly?: boolean\n label?: string\n error?: string\n className?: string\n}\n\nconst sizeStyles = {\n sm: 'w-4 h-4',\n md: 'w-6 h-6',\n lg: 'w-8 h-8',\n}\n\nexport const Rating = ({\n value = 0,\n onChange,\n max = 5,\n size = 'md',\n readonly = false,\n label,\n error,\n className,\n}: RatingProps) => {\n const [hoverValue, setHoverValue] = useState<number | null>(null)\n\n const handleClick = (rating: number) => {\n if (!readonly && onChange) {\n onChange(rating)\n }\n }\n\n const handleMouseEnter = (rating: number) => {\n if (!readonly) {\n setHoverValue(rating)\n }\n }\n\n const handleMouseLeave = () => {\n setHoverValue(null)\n }\n\n const displayValue = hoverValue !== null ? hoverValue : value\n const iconClass = sizeStyles[size]\n\n return (\n <div className={cn('flex flex-col', className)}>\n {label && (\n <span className=\"text-sm font-semibold text-slate-700 mb-2\">\n {label}\n </span>\n )}\n <div className=\"flex items-center gap-1\">\n {Array.from({ length: max }, (_, index) => {\n const starValue = index + 1\n const isFilled = starValue <= displayValue\n\n return (\n <button\n key={index}\n type=\"button\"\n onClick={() => handleClick(starValue)}\n onMouseEnter={() => handleMouseEnter(starValue)}\n onMouseLeave={handleMouseLeave}\n disabled={readonly}\n className={cn(\n 'p-0 border-0 bg-transparent',\n readonly ? 'cursor-default' : 'cursor-pointer',\n 'transition-transform hover:scale-110',\n 'focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-1 rounded'\n )}\n aria-label={`Rate ${starValue} out of ${max}`}\n >\n {isFilled ? (\n <StarSolid className={cn(iconClass, 'text-primary-500')} />\n ) : (\n <StarOutline className={cn(iconClass, 'text-slate-300')} />\n )}\n </button>\n )\n })}\n </div>\n {error && (\n <span className=\"text-sm text-red-500 mt-1\">{error}</span>\n )}\n </div>\n )\n}\n"],"names":["sizeStyles","Rating","value","onChange","max","size","readonly","label","error","className","hoverValue","setHoverValue","useState","handleClick","rating","handleMouseEnter","handleMouseLeave","displayValue","iconClass","cn","jsx","_","index","starValue","isFilled","StarSolid","StarOutline"],"mappings":";;;;;AAgBA,MAAMA,IAAa;AAAA,EACjB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,GAEaC,IAAS,CAAC;AAAA,EACrB,OAAAC,IAAQ;AAAA,EACR,UAAAC;AAAA,EACA,KAAAC,IAAM;AAAA,EACN,MAAAC,IAAO;AAAA,EACP,UAAAC,IAAW;AAAA,EACX,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AACF,MAAmB;AACjB,QAAM,CAACC,GAAYC,CAAa,IAAIC,EAAwB,IAAI,GAE1DC,IAAc,CAACC,MAAmB;AACtC,IAAI,CAACR,KAAYH,KACfA,EAASW,CAAM;AAAA,EAEnB,GAEMC,IAAmB,CAACD,MAAmB;AAC3C,IAAKR,KACHK,EAAcG,CAAM;AAAA,EAExB,GAEME,IAAmB,MAAM;AAC7B,IAAAL,EAAc,IAAI;AAAA,EACpB,GAEMM,IAAeP,MAAe,OAAOA,IAAaR,GAClDgB,IAAYlB,EAAWK,CAAI;AAEjC,2BACG,OAAA,EAAI,WAAWc,EAAG,iBAAiBV,CAAS,GAC1C,UAAA;AAAA,IAAAF,KACC,gBAAAa,EAAC,QAAA,EAAK,WAAU,6CACb,UAAAb,GACH;AAAA,IAEF,gBAAAa,EAAC,OAAA,EAAI,WAAU,2BACZ,UAAA,MAAM,KAAK,EAAE,QAAQhB,EAAA,GAAO,CAACiB,GAAGC,MAAU;AACzC,YAAMC,IAAYD,IAAQ,GACpBE,IAAWD,KAAaN;AAE9B,aACE,gBAAAG;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,MAAK;AAAA,UACL,SAAS,MAAMP,EAAYU,CAAS;AAAA,UACpC,cAAc,MAAMR,EAAiBQ,CAAS;AAAA,UAC9C,cAAcP;AAAA,UACd,UAAUV;AAAA,UACV,WAAWa;AAAA,YACT;AAAA,YACAb,IAAW,mBAAmB;AAAA,YAC9B;AAAA,YACA;AAAA,UAAA;AAAA,UAEF,cAAY,QAAQiB,CAAS,WAAWnB,CAAG;AAAA,UAE1C,UAAAoB,IACC,gBAAAJ,EAACK,GAAA,EAAU,WAAWN,EAAGD,GAAW,kBAAkB,EAAA,CAAG,sBAExDQ,GAAA,EAAY,WAAWP,EAAGD,GAAW,gBAAgB,EAAA,CAAG;AAAA,QAAA;AAAA,QAjBtDI;AAAA,MAAA;AAAA,IAqBX,CAAC,EAAA,CACH;AAAA,IACCd,KACC,gBAAAY,EAAC,QAAA,EAAK,WAAU,6BAA6B,UAAAZ,EAAA,CAAM;AAAA,EAAA,GAEvD;AAEJ;"}
package/dist/index54.js CHANGED
@@ -1,69 +1,40 @@
1
- import { jsxs as t, jsx as e } from "react/jsx-runtime";
2
- import { Dialog as x, DialogPanel as f, DialogTitle as h } from "@headlessui/react";
3
- import { cn as b } from "./index3.js";
4
- import { ArrowLeftIcon as p, XMarkIcon as u } from "@heroicons/react/24/outline";
5
- import { Button as N } from "./index17.js";
6
- const k = ({
7
- isOpen: o,
8
- onClose: a,
9
- title: d,
10
- children: n,
11
- onBack: r,
12
- onSkip: s,
13
- rightActions: i = [],
14
- className: c
15
- }) => /* @__PURE__ */ t(x, { open: o, onClose: a, className: "relative z-50", children: [
16
- /* @__PURE__ */ e("div", { className: "fixed inset-0 bg-black/50", "aria-hidden": "true" }),
17
- /* @__PURE__ */ e("div", { className: "fixed inset-0 flex items-center justify-center p-4", children: /* @__PURE__ */ t(
18
- f,
19
- {
20
- className: b(
21
- "bg-white rounded-lg shadow-xl w-full max-w-2xl max-h-[90vh] flex flex-col overflow-hidden",
22
- c
23
- ),
24
- children: [
25
- /* @__PURE__ */ t("div", { className: "flex items-center justify-between px-6 py-4 border-b border-slate-200", children: [
26
- /* @__PURE__ */ e("div", { className: "w-10", children: r && /* @__PURE__ */ e(
27
- "button",
28
- {
29
- onClick: r,
30
- className: "p-2 rounded-md hover:bg-slate-100 transition-colors",
31
- "aria-label": "Go back",
32
- children: /* @__PURE__ */ e(p, { className: "w-5 h-5 text-slate-500" })
33
- }
34
- ) }),
35
- /* @__PURE__ */ e(h, { className: "text-lg font-bold text-slate-900 flex-1 text-center", children: d }),
36
- /* @__PURE__ */ e("div", { className: "w-10 flex justify-end", children: s ? /* @__PURE__ */ e(
37
- "button",
38
- {
39
- onClick: s,
40
- className: "text-sm font-semibold text-slate-600 hover:text-slate-800",
41
- children: "Skip"
42
- }
43
- ) : /* @__PURE__ */ e(
44
- "button",
45
- {
46
- onClick: a,
47
- className: "p-2 rounded-md hover:bg-slate-100 transition-colors",
48
- "aria-label": "Close",
49
- children: /* @__PURE__ */ e(u, { className: "w-5 h-5 text-slate-500" })
50
- }
51
- ) })
52
- ] }),
53
- /* @__PURE__ */ e("div", { className: "flex-1 overflow-y-auto px-8 py-6", children: n }),
54
- i.length > 0 && /* @__PURE__ */ e("div", { className: "flex justify-end gap-2 px-8 py-4 border-t border-slate-200", children: i.map((l, m) => /* @__PURE__ */ e(
55
- N,
56
- {
57
- ...l,
58
- children: l.text || l.children
59
- },
60
- l.key || l.text || `action-${m}`
61
- )) })
62
- ]
63
- }
64
- ) })
65
- ] });
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { cn as c } from "./index3.js";
3
+ const f = {
4
+ start: "items-start",
5
+ center: "items-center",
6
+ end: "items-end",
7
+ stretch: "items-stretch"
8
+ }, u = {
9
+ start: "justify-start",
10
+ center: "justify-center",
11
+ end: "justify-end",
12
+ between: "justify-between",
13
+ around: "justify-around"
14
+ }, y = ({
15
+ children: s,
16
+ height: t = 48,
17
+ className: r,
18
+ gap: e,
19
+ align: n = "center",
20
+ justify: i = "start"
21
+ }) => /* @__PURE__ */ o(
22
+ "div",
23
+ {
24
+ className: c(
25
+ "flex flex-row w-full",
26
+ f[n],
27
+ u[i],
28
+ r
29
+ ),
30
+ style: {
31
+ height: typeof t == "number" ? `${t}px` : t,
32
+ gap: e ? `${e}px` : void 0
33
+ },
34
+ children: s
35
+ }
36
+ );
66
37
  export {
67
- k as ScrollableModal
38
+ y as Row
68
39
  };
69
40
  //# sourceMappingURL=index54.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index54.js","sources":["../src/components/ScrollableModal/ScrollableModal.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\nimport { Dialog, DialogPanel, DialogTitle } from '@headlessui/react'\nimport { cn } from '@/lib/utils'\nimport { XMarkIcon, ArrowLeftIcon } from '@heroicons/react/24/outline'\nimport { Button, type ButtonProps } from '../Button/Button'\n\nexport interface ScrollableModalAction extends Omit<ButtonProps, 'key'> {\n key?: string\n text?: string\n}\n\nexport interface ScrollableModalProps {\n isOpen: boolean\n onClose: () => void\n title?: string\n children: ReactNode\n onBack?: () => void\n onSkip?: () => void\n rightActions?: ScrollableModalAction[]\n className?: string\n}\n\nexport const ScrollableModal = ({\n isOpen,\n onClose,\n title,\n children,\n onBack,\n onSkip,\n rightActions = [],\n className,\n}: ScrollableModalProps) => {\n return (\n <Dialog open={isOpen} onClose={onClose} className=\"relative z-50\">\n {/* Backdrop */}\n <div className=\"fixed inset-0 bg-black/50\" aria-hidden=\"true\" />\n\n {/* Full-screen container */}\n <div className=\"fixed inset-0 flex items-center justify-center p-4\">\n <DialogPanel\n className={cn(\n 'bg-white rounded-lg shadow-xl w-full max-w-2xl max-h-[90vh] flex flex-col overflow-hidden',\n className\n )}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between px-6 py-4 border-b border-slate-200\">\n <div className=\"w-10\">\n {onBack && (\n <button\n onClick={onBack}\n className=\"p-2 rounded-md hover:bg-slate-100 transition-colors\"\n aria-label=\"Go back\"\n >\n <ArrowLeftIcon className=\"w-5 h-5 text-slate-500\" />\n </button>\n )}\n </div>\n\n <DialogTitle className=\"text-lg font-bold text-slate-900 flex-1 text-center\">\n {title}\n </DialogTitle>\n\n <div className=\"w-10 flex justify-end\">\n {onSkip ? (\n <button\n onClick={onSkip}\n className=\"text-sm font-semibold text-slate-600 hover:text-slate-800\"\n >\n Skip\n </button>\n ) : (\n <button\n onClick={onClose}\n className=\"p-2 rounded-md hover:bg-slate-100 transition-colors\"\n aria-label=\"Close\"\n >\n <XMarkIcon className=\"w-5 h-5 text-slate-500\" />\n </button>\n )}\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-y-auto px-8 py-6\">\n {children}\n </div>\n\n {/* Footer Actions */}\n {rightActions.length > 0 && (\n <div className=\"flex justify-end gap-2 px-8 py-4 border-t border-slate-200\">\n {rightActions.map((action, index) => (\n <Button\n key={action.key || action.text || `action-${index}`}\n {...action}\n >\n {action.text || action.children}\n </Button>\n ))}\n </div>\n )}\n </DialogPanel>\n </div>\n </Dialog>\n )\n}\n"],"names":["ScrollableModal","isOpen","onClose","title","children","onBack","onSkip","rightActions","className","Dialog","jsx","jsxs","DialogPanel","cn","ArrowLeftIcon","DialogTitle","XMarkIcon","action","index","Button"],"mappings":";;;;;AAsBO,MAAMA,IAAkB,CAAC;AAAA,EAC9B,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,cAAAC,IAAe,CAAA;AAAA,EACf,WAAAC;AACF,wBAEKC,GAAA,EAAO,MAAMR,GAAQ,SAAAC,GAAkB,WAAU,iBAEhD,UAAA;AAAA,EAAA,gBAAAQ,EAAC,OAAA,EAAI,WAAU,6BAA4B,eAAY,QAAO;AAAA,EAG9D,gBAAAA,EAAC,OAAA,EAAI,WAAU,sDACb,UAAA,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAL;AAAA,MAAA;AAAA,MAIF,UAAA;AAAA,QAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,yEACb,UAAA;AAAA,UAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,QACZ,UAAAL,KACC,gBAAAK;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAASL;AAAA,cACT,WAAU;AAAA,cACV,cAAW;AAAA,cAEX,UAAA,gBAAAK,EAACI,GAAA,EAAc,WAAU,yBAAA,CAAyB;AAAA,YAAA;AAAA,UAAA,GAGxD;AAAA,UAEA,gBAAAJ,EAACK,GAAA,EAAY,WAAU,uDACpB,UAAAZ,GACH;AAAA,UAEA,gBAAAO,EAAC,OAAA,EAAI,WAAU,yBACZ,UAAAJ,IACC,gBAAAI;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAASJ;AAAA,cACT,WAAU;AAAA,cACX,UAAA;AAAA,YAAA;AAAA,UAAA,IAID,gBAAAI;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAASR;AAAA,cACT,WAAU;AAAA,cACV,cAAW;AAAA,cAEX,UAAA,gBAAAQ,EAACM,GAAA,EAAU,WAAU,yBAAA,CAAyB;AAAA,YAAA;AAAA,UAAA,EAChD,CAEJ;AAAA,QAAA,GACF;AAAA,QAGA,gBAAAN,EAAC,OAAA,EAAI,WAAU,oCACZ,UAAAN,EAAA,CACH;AAAA,QAGCG,EAAa,SAAS,KACrB,gBAAAG,EAAC,OAAA,EAAI,WAAU,8DACZ,UAAAH,EAAa,IAAI,CAACU,GAAQC,MACzB,gBAAAR;AAAA,UAACS;AAAA,UAAA;AAAA,YAEE,GAAGF;AAAA,YAEH,UAAAA,EAAO,QAAQA,EAAO;AAAA,UAAA;AAAA,UAHlBA,EAAO,OAAOA,EAAO,QAAQ,UAAUC,CAAK;AAAA,QAAA,CAKpD,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,EAEJ,CACF;AAAA,GACF;"}
1
+ {"version":3,"file":"index54.js","sources":["../src/components/Row/Row.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\nimport { cn } from '@/lib/utils'\n\nexport interface RowProps {\n children: ReactNode\n height?: number | string\n className?: string\n gap?: number\n align?: 'start' | 'center' | 'end' | 'stretch'\n justify?: 'start' | 'center' | 'end' | 'between' | 'around'\n}\n\nconst alignStyles = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n}\n\nconst justifyStyles = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n}\n\nexport const Row = ({\n children,\n height = 48,\n className,\n gap,\n align = 'center',\n justify = 'start',\n}: RowProps) => {\n return (\n <div\n className={cn(\n 'flex flex-row w-full',\n alignStyles[align],\n justifyStyles[justify],\n className\n )}\n style={{\n height: typeof height === 'number' ? `${height}px` : height,\n gap: gap ? `${gap}px` : undefined,\n }}\n >\n {children}\n </div>\n )\n}\n"],"names":["alignStyles","justifyStyles","Row","children","height","className","gap","align","justify","jsx","cn"],"mappings":";;AAYA,MAAMA,IAAc;AAAA,EAClB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,SAAS;AACX,GAEMC,IAAgB;AAAA,EACpB,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,SAAS;AAAA,EACT,QAAQ;AACV,GAEaC,IAAM,CAAC;AAAA,EAClB,UAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,WAAAC;AAAA,EACA,KAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,SAAAC,IAAU;AACZ,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAV,EAAYO,CAAK;AAAA,MACjBN,EAAcO,CAAO;AAAA,MACrBH;AAAA,IAAA;AAAA,IAEF,OAAO;AAAA,MACL,QAAQ,OAAOD,KAAW,WAAW,GAAGA,CAAM,OAAOA;AAAA,MACrD,KAAKE,IAAM,GAAGA,CAAG,OAAO;AAAA,IAAA;AAAA,IAGzB,UAAAH;AAAA,EAAA;AAAA;"}
package/dist/index55.js CHANGED
@@ -1,25 +1,69 @@
1
- import { jsx as a } from "react/jsx-runtime";
2
- import { cn as i } from "./index3.js";
3
- function b({
4
- children: r,
5
- withBorder: e = !1,
6
- leftBorder: o = !1,
7
- className: t
8
- }) {
9
- return /* @__PURE__ */ a(
10
- "h2",
1
+ import { jsxs as t, jsx as e } from "react/jsx-runtime";
2
+ import { Dialog as x, DialogPanel as f, DialogTitle as h } from "@headlessui/react";
3
+ import { cn as b } from "./index3.js";
4
+ import { ArrowLeftIcon as p, XMarkIcon as u } from "@heroicons/react/24/outline";
5
+ import { Button as N } from "./index17.js";
6
+ const k = ({
7
+ isOpen: o,
8
+ onClose: a,
9
+ title: d,
10
+ children: n,
11
+ onBack: r,
12
+ onSkip: s,
13
+ rightActions: i = [],
14
+ className: c
15
+ }) => /* @__PURE__ */ t(x, { open: o, onClose: a, className: "relative z-50", children: [
16
+ /* @__PURE__ */ e("div", { className: "fixed inset-0 bg-black/50", "aria-hidden": "true" }),
17
+ /* @__PURE__ */ e("div", { className: "fixed inset-0 flex items-center justify-center p-4", children: /* @__PURE__ */ t(
18
+ f,
11
19
  {
12
- className: i(
13
- "text-2xl font-semibold text-slate-900",
14
- e && "pb-3 border-b-2 border-primary-500",
15
- o && "pl-3 border-l-4 border-primary-500",
16
- t
20
+ className: b(
21
+ "bg-white rounded-lg shadow-xl w-full max-w-2xl max-h-[90vh] flex flex-col overflow-hidden",
22
+ c
17
23
  ),
18
- children: r
24
+ children: [
25
+ /* @__PURE__ */ t("div", { className: "flex items-center justify-between px-6 py-4 border-b border-slate-200", children: [
26
+ /* @__PURE__ */ e("div", { className: "w-10", children: r && /* @__PURE__ */ e(
27
+ "button",
28
+ {
29
+ onClick: r,
30
+ className: "p-2 rounded-md hover:bg-slate-100 transition-colors",
31
+ "aria-label": "Go back",
32
+ children: /* @__PURE__ */ e(p, { className: "w-5 h-5 text-slate-500" })
33
+ }
34
+ ) }),
35
+ /* @__PURE__ */ e(h, { className: "text-lg font-bold text-slate-900 flex-1 text-center", children: d }),
36
+ /* @__PURE__ */ e("div", { className: "w-10 flex justify-end", children: s ? /* @__PURE__ */ e(
37
+ "button",
38
+ {
39
+ onClick: s,
40
+ className: "text-sm font-semibold text-slate-600 hover:text-slate-800",
41
+ children: "Skip"
42
+ }
43
+ ) : /* @__PURE__ */ e(
44
+ "button",
45
+ {
46
+ onClick: a,
47
+ className: "p-2 rounded-md hover:bg-slate-100 transition-colors",
48
+ "aria-label": "Close",
49
+ children: /* @__PURE__ */ e(u, { className: "w-5 h-5 text-slate-500" })
50
+ }
51
+ ) })
52
+ ] }),
53
+ /* @__PURE__ */ e("div", { className: "flex-1 overflow-y-auto px-8 py-6", children: n }),
54
+ i.length > 0 && /* @__PURE__ */ e("div", { className: "flex justify-end gap-2 px-8 py-4 border-t border-slate-200", children: i.map((l, m) => /* @__PURE__ */ e(
55
+ N,
56
+ {
57
+ ...l,
58
+ children: l.text || l.children
59
+ },
60
+ l.key || l.text || `action-${m}`
61
+ )) })
62
+ ]
19
63
  }
20
- );
21
- }
64
+ ) })
65
+ ] });
22
66
  export {
23
- b as SectionHeading
67
+ k as ScrollableModal
24
68
  };
25
69
  //# sourceMappingURL=index55.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index55.js","sources":["../src/components/Typography/SectionHeading.tsx"],"sourcesContent":["import { cn } from '@/lib/utils'\nimport type { ReactNode } from 'react'\n\nexport interface SectionHeadingProps {\n children: ReactNode\n /** Bottom border accent */\n withBorder?: boolean\n /** Left border accent (RealtorIQ style) */\n leftBorder?: boolean\n className?: string\n}\n\nexport function SectionHeading({\n children,\n withBorder = false,\n leftBorder = false,\n className,\n}: SectionHeadingProps) {\n return (\n <h2\n className={cn(\n 'text-2xl font-semibold text-slate-900',\n withBorder && 'pb-3 border-b-2 border-primary-500',\n leftBorder && 'pl-3 border-l-4 border-primary-500',\n className\n )}\n >\n {children}\n </h2>\n )\n}\n"],"names":["SectionHeading","children","withBorder","leftBorder","className","jsx","cn"],"mappings":";;AAYO,SAASA,EAAe;AAAA,EAC7B,UAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,YAAAC,IAAa;AAAA,EACb,WAAAC;AACF,GAAwB;AACtB,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAJ,KAAc;AAAA,QACdC,KAAc;AAAA,QACdC;AAAA,MAAA;AAAA,MAGD,UAAAH;AAAA,IAAA;AAAA,EAAA;AAGP;"}
1
+ {"version":3,"file":"index55.js","sources":["../src/components/ScrollableModal/ScrollableModal.tsx"],"sourcesContent":["import { type ReactNode } from 'react'\nimport { Dialog, DialogPanel, DialogTitle } from '@headlessui/react'\nimport { cn } from '@/lib/utils'\nimport { XMarkIcon, ArrowLeftIcon } from '@heroicons/react/24/outline'\nimport { Button, type ButtonProps } from '../Button/Button'\n\nexport interface ScrollableModalAction extends Omit<ButtonProps, 'key'> {\n key?: string\n text?: string\n}\n\nexport interface ScrollableModalProps {\n isOpen: boolean\n onClose: () => void\n title?: string\n children: ReactNode\n onBack?: () => void\n onSkip?: () => void\n rightActions?: ScrollableModalAction[]\n className?: string\n}\n\nexport const ScrollableModal = ({\n isOpen,\n onClose,\n title,\n children,\n onBack,\n onSkip,\n rightActions = [],\n className,\n}: ScrollableModalProps) => {\n return (\n <Dialog open={isOpen} onClose={onClose} className=\"relative z-50\">\n {/* Backdrop */}\n <div className=\"fixed inset-0 bg-black/50\" aria-hidden=\"true\" />\n\n {/* Full-screen container */}\n <div className=\"fixed inset-0 flex items-center justify-center p-4\">\n <DialogPanel\n className={cn(\n 'bg-white rounded-lg shadow-xl w-full max-w-2xl max-h-[90vh] flex flex-col overflow-hidden',\n className\n )}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between px-6 py-4 border-b border-slate-200\">\n <div className=\"w-10\">\n {onBack && (\n <button\n onClick={onBack}\n className=\"p-2 rounded-md hover:bg-slate-100 transition-colors\"\n aria-label=\"Go back\"\n >\n <ArrowLeftIcon className=\"w-5 h-5 text-slate-500\" />\n </button>\n )}\n </div>\n\n <DialogTitle className=\"text-lg font-bold text-slate-900 flex-1 text-center\">\n {title}\n </DialogTitle>\n\n <div className=\"w-10 flex justify-end\">\n {onSkip ? (\n <button\n onClick={onSkip}\n className=\"text-sm font-semibold text-slate-600 hover:text-slate-800\"\n >\n Skip\n </button>\n ) : (\n <button\n onClick={onClose}\n className=\"p-2 rounded-md hover:bg-slate-100 transition-colors\"\n aria-label=\"Close\"\n >\n <XMarkIcon className=\"w-5 h-5 text-slate-500\" />\n </button>\n )}\n </div>\n </div>\n\n {/* Scrollable Content */}\n <div className=\"flex-1 overflow-y-auto px-8 py-6\">\n {children}\n </div>\n\n {/* Footer Actions */}\n {rightActions.length > 0 && (\n <div className=\"flex justify-end gap-2 px-8 py-4 border-t border-slate-200\">\n {rightActions.map((action, index) => (\n <Button\n key={action.key || action.text || `action-${index}`}\n {...action}\n >\n {action.text || action.children}\n </Button>\n ))}\n </div>\n )}\n </DialogPanel>\n </div>\n </Dialog>\n )\n}\n"],"names":["ScrollableModal","isOpen","onClose","title","children","onBack","onSkip","rightActions","className","Dialog","jsx","jsxs","DialogPanel","cn","ArrowLeftIcon","DialogTitle","XMarkIcon","action","index","Button"],"mappings":";;;;;AAsBO,MAAMA,IAAkB,CAAC;AAAA,EAC9B,QAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,cAAAC,IAAe,CAAA;AAAA,EACf,WAAAC;AACF,wBAEKC,GAAA,EAAO,MAAMR,GAAQ,SAAAC,GAAkB,WAAU,iBAEhD,UAAA;AAAA,EAAA,gBAAAQ,EAAC,OAAA,EAAI,WAAU,6BAA4B,eAAY,QAAO;AAAA,EAG9D,gBAAAA,EAAC,OAAA,EAAI,WAAU,sDACb,UAAA,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACAL;AAAA,MAAA;AAAA,MAIF,UAAA;AAAA,QAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,yEACb,UAAA;AAAA,UAAA,gBAAAD,EAAC,OAAA,EAAI,WAAU,QACZ,UAAAL,KACC,gBAAAK;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAASL;AAAA,cACT,WAAU;AAAA,cACV,cAAW;AAAA,cAEX,UAAA,gBAAAK,EAACI,GAAA,EAAc,WAAU,yBAAA,CAAyB;AAAA,YAAA;AAAA,UAAA,GAGxD;AAAA,UAEA,gBAAAJ,EAACK,GAAA,EAAY,WAAU,uDACpB,UAAAZ,GACH;AAAA,UAEA,gBAAAO,EAAC,OAAA,EAAI,WAAU,yBACZ,UAAAJ,IACC,gBAAAI;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAASJ;AAAA,cACT,WAAU;AAAA,cACX,UAAA;AAAA,YAAA;AAAA,UAAA,IAID,gBAAAI;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,SAASR;AAAA,cACT,WAAU;AAAA,cACV,cAAW;AAAA,cAEX,UAAA,gBAAAQ,EAACM,GAAA,EAAU,WAAU,yBAAA,CAAyB;AAAA,YAAA;AAAA,UAAA,EAChD,CAEJ;AAAA,QAAA,GACF;AAAA,QAGA,gBAAAN,EAAC,OAAA,EAAI,WAAU,oCACZ,UAAAN,EAAA,CACH;AAAA,QAGCG,EAAa,SAAS,KACrB,gBAAAG,EAAC,OAAA,EAAI,WAAU,8DACZ,UAAAH,EAAa,IAAI,CAACU,GAAQC,MACzB,gBAAAR;AAAA,UAACS;AAAA,UAAA;AAAA,YAEE,GAAGF;AAAA,YAEH,UAAAA,EAAO,QAAQA,EAAO;AAAA,UAAA;AAAA,UAHlBA,EAAO,OAAOA,EAAO,QAAQ,UAAUC,CAAK;AAAA,QAAA,CAKpD,EAAA,CACH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,EAEJ,CACF;AAAA,GACF;"}