@inzumer/ui-library 0.1.1 → 1.0.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 (125) hide show
  1. package/LICENSE +21 -0
  2. package/dist/chunk-2HCMNEIQ.js +25 -0
  3. package/dist/chunk-2HCMNEIQ.js.map +1 -0
  4. package/dist/chunk-5IHM2545.js +40 -0
  5. package/dist/chunk-5IHM2545.js.map +1 -0
  6. package/dist/chunk-6LLGTBM6.js +9 -0
  7. package/dist/chunk-6LLGTBM6.js.map +1 -0
  8. package/dist/chunk-7HQFLM4A.js +31 -0
  9. package/dist/chunk-7HQFLM4A.js.map +1 -0
  10. package/dist/chunk-BKPP4D3Q.js +62 -0
  11. package/dist/chunk-BKPP4D3Q.js.map +1 -0
  12. package/dist/chunk-BNEEI7S5.js +28 -0
  13. package/dist/chunk-BNEEI7S5.js.map +1 -0
  14. package/dist/chunk-D4I5OF3C.js +43 -0
  15. package/dist/chunk-D4I5OF3C.js.map +1 -0
  16. package/dist/chunk-GLXUQI5P.js +24 -0
  17. package/dist/chunk-GLXUQI5P.js.map +1 -0
  18. package/dist/chunk-HCLY7B4H.js +90 -0
  19. package/dist/chunk-HCLY7B4H.js.map +1 -0
  20. package/dist/chunk-JCJP427C.js +31 -0
  21. package/dist/chunk-JCJP427C.js.map +1 -0
  22. package/dist/chunk-K35XIA25.js +81 -0
  23. package/dist/chunk-K35XIA25.js.map +1 -0
  24. package/dist/chunk-KWSZ2S34.js +76 -0
  25. package/dist/chunk-KWSZ2S34.js.map +1 -0
  26. package/dist/chunk-LK2EJ4H6.js +78 -0
  27. package/dist/chunk-LK2EJ4H6.js.map +1 -0
  28. package/dist/chunk-N5CLCKR3.js +71 -0
  29. package/dist/chunk-N5CLCKR3.js.map +1 -0
  30. package/dist/chunk-P4CV2EPR.js +72 -0
  31. package/dist/chunk-P4CV2EPR.js.map +1 -0
  32. package/dist/chunk-P4Z7HH66.js +14 -0
  33. package/dist/chunk-P4Z7HH66.js.map +1 -0
  34. package/dist/chunk-PE6XEC7Y.js +27 -0
  35. package/dist/chunk-PE6XEC7Y.js.map +1 -0
  36. package/dist/chunk-PVDRNAYK.js +68 -0
  37. package/dist/chunk-PVDRNAYK.js.map +1 -0
  38. package/dist/chunk-ZABQF65Z.js +74 -0
  39. package/dist/chunk-ZABQF65Z.js.map +1 -0
  40. package/dist/components/atoms/Button/index.d.ts +23 -0
  41. package/dist/components/atoms/Button/index.js +4 -0
  42. package/dist/components/atoms/Button/index.js.map +1 -0
  43. package/dist/components/atoms/Icon/index.d.ts +19 -0
  44. package/dist/components/atoms/Icon/index.js +4 -0
  45. package/dist/components/atoms/Icon/index.js.map +1 -0
  46. package/dist/components/atoms/Image/index.d.ts +23 -0
  47. package/dist/components/atoms/Image/index.js +4 -0
  48. package/dist/components/atoms/Image/index.js.map +1 -0
  49. package/dist/components/atoms/Input/index.d.ts +25 -0
  50. package/dist/components/atoms/Input/index.js +5 -0
  51. package/dist/components/atoms/Input/index.js.map +1 -0
  52. package/dist/components/atoms/Link/index.d.ts +21 -0
  53. package/dist/components/atoms/Link/index.js +4 -0
  54. package/dist/components/atoms/Link/index.js.map +1 -0
  55. package/dist/components/atoms/RichText/index.d.ts +25 -0
  56. package/dist/components/atoms/RichText/index.js +4 -0
  57. package/dist/components/atoms/RichText/index.js.map +1 -0
  58. package/dist/components/atoms/Switch/index.d.ts +15 -0
  59. package/dist/components/atoms/Switch/index.js +5 -0
  60. package/dist/components/atoms/Switch/index.js.map +1 -0
  61. package/dist/components/molecules/BottomSheet/index.d.ts +19 -0
  62. package/dist/components/molecules/BottomSheet/index.js +8 -0
  63. package/dist/components/molecules/BottomSheet/index.js.map +1 -0
  64. package/dist/components/molecules/Breadcrumbs/index.d.ts +20 -0
  65. package/dist/components/molecules/Breadcrumbs/index.js +6 -0
  66. package/dist/components/molecules/Breadcrumbs/index.js.map +1 -0
  67. package/dist/components/molecules/Card/index.d.ts +25 -0
  68. package/dist/components/molecules/Card/index.js +5 -0
  69. package/dist/components/molecules/Card/index.js.map +1 -0
  70. package/dist/components/molecules/Language/index.d.ts +19 -0
  71. package/dist/components/molecules/Language/index.js +4 -0
  72. package/dist/components/molecules/Language/index.js.map +1 -0
  73. package/dist/components/molecules/Modal/index.d.ts +19 -0
  74. package/dist/components/molecules/Modal/index.js +8 -0
  75. package/dist/components/molecules/Modal/index.js.map +1 -0
  76. package/dist/components/molecules/Snackbar/index.d.ts +27 -0
  77. package/dist/components/molecules/Snackbar/index.js +5 -0
  78. package/dist/components/molecules/Snackbar/index.js.map +1 -0
  79. package/dist/components/molecules/Timeline/index.d.ts +16 -0
  80. package/dist/components/molecules/Timeline/index.js +5 -0
  81. package/dist/components/molecules/Timeline/index.js.map +1 -0
  82. package/dist/hooks/useDelayedUnmount/index.d.ts +10 -0
  83. package/dist/hooks/useDelayedUnmount/index.js +3 -0
  84. package/dist/hooks/useDelayedUnmount/index.js.map +1 -0
  85. package/dist/hooks/useDismissableLayer/index.d.ts +6 -0
  86. package/dist/hooks/useDismissableLayer/index.js +3 -0
  87. package/dist/hooks/useDismissableLayer/index.js.map +1 -0
  88. package/dist/hooks/useMediaQuery/index.d.ts +3 -0
  89. package/dist/hooks/useMediaQuery/index.js +3 -0
  90. package/dist/hooks/useMediaQuery/index.js.map +1 -0
  91. package/dist/hooks/useMergedRef/index.d.ts +6 -0
  92. package/dist/hooks/useMergedRef/index.js +3 -0
  93. package/dist/hooks/useMergedRef/index.js.map +1 -0
  94. package/dist/index.d.ts +24 -0
  95. package/dist/index.js +21 -0
  96. package/dist/index.js.map +1 -0
  97. package/dist/utils/cn/index.d.ts +5 -0
  98. package/dist/utils/cn/index.js +3 -0
  99. package/dist/utils/cn/index.js.map +1 -0
  100. package/package.json +121 -72
  101. package/README.md +0 -133
  102. package/dist/cjs/index.js +0 -2
  103. package/dist/cjs/index.js.map +0 -1
  104. package/dist/es/components/atoms/Button/Button.js +0 -54
  105. package/dist/es/components/atoms/Button/Button.js.map +0 -1
  106. package/dist/es/components/atoms/Button/Button.styles.js +0 -54
  107. package/dist/es/components/atoms/Button/Button.styles.js.map +0 -1
  108. package/dist/es/index.js +0 -17
  109. package/dist/es/index.js.map +0 -1
  110. package/dist/es/tokens/colors.js +0 -40
  111. package/dist/es/tokens/colors.js.map +0 -1
  112. package/dist/es/tokens/motion.js +0 -15
  113. package/dist/es/tokens/motion.js.map +0 -1
  114. package/dist/es/tokens/radius.js +0 -10
  115. package/dist/es/tokens/radius.js.map +0 -1
  116. package/dist/es/tokens/spacing.js +0 -12
  117. package/dist/es/tokens/spacing.js.map +0 -1
  118. package/dist/es/tokens/typography.js +0 -24
  119. package/dist/es/tokens/typography.js.map +0 -1
  120. package/dist/es/tokens/z-index.js +0 -12
  121. package/dist/es/tokens/z-index.js.map +0 -1
  122. package/dist/es/utils/cn.js +0 -9
  123. package/dist/es/utils/cn.js.map +0 -1
  124. package/dist/globals.css +0 -1
  125. package/dist/types/index.d.ts +0 -122
@@ -0,0 +1,76 @@
1
+ import { cn } from './chunk-6LLGTBM6.js';
2
+ import { forwardRef } from 'react';
3
+ import { cva } from 'class-variance-authority';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ var buttonStyles = cva(
7
+ [
8
+ "inline-flex items-center justify-center gap-2",
9
+ "font-medium text-sm leading-none",
10
+ "rounded-md",
11
+ "transition-colors duration-150 ease-in-out",
12
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--border-focus)] focus-visible:ring-offset-2",
13
+ "disabled:pointer-events-none disabled:opacity-50",
14
+ "select-none"
15
+ ],
16
+ {
17
+ variants: {
18
+ variant: {
19
+ primary: [
20
+ "bg-[var(--btn-primary-bg)] text-[var(--btn-primary-text)]",
21
+ "border border-[var(--btn-primary-border)]",
22
+ "hover:bg-[var(--btn-primary-bg-hover)]",
23
+ "active:bg-[var(--btn-primary-bg-active)]"
24
+ ],
25
+ secondary: [
26
+ "bg-[var(--btn-secondary-bg)] text-[var(--btn-secondary-text)]",
27
+ "border border-[var(--btn-secondary-border)]",
28
+ "hover:bg-[var(--btn-secondary-bg-hover)]",
29
+ "active:bg-[var(--btn-secondary-bg-active)]"
30
+ ],
31
+ ghost: [
32
+ "bg-[var(--btn-ghost-bg)] text-[var(--btn-ghost-text)]",
33
+ "border border-[var(--btn-ghost-border)]",
34
+ "hover:bg-[var(--btn-ghost-bg-hover)]",
35
+ "active:bg-[var(--btn-ghost-bg-active)]"
36
+ ],
37
+ destructive: [
38
+ "bg-[var(--btn-destructive-bg)] text-[var(--btn-destructive-text)]",
39
+ "border border-[var(--btn-destructive-border)]",
40
+ "hover:bg-[var(--btn-destructive-bg-hover)]",
41
+ "active:bg-[var(--btn-destructive-bg-active)]"
42
+ ]
43
+ },
44
+ size: {
45
+ sm: "h-8 px-3 text-xs",
46
+ md: "h-10 px-4 text-sm",
47
+ lg: "h-12 px-6 text-base",
48
+ icon: "h-10 w-10"
49
+ },
50
+ fullWidth: {
51
+ true: "w-full"
52
+ }
53
+ },
54
+ defaultVariants: {
55
+ variant: "primary",
56
+ size: "md"
57
+ }
58
+ }
59
+ );
60
+ var Button = forwardRef(
61
+ ({ className, variant, size, fullWidth, ...props }, ref) => {
62
+ return /* @__PURE__ */ jsx(
63
+ "button",
64
+ {
65
+ ref,
66
+ className: cn(buttonStyles({ variant, size, fullWidth }), className),
67
+ ...props
68
+ }
69
+ );
70
+ }
71
+ );
72
+ Button.displayName = "Button";
73
+
74
+ export { Button };
75
+ //# sourceMappingURL=chunk-KWSZ2S34.js.map
76
+ //# sourceMappingURL=chunk-KWSZ2S34.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/atoms/Button/Button.styles.ts","../src/components/atoms/Button/Button.tsx"],"names":[],"mappings":";;;;;AAEO,IAAM,YAAA,GAAe,GAAA;AAAA,EAC1B;AAAA,IACE,+CAAA;AAAA,IACA,kCAAA;AAAA,IACA,YAAA;AAAA,IACA,4CAAA;AAAA,IACA,sHAAA;AAAA,IACA,kDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,OAAA,EAAS;AAAA,UACP,2DAAA;AAAA,UACA,2CAAA;AAAA,UACA,wCAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,SAAA,EAAW;AAAA,UACT,+DAAA;AAAA,UACA,6CAAA;AAAA,UACA,0CAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA,EAAO;AAAA,UACL,uDAAA;AAAA,UACA,yCAAA;AAAA,UACA,sCAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,WAAA,EAAa;AAAA,UACX,mEAAA;AAAA,UACA,+CAAA;AAAA,UACA,4CAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,mBAAA;AAAA,QACJ,EAAA,EAAI,qBAAA;AAAA,QACJ,IAAA,EAAM;AAAA,OACR;AAAA,MACA,SAAA,EAAW;AAAA,QACT,IAAA,EAAM;AAAA;AACR,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS,SAAA;AAAA,MACT,IAAA,EAAM;AAAA;AACR;AAEJ,CAAA;AC7CO,IAAM,MAAA,GAAS,UAAA;AAAA,EACpB,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,MAAM,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC1D,IAAA,uBACE,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,GAAG,YAAA,CAAa,EAAE,SAAS,IAAA,EAAM,SAAA,EAAW,CAAA,EAAG,SAAS,CAAA;AAAA,QAClE,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-KWSZ2S34.js","sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport const buttonStyles = cva(\n [\n 'inline-flex items-center justify-center gap-2',\n 'font-medium text-sm leading-none',\n 'rounded-md',\n 'transition-colors duration-150 ease-in-out',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--border-focus)] focus-visible:ring-offset-2',\n 'disabled:pointer-events-none disabled:opacity-50',\n 'select-none',\n ],\n {\n variants: {\n variant: {\n primary: [\n 'bg-[var(--btn-primary-bg)] text-[var(--btn-primary-text)]',\n 'border border-[var(--btn-primary-border)]',\n 'hover:bg-[var(--btn-primary-bg-hover)]',\n 'active:bg-[var(--btn-primary-bg-active)]',\n ],\n secondary: [\n 'bg-[var(--btn-secondary-bg)] text-[var(--btn-secondary-text)]',\n 'border border-[var(--btn-secondary-border)]',\n 'hover:bg-[var(--btn-secondary-bg-hover)]',\n 'active:bg-[var(--btn-secondary-bg-active)]',\n ],\n ghost: [\n 'bg-[var(--btn-ghost-bg)] text-[var(--btn-ghost-text)]',\n 'border border-[var(--btn-ghost-border)]',\n 'hover:bg-[var(--btn-ghost-bg-hover)]',\n 'active:bg-[var(--btn-ghost-bg-active)]',\n ],\n destructive: [\n 'bg-[var(--btn-destructive-bg)] text-[var(--btn-destructive-text)]',\n 'border border-[var(--btn-destructive-border)]',\n 'hover:bg-[var(--btn-destructive-bg-hover)]',\n 'active:bg-[var(--btn-destructive-bg-active)]',\n ],\n },\n size: {\n sm: 'h-8 px-3 text-xs',\n md: 'h-10 px-4 text-sm',\n lg: 'h-12 px-6 text-base',\n icon: 'h-10 w-10',\n },\n fullWidth: {\n true: 'w-full',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'md',\n },\n },\n);\n","import type { VariantProps } from 'class-variance-authority';\nimport { forwardRef, type ButtonHTMLAttributes } from 'react';\nimport { cn } from '@utils';\nimport { buttonStyles } from './Button.styles';\n\nexport type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> &\n VariantProps<typeof buttonStyles> & {\n asChild?: boolean;\n };\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, fullWidth, ...props }, ref) => {\n return (\n <button\n ref={ref}\n className={cn(buttonStyles({ variant, size, fullWidth }), className)}\n {...props}\n />\n );\n },\n);\n\nButton.displayName = 'Button';\n"]}
@@ -0,0 +1,78 @@
1
+ import { useDismissableLayer } from './chunk-JCJP427C.js';
2
+ import { useMergedRef } from './chunk-P4Z7HH66.js';
3
+ import { useDelayedUnmount } from './chunk-BNEEI7S5.js';
4
+ import { RichText } from './chunk-P4CV2EPR.js';
5
+ import { cn } from './chunk-6LLGTBM6.js';
6
+ import { forwardRef, useRef } from 'react';
7
+ import { cva } from 'class-variance-authority';
8
+ import { jsx, jsxs } from 'react/jsx-runtime';
9
+
10
+ var modalOverlayStyles = cva(
11
+ [
12
+ "fixed inset-0 z-50 flex items-center justify-center bg-[var(--surface-overlay)] p-4",
13
+ "transition-opacity duration-200 ease-out"
14
+ ],
15
+ {
16
+ variants: {
17
+ visible: {
18
+ true: "opacity-100",
19
+ false: "opacity-0"
20
+ }
21
+ },
22
+ defaultVariants: {
23
+ visible: false
24
+ }
25
+ }
26
+ );
27
+ var modalPanelStyles = cva(
28
+ [
29
+ "w-full max-w-md rounded-xl border border-[var(--border-default)] bg-[var(--surface-secondary)] p-6 shadow-lg",
30
+ "transition-all duration-200 ease-out"
31
+ ],
32
+ {
33
+ variants: {
34
+ visible: {
35
+ true: "scale-100 opacity-100",
36
+ false: "scale-95 opacity-0"
37
+ }
38
+ },
39
+ defaultVariants: {
40
+ visible: false
41
+ }
42
+ }
43
+ );
44
+ var modalTitleStyles = "mb-4 text-lg font-semibold text-[var(--text-primary)]";
45
+ var modalFooterStyles = "mt-6 flex items-center justify-end gap-2";
46
+ var EXIT_DURATION_MS = 200;
47
+ var Modal = forwardRef(
48
+ ({ open, onClose, title, footer, closeOnBackdropClick = true, className, children, ...props }, ref) => {
49
+ const panelRef = useRef(null);
50
+ const setPanelRef = useMergedRef(ref, panelRef);
51
+ const { mounted, visible } = useDelayedUnmount(open, EXIT_DURATION_MS);
52
+ useDismissableLayer(open, onClose, panelRef, closeOnBackdropClick);
53
+ if (!mounted) {
54
+ return null;
55
+ }
56
+ return /* @__PURE__ */ jsx("div", { className: modalOverlayStyles({ visible }), children: /* @__PURE__ */ jsxs(
57
+ "div",
58
+ {
59
+ ref: setPanelRef,
60
+ role: "dialog",
61
+ "aria-modal": "true",
62
+ "aria-labelledby": title ? "modal-title" : void 0,
63
+ className: cn(modalPanelStyles({ visible }), className),
64
+ ...props,
65
+ children: [
66
+ title && /* @__PURE__ */ jsx(RichText, { as: "h2", id: "modal-title", variant: "s1", className: modalTitleStyles, children: title }),
67
+ children,
68
+ footer && /* @__PURE__ */ jsx("div", { className: modalFooterStyles, children: footer })
69
+ ]
70
+ }
71
+ ) });
72
+ }
73
+ );
74
+ Modal.displayName = "Modal";
75
+
76
+ export { Modal };
77
+ //# sourceMappingURL=chunk-LK2EJ4H6.js.map
78
+ //# sourceMappingURL=chunk-LK2EJ4H6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/molecules/Modal/Modal.styles.ts","../src/components/molecules/Modal/Modal.tsx"],"names":[],"mappings":";;;;;;;;;AAEO,IAAM,kBAAA,GAAqB,GAAA;AAAA,EAChC;AAAA,IACE,qFAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,aAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEO,IAAM,gBAAA,GAAmB,GAAA;AAAA,EAC9B;AAAA,IACE,8GAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,uBAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEO,IAAM,gBAAA,GAAmB,uDAAA;AAEzB,IAAM,iBAAA,GAAoB,0CAAA;AC7BjC,IAAM,gBAAA,GAAmB,GAAA;AAUlB,IAAM,KAAA,GAAQ,UAAA;AAAA,EACnB,CACE,EAAE,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,MAAA,EAAQ,oBAAA,GAAuB,IAAA,EAAM,SAAA,EAAW,QAAA,EAAU,GAAG,KAAA,IACrF,GAAA,KACG;AACH,IAAA,MAAM,QAAA,GAAW,OAA8B,IAAI,CAAA;AACnD,IAAA,MAAM,WAAA,GAAc,YAAA,CAAa,GAAA,EAAK,QAAQ,CAAA;AAC9C,IAAA,MAAM,EAAE,OAAA,EAAS,OAAA,EAAQ,GAAI,iBAAA,CAAkB,MAAM,gBAAgB,CAAA;AAErE,IAAA,mBAAA,CAAoB,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,oBAAoB,CAAA;AAEjE,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAW,mBAAmB,EAAE,OAAA,EAAS,CAAA,EAC5C,QAAA,kBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA,EAAK,WAAA;AAAA,QACL,IAAA,EAAK,QAAA;AAAA,QACL,YAAA,EAAW,MAAA;AAAA,QACX,iBAAA,EAAiB,QAAQ,aAAA,GAAgB,MAAA;AAAA,QACzC,WAAW,EAAA,CAAG,gBAAA,CAAiB,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA;AAAA,QACrD,GAAG,KAAA;AAAA,QAEH,QAAA,EAAA;AAAA,UAAA,KAAA,oBACC,GAAA,CAAC,QAAA,EAAA,EAAS,EAAA,EAAG,IAAA,EAAK,EAAA,EAAG,eAAc,OAAA,EAAQ,IAAA,EAAK,SAAA,EAAW,gBAAA,EACxD,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,UAED,QAAA;AAAA,UACA,MAAA,oBAAU,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,mBAAoB,QAAA,EAAA,MAAA,EAAO;AAAA;AAAA;AAAA,KACxD,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA","file":"chunk-LK2EJ4H6.js","sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport const modalOverlayStyles = cva(\n [\n 'fixed inset-0 z-50 flex items-center justify-center bg-[var(--surface-overlay)] p-4',\n 'transition-opacity duration-200 ease-out',\n ],\n {\n variants: {\n visible: {\n true: 'opacity-100',\n false: 'opacity-0',\n },\n },\n defaultVariants: {\n visible: false,\n },\n },\n);\n\nexport const modalPanelStyles = cva(\n [\n 'w-full max-w-md rounded-xl border border-[var(--border-default)] bg-[var(--surface-secondary)] p-6 shadow-lg',\n 'transition-all duration-200 ease-out',\n ],\n {\n variants: {\n visible: {\n true: 'scale-100 opacity-100',\n false: 'scale-95 opacity-0',\n },\n },\n defaultVariants: {\n visible: false,\n },\n },\n);\n\nexport const modalTitleStyles = 'mb-4 text-lg font-semibold text-[var(--text-primary)]';\n\nexport const modalFooterStyles = 'mt-6 flex items-center justify-end gap-2';\n","import { forwardRef, useRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { RichText } from '@components';\nimport { useDelayedUnmount, useDismissableLayer, useMergedRef } from '@hooks';\nimport { cn } from '@utils';\nimport {\n modalFooterStyles,\n modalOverlayStyles,\n modalPanelStyles,\n modalTitleStyles,\n} from './Modal.styles';\n\nconst EXIT_DURATION_MS = 200;\n\nexport type ModalProps = Omit<HTMLAttributes<HTMLDivElement>, 'title'> & {\n open: boolean;\n onClose: () => void;\n title?: ReactNode;\n footer?: ReactNode;\n closeOnBackdropClick?: boolean;\n};\n\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>(\n (\n { open, onClose, title, footer, closeOnBackdropClick = true, className, children, ...props },\n ref,\n ) => {\n const panelRef = useRef<HTMLDivElement | null>(null);\n const setPanelRef = useMergedRef(ref, panelRef);\n const { mounted, visible } = useDelayedUnmount(open, EXIT_DURATION_MS);\n\n useDismissableLayer(open, onClose, panelRef, closeOnBackdropClick);\n\n if (!mounted) {\n return null;\n }\n\n return (\n <div className={modalOverlayStyles({ visible })}>\n <div\n ref={setPanelRef}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? 'modal-title' : undefined}\n className={cn(modalPanelStyles({ visible }), className)}\n {...props}\n >\n {title && (\n <RichText as=\"h2\" id=\"modal-title\" variant=\"s1\" className={modalTitleStyles}>\n {title}\n </RichText>\n )}\n {children}\n {footer && <div className={modalFooterStyles}>{footer}</div>}\n </div>\n </div>\n );\n },\n);\n\nModal.displayName = 'Modal';\n"]}
@@ -0,0 +1,71 @@
1
+ import { RichText } from './chunk-P4CV2EPR.js';
2
+ import { cn } from './chunk-6LLGTBM6.js';
3
+ import { forwardRef } from 'react';
4
+ import { cva } from 'class-variance-authority';
5
+ import { jsx } from 'react/jsx-runtime';
6
+
7
+ var cardStyles = cva(
8
+ ["rounded-xl border border-[var(--border-default)] bg-[var(--surface-secondary)]", "shadow-sm"],
9
+ {
10
+ variants: {
11
+ padding: {
12
+ true: "p-6",
13
+ false: ""
14
+ }
15
+ },
16
+ defaultVariants: {
17
+ padding: true
18
+ }
19
+ }
20
+ );
21
+ var cardHeaderStyles = "flex flex-col gap-1.5 p-6";
22
+ var cardTitleStyles = "text-lg font-semibold leading-none text-[var(--text-primary)]";
23
+ var cardDescriptionStyles = "text-sm text-[var(--text-secondary)]";
24
+ var cardContentStyles = "px-6 pb-6";
25
+ var cardFooterStyles = "flex items-center px-6 pb-6";
26
+ var Card = forwardRef(
27
+ ({ className, noPadding = false, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn(cardStyles({ padding: !noPadding }), className), ...props })
28
+ );
29
+ Card.displayName = "Card";
30
+ var CardHeader = forwardRef(
31
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn(cardHeaderStyles, className), ...props })
32
+ );
33
+ CardHeader.displayName = "CardHeader";
34
+ var CardTitle = forwardRef(
35
+ ({ className, as = "h3", ...props }, ref) => /* @__PURE__ */ jsx(
36
+ RichText,
37
+ {
38
+ ref,
39
+ as,
40
+ variant: "s1",
41
+ className: cn(cardTitleStyles, className),
42
+ ...props
43
+ }
44
+ )
45
+ );
46
+ CardTitle.displayName = "CardTitle";
47
+ var CardDescription = forwardRef(
48
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx(
49
+ RichText,
50
+ {
51
+ ref,
52
+ as: "p",
53
+ variant: "p3",
54
+ className: cn(cardDescriptionStyles, className),
55
+ ...props
56
+ }
57
+ )
58
+ );
59
+ CardDescription.displayName = "CardDescription";
60
+ var CardContent = forwardRef(
61
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn(cardContentStyles, className), ...props })
62
+ );
63
+ CardContent.displayName = "CardContent";
64
+ var CardFooter = forwardRef(
65
+ ({ className, ...props }, ref) => /* @__PURE__ */ jsx("div", { ref, className: cn(cardFooterStyles, className), ...props })
66
+ );
67
+ CardFooter.displayName = "CardFooter";
68
+
69
+ export { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle };
70
+ //# sourceMappingURL=chunk-N5CLCKR3.js.map
71
+ //# sourceMappingURL=chunk-N5CLCKR3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/molecules/Card/Card.styles.ts","../src/components/molecules/Card/Card.tsx"],"names":[],"mappings":";;;;;;AAEO,IAAM,UAAA,GAAa,GAAA;AAAA,EACxB,CAAC,kFAAkF,WAAW,CAAA;AAAA,EAC9F;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,KAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEO,IAAM,gBAAA,GAAmB,2BAAA;AAEzB,IAAM,eAAA,GAAkB,+DAAA;AAExB,IAAM,qBAAA,GAAwB,sCAAA;AAE9B,IAAM,iBAAA,GAAoB,WAAA;AAE1B,IAAM,gBAAA,GAAmB,6BAAA;ACTzB,IAAM,IAAA,GAAO,UAAA;AAAA,EAClB,CAAC,EAAE,SAAA,EAAW,SAAA,GAAY,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,qBAC3C,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,UAAA,CAAW,EAAE,OAAA,EAAS,CAAC,SAAA,EAAW,CAAA,EAAG,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAE7F;AACA,IAAA,CAAK,WAAA,GAAc,MAAA;AAIZ,IAAM,UAAA,GAAa,UAAA;AAAA,EACxB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAE1E;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;AAMlB,IAAM,SAAA,GAAY,UAAA;AAAA,EACvB,CAAC,EAAE,SAAA,EAAW,EAAA,GAAK,MAAM,GAAG,KAAA,IAAS,GAAA,qBACnC,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA;AAAA,MACA,OAAA,EAAQ,IAAA;AAAA,MACR,SAAA,EAAW,EAAA,CAAG,eAAA,EAAiB,SAAS,CAAA;AAAA,MACvC,GAAG;AAAA;AAAA;AAGV;AACA,SAAA,CAAU,WAAA,GAAc,WAAA;AAIjB,IAAM,eAAA,GAAkB,UAAA;AAAA,EAC7B,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,EAAA,EAAG,GAAA;AAAA,MACH,OAAA,EAAQ,IAAA;AAAA,MACR,SAAA,EAAW,EAAA,CAAG,qBAAA,EAAuB,SAAS,CAAA;AAAA,MAC7C,GAAG;AAAA;AAAA;AAGV;AACA,eAAA,CAAgB,WAAA,GAAc,iBAAA;AAIvB,IAAM,WAAA,GAAc,UAAA;AAAA,EACzB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAE3E;AACA,WAAA,CAAY,WAAA,GAAc,aAAA;AAInB,IAAM,UAAA,GAAa,UAAA;AAAA,EACxB,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,WAAW,EAAA,CAAG,gBAAA,EAAkB,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO;AAE1E;AACA,UAAA,CAAW,WAAA,GAAc,YAAA","file":"chunk-N5CLCKR3.js","sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport const cardStyles = cva(\n ['rounded-xl border border-[var(--border-default)] bg-[var(--surface-secondary)]', 'shadow-sm'],\n {\n variants: {\n padding: {\n true: 'p-6',\n false: '',\n },\n },\n defaultVariants: {\n padding: true,\n },\n },\n);\n\nexport const cardHeaderStyles = 'flex flex-col gap-1.5 p-6';\n\nexport const cardTitleStyles = 'text-lg font-semibold leading-none text-[var(--text-primary)]';\n\nexport const cardDescriptionStyles = 'text-sm text-[var(--text-secondary)]';\n\nexport const cardContentStyles = 'px-6 pb-6';\n\nexport const cardFooterStyles = 'flex items-center px-6 pb-6';\n","import { forwardRef, type ForwardedRef, type HTMLAttributes } from 'react';\nimport { RichText } from '@components';\nimport { cn } from '@utils';\nimport {\n cardContentStyles,\n cardDescriptionStyles,\n cardFooterStyles,\n cardHeaderStyles,\n cardStyles,\n cardTitleStyles,\n} from './Card.styles';\n\nexport type CardProps = HTMLAttributes<HTMLDivElement> & {\n noPadding?: boolean;\n};\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(\n ({ className, noPadding = false, ...props }, ref) => (\n <div ref={ref} className={cn(cardStyles({ padding: !noPadding }), className)} {...props} />\n ),\n);\nCard.displayName = 'Card';\n\nexport type CardHeaderProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(cardHeaderStyles, className)} {...props} />\n ),\n);\nCardHeader.displayName = 'CardHeader';\n\nexport type CardTitleProps = HTMLAttributes<HTMLHeadingElement> & {\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n};\n\nexport const CardTitle = forwardRef<HTMLHeadingElement, CardTitleProps>(\n ({ className, as = 'h3', ...props }, ref) => (\n <RichText\n ref={ref as ForwardedRef<HTMLElement>}\n as={as}\n variant=\"s1\"\n className={cn(cardTitleStyles, className)}\n {...props}\n />\n ),\n);\nCardTitle.displayName = 'CardTitle';\n\nexport type CardDescriptionProps = HTMLAttributes<HTMLParagraphElement>;\n\nexport const CardDescription = forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => (\n <RichText\n ref={ref as ForwardedRef<HTMLElement>}\n as=\"p\"\n variant=\"p3\"\n className={cn(cardDescriptionStyles, className)}\n {...props}\n />\n ),\n);\nCardDescription.displayName = 'CardDescription';\n\nexport type CardContentProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CardContent = forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(cardContentStyles, className)} {...props} />\n ),\n);\nCardContent.displayName = 'CardContent';\n\nexport type CardFooterProps = HTMLAttributes<HTMLDivElement>;\n\nexport const CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(cardFooterStyles, className)} {...props} />\n ),\n);\nCardFooter.displayName = 'CardFooter';\n"]}
@@ -0,0 +1,72 @@
1
+ import { cn } from './chunk-6LLGTBM6.js';
2
+ import { forwardRef } from 'react';
3
+ import { cva } from 'class-variance-authority';
4
+ import { jsx } from 'react/jsx-runtime';
5
+
6
+ var richTextStyles = cva("text-[var(--text-primary)]", {
7
+ variants: {
8
+ variant: {
9
+ h1: "text-4xl leading-tight",
10
+ h2: "text-3xl leading-tight",
11
+ h3: "text-2xl leading-snug",
12
+ h4: "text-xl leading-snug",
13
+ h5: "text-lg leading-normal",
14
+ h6: "text-base leading-normal",
15
+ s1: "text-lg leading-normal",
16
+ s2: "text-base leading-normal",
17
+ s3: "text-sm leading-normal",
18
+ s4: "text-xs leading-normal",
19
+ p1: "text-lg leading-relaxed",
20
+ p2: "text-base leading-relaxed",
21
+ p3: "text-sm leading-relaxed",
22
+ p4: "text-xs leading-relaxed"
23
+ },
24
+ weight: {
25
+ light: "font-light",
26
+ normal: "font-normal",
27
+ bold: "font-bold"
28
+ }
29
+ },
30
+ defaultVariants: {
31
+ variant: "p2",
32
+ weight: "normal"
33
+ }
34
+ });
35
+ var elementByVariant = {
36
+ h1: "h1",
37
+ h2: "h2",
38
+ h3: "h3",
39
+ h4: "h4",
40
+ h5: "h5",
41
+ h6: "h6",
42
+ s1: "span",
43
+ s2: "span",
44
+ s3: "span",
45
+ s4: "span",
46
+ p1: "p",
47
+ p2: "p",
48
+ p3: "p",
49
+ p4: "p"
50
+ };
51
+ var RichText = forwardRef(
52
+ ({ as, variant, weight, bold, className, ...props }, ref) => {
53
+ const resolvedVariant = variant ?? "p2";
54
+ const Element = as ?? elementByVariant[resolvedVariant];
55
+ return /* @__PURE__ */ jsx(
56
+ Element,
57
+ {
58
+ ref,
59
+ className: cn(
60
+ richTextStyles({ variant: resolvedVariant, weight: bold ? "bold" : weight }),
61
+ className
62
+ ),
63
+ ...props
64
+ }
65
+ );
66
+ }
67
+ );
68
+ RichText.displayName = "RichText";
69
+
70
+ export { RichText, elementByVariant };
71
+ //# sourceMappingURL=chunk-P4CV2EPR.js.map
72
+ //# sourceMappingURL=chunk-P4CV2EPR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/atoms/RichText/RichText.styles.ts","../src/components/atoms/RichText/RichText.tsx"],"names":[],"mappings":";;;;;AAEO,IAAM,cAAA,GAAiB,IAAI,4BAAA,EAA8B;AAAA,EAC9D,QAAA,EAAU;AAAA,IACR,OAAA,EAAS;AAAA,MACP,EAAA,EAAI,wBAAA;AAAA,MACJ,EAAA,EAAI,wBAAA;AAAA,MACJ,EAAA,EAAI,uBAAA;AAAA,MACJ,EAAA,EAAI,sBAAA;AAAA,MACJ,EAAA,EAAI,wBAAA;AAAA,MACJ,EAAA,EAAI,0BAAA;AAAA,MACJ,EAAA,EAAI,wBAAA;AAAA,MACJ,EAAA,EAAI,0BAAA;AAAA,MACJ,EAAA,EAAI,wBAAA;AAAA,MACJ,EAAA,EAAI,wBAAA;AAAA,MACJ,EAAA,EAAI,yBAAA;AAAA,MACJ,EAAA,EAAI,2BAAA;AAAA,MACJ,EAAA,EAAI,yBAAA;AAAA,MACJ,EAAA,EAAI;AAAA,KACN;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,KAAA,EAAO,YAAA;AAAA,MACP,MAAA,EAAQ,aAAA;AAAA,MACR,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,OAAA,EAAS,IAAA;AAAA,IACT,MAAA,EAAQ;AAAA;AAEZ,CAAC,CAAA;ACvBM,IAAM,gBAAA,GAAyD;AAAA,EACpE,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,IAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,MAAA;AAAA,EACJ,EAAA,EAAI,GAAA;AAAA,EACJ,EAAA,EAAI,GAAA;AAAA,EACJ,EAAA,EAAI,GAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAQO,IAAM,QAAA,GAAW,UAAA;AAAA,EACtB,CAAC,EAAE,EAAA,EAAI,OAAA,EAAS,MAAA,EAAQ,MAAM,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC3D,IAAA,MAAM,kBAAkB,OAAA,IAAW,IAAA;AACnC,IAAA,MAAM,OAAA,GAAU,EAAA,IAAM,gBAAA,CAAiB,eAAe,CAAA;AAEtD,IAAA,uBACE,GAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,cAAA,CAAe,EAAE,OAAA,EAAS,eAAA,EAAiB,QAAQ,IAAA,GAAO,MAAA,GAAS,QAAQ,CAAA;AAAA,UAC3E;AAAA,SACF;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-P4CV2EPR.js","sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport const richTextStyles = cva('text-[var(--text-primary)]', {\n variants: {\n variant: {\n h1: 'text-4xl leading-tight',\n h2: 'text-3xl leading-tight',\n h3: 'text-2xl leading-snug',\n h4: 'text-xl leading-snug',\n h5: 'text-lg leading-normal',\n h6: 'text-base leading-normal',\n s1: 'text-lg leading-normal',\n s2: 'text-base leading-normal',\n s3: 'text-sm leading-normal',\n s4: 'text-xs leading-normal',\n p1: 'text-lg leading-relaxed',\n p2: 'text-base leading-relaxed',\n p3: 'text-sm leading-relaxed',\n p4: 'text-xs leading-relaxed',\n },\n weight: {\n light: 'font-light',\n normal: 'font-normal',\n bold: 'font-bold',\n },\n },\n defaultVariants: {\n variant: 'p2',\n weight: 'normal',\n },\n});\n","import type { VariantProps } from 'class-variance-authority';\nimport { forwardRef, type ElementType, type HTMLAttributes } from 'react';\nimport { cn } from '@utils';\nimport { richTextStyles } from './RichText.styles';\n\nexport type RichTextVariant = NonNullable<VariantProps<typeof richTextStyles>['variant']>;\n\nexport const elementByVariant: Record<RichTextVariant, ElementType> = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n s1: 'span',\n s2: 'span',\n s3: 'span',\n s4: 'span',\n p1: 'p',\n p2: 'p',\n p3: 'p',\n p4: 'p',\n};\n\nexport type RichTextProps = HTMLAttributes<HTMLElement> &\n VariantProps<typeof richTextStyles> & {\n as?: ElementType;\n bold?: boolean;\n };\n\nexport const RichText = forwardRef<HTMLElement, RichTextProps>(\n ({ as, variant, weight, bold, className, ...props }, ref) => {\n const resolvedVariant = variant ?? 'p2';\n const Element = as ?? elementByVariant[resolvedVariant];\n\n return (\n <Element\n ref={ref}\n className={cn(\n richTextStyles({ variant: resolvedVariant, weight: bold ? 'bold' : weight }),\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nRichText.displayName = 'RichText';\n"]}
@@ -0,0 +1,14 @@
1
+ // src/hooks/useMergedRef/useMergedRef.ts
2
+ var useMergedRef = (...refs) => (node) => {
3
+ for (const ref of refs) {
4
+ if (typeof ref === "function") {
5
+ ref(node);
6
+ } else if (ref) {
7
+ ref.current = node;
8
+ }
9
+ }
10
+ };
11
+
12
+ export { useMergedRef };
13
+ //# sourceMappingURL=chunk-P4Z7HH66.js.map
14
+ //# sourceMappingURL=chunk-P4Z7HH66.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useMergedRef/useMergedRef.ts"],"names":[],"mappings":";AAGO,IAAM,YAAA,GACX,CAAA,GAAO,IAAA,KACP,CAAC,IAAA,KAAmB;AAClB,EAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,IAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,MAAA,GAAA,CAAI,IAAI,CAAA;AAAA,IACV,WAAW,GAAA,EAAK;AACd,MAAC,IAAmC,OAAA,GAAU,IAAA;AAAA,IAChD;AAAA,EACF;AACF","file":"chunk-P4Z7HH66.js","sourcesContent":["import type { MutableRefObject, Ref } from 'react';\n\n/** Combines multiple refs (forwarded + local) into a single ref callback. */\nexport const useMergedRef =\n <T>(...refs: Array<Ref<T> | undefined>) =>\n (node: T | null) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as MutableRefObject<T | null>).current = node;\n }\n }\n };\n"]}
@@ -0,0 +1,27 @@
1
+ import { Link } from './chunk-D4I5OF3C.js';
2
+ import { RichText } from './chunk-P4CV2EPR.js';
3
+ import { cn } from './chunk-6LLGTBM6.js';
4
+ import { forwardRef } from 'react';
5
+ import { jsx, jsxs } from 'react/jsx-runtime';
6
+
7
+ // src/components/molecules/Breadcrumbs/Breadcrumbs.styles.ts
8
+ var breadcrumbsStyles = "flex items-center text-sm";
9
+ var breadcrumbsListStyles = "flex items-center gap-2";
10
+ var breadcrumbsItemStyles = "flex items-center gap-2";
11
+ var breadcrumbsLinkStyles = "text-[var(--text-secondary)]";
12
+ var breadcrumbsSeparatorStyles = "text-[var(--text-tertiary)]";
13
+ var breadcrumbsCurrentStyles = "font-medium text-[var(--text-primary)]";
14
+ var Breadcrumbs = forwardRef(
15
+ ({ items, current, separator = "/", className, ...props }, ref) => /* @__PURE__ */ jsx("nav", { ref, "aria-label": "Breadcrumb", className: cn(breadcrumbsStyles, className), ...props, children: /* @__PURE__ */ jsxs("ol", { className: breadcrumbsListStyles, children: [
16
+ items.map((item, index) => /* @__PURE__ */ jsxs("li", { className: breadcrumbsItemStyles, children: [
17
+ /* @__PURE__ */ jsx(Link, { href: item.href, underline: "none", className: breadcrumbsLinkStyles, children: /* @__PURE__ */ jsx(RichText, { as: "span", variant: "s3", children: item.label }) }),
18
+ /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: breadcrumbsSeparatorStyles, children: separator })
19
+ ] }, item.id ?? index)),
20
+ /* @__PURE__ */ jsx(RichText, { as: "li", "aria-current": "page", variant: "s3", className: breadcrumbsCurrentStyles, children: current })
21
+ ] }) })
22
+ );
23
+ Breadcrumbs.displayName = "Breadcrumbs";
24
+
25
+ export { Breadcrumbs };
26
+ //# sourceMappingURL=chunk-PE6XEC7Y.js.map
27
+ //# sourceMappingURL=chunk-PE6XEC7Y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/molecules/Breadcrumbs/Breadcrumbs.styles.ts","../src/components/molecules/Breadcrumbs/Breadcrumbs.tsx"],"names":[],"mappings":";;;;;;;AAAO,IAAM,iBAAA,GAAoB,2BAAA;AAE1B,IAAM,qBAAA,GAAwB,yBAAA;AAE9B,IAAM,qBAAA,GAAwB,yBAAA;AAE9B,IAAM,qBAAA,GAAwB,8BAAA;AAE9B,IAAM,0BAAA,GAA6B,6BAAA;AAEnC,IAAM,wBAAA,GAA2B,wCAAA;ACcjC,IAAM,WAAA,GAAc,UAAA;AAAA,EACzB,CAAC,EAAE,KAAA,EAAO,OAAA,EAAS,SAAA,GAAY,GAAA,EAAK,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBACzD,GAAA,CAAC,KAAA,EAAA,EAAI,KAAU,YAAA,EAAW,YAAA,EAAa,SAAA,EAAW,EAAA,CAAG,iBAAA,EAAmB,SAAS,CAAA,EAAI,GAAG,KAAA,EACtF,QAAA,kBAAA,IAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAW,qBAAA,EACZ,QAAA,EAAA;AAAA,IAAA,KAAA,CAAM,IAAI,CAAC,IAAA,EAAM,0BAChB,IAAA,CAAC,IAAA,EAAA,EAA0B,WAAW,qBAAA,EACpC,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,QAAK,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,SAAA,EAAU,QAAO,SAAA,EAAW,qBAAA,EACjD,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,IAAG,MAAA,EAAO,OAAA,EAAQ,IAAA,EACzB,QAAA,EAAA,IAAA,CAAK,OACR,CAAA,EACF,CAAA;AAAA,0BACC,MAAA,EAAA,EAAK,aAAA,EAAW,IAAA,EAAC,SAAA,EAAW,4BAC1B,QAAA,EAAA,SAAA,EACH;AAAA,KAAA,EAAA,EARO,IAAA,CAAK,EAAA,IAAM,KASpB,CACD,CAAA;AAAA,oBACD,GAAA,CAAC,QAAA,EAAA,EAAS,EAAA,EAAG,IAAA,EAAK,cAAA,EAAa,QAAO,OAAA,EAAQ,IAAA,EAAK,SAAA,EAAW,wBAAA,EAC3D,QAAA,EAAA,OAAA,EACH;AAAA,GAAA,EACF,CAAA,EACF;AAEJ;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA","file":"chunk-PE6XEC7Y.js","sourcesContent":["export const breadcrumbsStyles = 'flex items-center text-sm';\n\nexport const breadcrumbsListStyles = 'flex items-center gap-2';\n\nexport const breadcrumbsItemStyles = 'flex items-center gap-2';\n\nexport const breadcrumbsLinkStyles = 'text-[var(--text-secondary)]';\n\nexport const breadcrumbsSeparatorStyles = 'text-[var(--text-tertiary)]';\n\nexport const breadcrumbsCurrentStyles = 'font-medium text-[var(--text-primary)]';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { Link, RichText } from '@components';\nimport { cn } from '@utils';\nimport {\n breadcrumbsCurrentStyles,\n breadcrumbsItemStyles,\n breadcrumbsLinkStyles,\n breadcrumbsListStyles,\n breadcrumbsSeparatorStyles,\n breadcrumbsStyles,\n} from './Breadcrumbs.styles';\n\nexport interface BreadcrumbItem {\n id?: string;\n label: ReactNode;\n href: string;\n}\n\nexport type BreadcrumbsProps = HTMLAttributes<HTMLElement> & {\n items: BreadcrumbItem[];\n current: ReactNode;\n separator?: ReactNode;\n};\n\nexport const Breadcrumbs = forwardRef<HTMLElement, BreadcrumbsProps>(\n ({ items, current, separator = '/', className, ...props }, ref) => (\n <nav ref={ref} aria-label=\"Breadcrumb\" className={cn(breadcrumbsStyles, className)} {...props}>\n <ol className={breadcrumbsListStyles}>\n {items.map((item, index) => (\n <li key={item.id ?? index} className={breadcrumbsItemStyles}>\n <Link href={item.href} underline=\"none\" className={breadcrumbsLinkStyles}>\n <RichText as=\"span\" variant=\"s3\">\n {item.label}\n </RichText>\n </Link>\n <span aria-hidden className={breadcrumbsSeparatorStyles}>\n {separator}\n </span>\n </li>\n ))}\n <RichText as=\"li\" aria-current=\"page\" variant=\"s3\" className={breadcrumbsCurrentStyles}>\n {current}\n </RichText>\n </ol>\n </nav>\n ),\n);\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n"]}
@@ -0,0 +1,68 @@
1
+ import { RichText } from './chunk-P4CV2EPR.js';
2
+ import { cn } from './chunk-6LLGTBM6.js';
3
+ import { forwardRef, useId } from 'react';
4
+ import { cva } from 'class-variance-authority';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ var inputStyles = cva(
8
+ [
9
+ "flex w-full rounded-md px-3 py-2",
10
+ "text-sm text-[var(--input-text)]",
11
+ "bg-[var(--input-bg)]",
12
+ "border border-[var(--input-border)]",
13
+ "placeholder:text-[var(--input-placeholder)]",
14
+ "transition-colors duration-150 ease-in-out",
15
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--border-focus)] focus-visible:ring-offset-0",
16
+ "focus-visible:border-[var(--input-border-focus)]",
17
+ "disabled:cursor-not-allowed disabled:opacity-50",
18
+ "file:border-0 file:bg-transparent file:text-sm file:font-medium"
19
+ ],
20
+ {
21
+ variants: {
22
+ state: {
23
+ default: "",
24
+ error: "border-[var(--input-border-error)] focus-visible:ring-[var(--border-error)]"
25
+ },
26
+ inputSize: {
27
+ sm: "h-8 px-2 text-xs",
28
+ md: "h-10 px-3 text-sm",
29
+ lg: "h-12 px-4 text-base"
30
+ }
31
+ },
32
+ defaultVariants: {
33
+ state: "default",
34
+ inputSize: "md"
35
+ }
36
+ }
37
+ );
38
+ var inputLabelStyles = "text-sm font-medium text-[var(--text-primary)]";
39
+ var inputErrorStyles = "text-xs text-[var(--border-error)]";
40
+ var inputHintStyles = "text-xs text-[var(--text-secondary)]";
41
+ var Input = forwardRef(
42
+ ({ className, state, inputSize, label, hint, error, id: idProp, ...props }, ref) => {
43
+ const generatedId = useId();
44
+ const id = idProp ?? generatedId;
45
+ const resolvedState = error ? "error" : state;
46
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
47
+ label && /* @__PURE__ */ jsx("label", { htmlFor: id, children: /* @__PURE__ */ jsx(RichText, { as: "span", variant: "p3", className: inputLabelStyles, children: label }) }),
48
+ /* @__PURE__ */ jsx(
49
+ "input",
50
+ {
51
+ ref,
52
+ id,
53
+ "aria-describedby": error ? `${id}-error` : hint ? `${id}-hint` : void 0,
54
+ "aria-invalid": error ? "true" : void 0,
55
+ className: cn(inputStyles({ state: resolvedState, inputSize }), className),
56
+ ...props
57
+ }
58
+ ),
59
+ error && /* @__PURE__ */ jsx(RichText, { as: "p", id: `${id}-error`, role: "alert", variant: "p4", className: inputErrorStyles, children: error }),
60
+ !error && hint && /* @__PURE__ */ jsx(RichText, { as: "p", id: `${id}-hint`, variant: "p4", className: inputHintStyles, children: hint })
61
+ ] });
62
+ }
63
+ );
64
+ Input.displayName = "Input";
65
+
66
+ export { Input };
67
+ //# sourceMappingURL=chunk-PVDRNAYK.js.map
68
+ //# sourceMappingURL=chunk-PVDRNAYK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/atoms/Input/Input.styles.ts","../src/components/atoms/Input/Input.tsx"],"names":[],"mappings":";;;;;;AAEO,IAAM,WAAA,GAAc,GAAA;AAAA,EACzB;AAAA,IACE,kCAAA;AAAA,IACA,kCAAA;AAAA,IACA,sBAAA;AAAA,IACA,qCAAA;AAAA,IACA,6CAAA;AAAA,IACA,4CAAA;AAAA,IACA,sHAAA;AAAA,IACA,kDAAA;AAAA,IACA,iDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,EAAA;AAAA,QACT,KAAA,EAAO;AAAA,OACT;AAAA,MACA,SAAA,EAAW;AAAA,QACT,EAAA,EAAI,kBAAA;AAAA,QACJ,EAAA,EAAI,mBAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO,SAAA;AAAA,MACP,SAAA,EAAW;AAAA;AACb;AAEJ,CAAA;AAEO,IAAM,gBAAA,GAAmB,gDAAA;AACzB,IAAM,gBAAA,GAAmB,oCAAA;AACzB,IAAM,eAAA,GAAkB,sCAAA;AClBxB,IAAM,KAAA,GAAQ,UAAA;AAAA,EACnB,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,IAAA,EAAM,KAAA,EAAO,EAAA,EAAI,MAAA,EAAQ,GAAG,KAAA,IAAS,GAAA,KAAQ;AAClF,IAAA,MAAM,cAAc,KAAA,EAAM;AAC1B,IAAA,MAAM,KAAK,MAAA,IAAU,WAAA;AACrB,IAAA,MAAM,aAAA,GAAgB,QAAQ,OAAA,GAAU,KAAA;AAExC,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uBAAA,EACZ,QAAA,EAAA;AAAA,MAAA,KAAA,oBACC,GAAA,CAAC,OAAA,EAAA,EAAM,OAAA,EAAS,EAAA,EACd,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,EAAA,EAAG,MAAA,EAAO,OAAA,EAAQ,IAAA,EAAK,SAAA,EAAW,gBAAA,EACzC,iBACH,CAAA,EACF,CAAA;AAAA,sBAEF,GAAA;AAAA,QAAC,OAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,EAAA;AAAA,UACA,kBAAA,EAAkB,QAAQ,CAAA,EAAG,EAAE,WAAW,IAAA,GAAO,CAAA,EAAG,EAAE,CAAA,KAAA,CAAA,GAAU,MAAA;AAAA,UAChE,cAAA,EAAc,QAAQ,MAAA,GAAS,MAAA;AAAA,UAC/B,SAAA,EAAW,GAAG,WAAA,CAAY,EAAE,OAAO,aAAA,EAAe,SAAA,EAAW,CAAA,EAAG,SAAS,CAAA;AAAA,UACxE,GAAG;AAAA;AAAA,OACN;AAAA,MACC,KAAA,oBACC,GAAA,CAAC,QAAA,EAAA,EAAS,EAAA,EAAG,KAAI,EAAA,EAAI,CAAA,EAAG,EAAE,CAAA,MAAA,CAAA,EAAU,MAAK,OAAA,EAAQ,OAAA,EAAQ,IAAA,EAAK,SAAA,EAAW,kBACtE,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,MAED,CAAC,KAAA,IAAS,IAAA,oBACT,GAAA,CAAC,YAAS,EAAA,EAAG,GAAA,EAAI,EAAA,EAAI,CAAA,EAAG,EAAE,CAAA,KAAA,CAAA,EAAS,OAAA,EAAQ,IAAA,EAAK,SAAA,EAAW,iBACxD,QAAA,EAAA,IAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA","file":"chunk-PVDRNAYK.js","sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport const inputStyles = cva(\n [\n 'flex w-full rounded-md px-3 py-2',\n 'text-sm text-[var(--input-text)]',\n 'bg-[var(--input-bg)]',\n 'border border-[var(--input-border)]',\n 'placeholder:text-[var(--input-placeholder)]',\n 'transition-colors duration-150 ease-in-out',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--border-focus)] focus-visible:ring-offset-0',\n 'focus-visible:border-[var(--input-border-focus)]',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'file:border-0 file:bg-transparent file:text-sm file:font-medium',\n ],\n {\n variants: {\n state: {\n default: '',\n error: 'border-[var(--input-border-error)] focus-visible:ring-[var(--border-error)]',\n },\n inputSize: {\n sm: 'h-8 px-2 text-xs',\n md: 'h-10 px-3 text-sm',\n lg: 'h-12 px-4 text-base',\n },\n },\n defaultVariants: {\n state: 'default',\n inputSize: 'md',\n },\n },\n);\n\nexport const inputLabelStyles = 'text-sm font-medium text-[var(--text-primary)]';\nexport const inputErrorStyles = 'text-xs text-[var(--border-error)]';\nexport const inputHintStyles = 'text-xs text-[var(--text-secondary)]';\n","import type { VariantProps } from 'class-variance-authority';\nimport { forwardRef, useId, type InputHTMLAttributes } from 'react';\nimport { RichText } from '@components';\nimport { cn } from '@utils';\nimport {\n inputErrorStyles,\n inputHintStyles,\n inputLabelStyles,\n inputStyles,\n} from './Input.styles';\n\nexport type InputProps = InputHTMLAttributes<HTMLInputElement> &\n VariantProps<typeof inputStyles> & {\n label?: string;\n hint?: string;\n error?: string;\n };\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ className, state, inputSize, label, hint, error, id: idProp, ...props }, ref) => {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const resolvedState = error ? 'error' : state;\n\n return (\n <div className=\"flex flex-col gap-1.5\">\n {label && (\n <label htmlFor={id}>\n <RichText as=\"span\" variant=\"p3\" className={inputLabelStyles}>\n {label}\n </RichText>\n </label>\n )}\n <input\n ref={ref}\n id={id}\n aria-describedby={error ? `${id}-error` : hint ? `${id}-hint` : undefined}\n aria-invalid={error ? 'true' : undefined}\n className={cn(inputStyles({ state: resolvedState, inputSize }), className)}\n {...props}\n />\n {error && (\n <RichText as=\"p\" id={`${id}-error`} role=\"alert\" variant=\"p4\" className={inputErrorStyles}>\n {error}\n </RichText>\n )}\n {!error && hint && (\n <RichText as=\"p\" id={`${id}-hint`} variant=\"p4\" className={inputHintStyles}>\n {hint}\n </RichText>\n )}\n </div>\n );\n },\n);\n\nInput.displayName = 'Input';\n"]}
@@ -0,0 +1,74 @@
1
+ import { RichText } from './chunk-P4CV2EPR.js';
2
+ import { cn } from './chunk-6LLGTBM6.js';
3
+ import { forwardRef, useId } from 'react';
4
+ import { cva } from 'class-variance-authority';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ var switchLabelStyles = "inline-flex items-center gap-2";
8
+ var switchLabelDisabledStyles = "cursor-not-allowed";
9
+ var switchTrackWrapperStyles = "relative inline-flex h-6 w-11 shrink-0";
10
+ var switchInputStyles = "peer sr-only";
11
+ var switchLabelTextStyles = "text-sm text-[var(--text-primary)]";
12
+ var switchTrackStyles = cva(
13
+ [
14
+ "absolute inset-0 rounded-full transition-colors duration-150 ease-in-out",
15
+ "peer-focus-visible:ring-2 peer-focus-visible:ring-[var(--border-focus)] peer-focus-visible:ring-offset-2",
16
+ "peer-disabled:cursor-not-allowed peer-disabled:opacity-50"
17
+ ],
18
+ {
19
+ variants: {
20
+ checked: {
21
+ true: "bg-[var(--btn-primary-bg)]",
22
+ false: "bg-[var(--border-strong)]"
23
+ }
24
+ },
25
+ defaultVariants: {
26
+ checked: false
27
+ }
28
+ }
29
+ );
30
+ var switchThumbStyles = cva(
31
+ "absolute left-0.5 top-0.5 h-5 w-5 rounded-full bg-white shadow-sm transition-transform duration-150 ease-in-out",
32
+ {
33
+ variants: {
34
+ checked: {
35
+ true: "translate-x-5",
36
+ false: ""
37
+ }
38
+ },
39
+ defaultVariants: {
40
+ checked: false
41
+ }
42
+ }
43
+ );
44
+ var Switch = forwardRef(
45
+ ({ checked, onCheckedChange, disabled, className, id: idProp, label, ...props }, ref) => {
46
+ const generatedId = useId();
47
+ const id = idProp ?? generatedId;
48
+ return /* @__PURE__ */ jsxs("label", { htmlFor: id, className: cn(switchLabelStyles, disabled && switchLabelDisabledStyles), children: [
49
+ /* @__PURE__ */ jsxs("span", { className: switchTrackWrapperStyles, children: [
50
+ /* @__PURE__ */ jsx(
51
+ "input",
52
+ {
53
+ ref,
54
+ id,
55
+ type: "checkbox",
56
+ role: "switch",
57
+ checked,
58
+ disabled,
59
+ onChange: (event) => onCheckedChange(event.target.checked),
60
+ className: switchInputStyles,
61
+ ...props
62
+ }
63
+ ),
64
+ /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: cn(switchTrackStyles({ checked }), className), children: /* @__PURE__ */ jsx("span", { className: switchThumbStyles({ checked }) }) })
65
+ ] }),
66
+ label && /* @__PURE__ */ jsx(RichText, { as: "span", variant: "p3", className: switchLabelTextStyles, children: label })
67
+ ] });
68
+ }
69
+ );
70
+ Switch.displayName = "Switch";
71
+
72
+ export { Switch };
73
+ //# sourceMappingURL=chunk-ZABQF65Z.js.map
74
+ //# sourceMappingURL=chunk-ZABQF65Z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/atoms/Switch/Switch.styles.ts","../src/components/atoms/Switch/Switch.tsx"],"names":[],"mappings":";;;;;;AAEO,IAAM,iBAAA,GAAoB,gCAAA;AAE1B,IAAM,yBAAA,GAA4B,oBAAA;AAElC,IAAM,wBAAA,GAA2B,wCAAA;AAEjC,IAAM,iBAAA,GAAoB,cAAA;AAE1B,IAAM,qBAAA,GAAwB,oCAAA;AAE9B,IAAM,iBAAA,GAAoB,GAAA;AAAA,EAC/B;AAAA,IACE,0EAAA;AAAA,IACA,0GAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,4BAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;AAEO,IAAM,iBAAA,GAAoB,GAAA;AAAA,EAC/B,iHAAA;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,OAAA,EAAS;AAAA,QACP,IAAA,EAAM,eAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,OAAA,EAAS;AAAA;AACX;AAEJ,CAAA;ACtBO,IAAM,MAAA,GAAS,UAAA;AAAA,EACpB,CAAC,EAAE,OAAA,EAAS,eAAA,EAAiB,QAAA,EAAU,SAAA,EAAW,EAAA,EAAI,MAAA,EAAQ,KAAA,EAAO,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AACvF,IAAA,MAAM,cAAc,KAAA,EAAM;AAC1B,IAAA,MAAM,KAAK,MAAA,IAAU,WAAA;AAErB,IAAA,uBACE,IAAA,CAAC,WAAM,OAAA,EAAS,EAAA,EAAI,WAAW,EAAA,CAAG,iBAAA,EAAmB,QAAA,IAAY,yBAAyB,CAAA,EACxF,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,WAAW,wBAAA,EACf,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,OAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,EAAA;AAAA,YACA,IAAA,EAAK,UAAA;AAAA,YACL,IAAA,EAAK,QAAA;AAAA,YACL,OAAA;AAAA,YACA,QAAA;AAAA,YACA,UAAU,CAAC,KAAA,KAAU,eAAA,CAAgB,KAAA,CAAM,OAAO,OAAO,CAAA;AAAA,YACzD,SAAA,EAAW,iBAAA;AAAA,YACV,GAAG;AAAA;AAAA,SACN;AAAA,wBACA,GAAA,CAAC,UAAK,aAAA,EAAW,IAAA,EAAC,WAAW,EAAA,CAAG,iBAAA,CAAkB,EAAE,OAAA,EAAS,GAAG,SAAS,CAAA,EACvE,8BAAC,MAAA,EAAA,EAAK,SAAA,EAAW,kBAAkB,EAAE,OAAA,EAAS,CAAA,EAAG,CAAA,EACnD;AAAA,OAAA,EACF,CAAA;AAAA,MACC,KAAA,wBACE,QAAA,EAAA,EAAS,EAAA,EAAG,QAAO,OAAA,EAAQ,IAAA,EAAK,SAAA,EAAW,qBAAA,EACzC,QAAA,EAAA,KAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-ZABQF65Z.js","sourcesContent":["import { cva } from 'class-variance-authority';\n\nexport const switchLabelStyles = 'inline-flex items-center gap-2';\n\nexport const switchLabelDisabledStyles = 'cursor-not-allowed';\n\nexport const switchTrackWrapperStyles = 'relative inline-flex h-6 w-11 shrink-0';\n\nexport const switchInputStyles = 'peer sr-only';\n\nexport const switchLabelTextStyles = 'text-sm text-[var(--text-primary)]';\n\nexport const switchTrackStyles = cva(\n [\n 'absolute inset-0 rounded-full transition-colors duration-150 ease-in-out',\n 'peer-focus-visible:ring-2 peer-focus-visible:ring-[var(--border-focus)] peer-focus-visible:ring-offset-2',\n 'peer-disabled:cursor-not-allowed peer-disabled:opacity-50',\n ],\n {\n variants: {\n checked: {\n true: 'bg-[var(--btn-primary-bg)]',\n false: 'bg-[var(--border-strong)]',\n },\n },\n defaultVariants: {\n checked: false,\n },\n },\n);\n\nexport const switchThumbStyles = cva(\n 'absolute left-0.5 top-0.5 h-5 w-5 rounded-full bg-white shadow-sm transition-transform duration-150 ease-in-out',\n {\n variants: {\n checked: {\n true: 'translate-x-5',\n false: '',\n },\n },\n defaultVariants: {\n checked: false,\n },\n },\n);\n","import { forwardRef, useId, type InputHTMLAttributes } from 'react';\nimport { RichText } from '@components';\nimport { cn } from '@utils';\nimport {\n switchInputStyles,\n switchLabelDisabledStyles,\n switchLabelStyles,\n switchLabelTextStyles,\n switchThumbStyles,\n switchTrackStyles,\n switchTrackWrapperStyles,\n} from './Switch.styles';\n\nexport type SwitchProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'size' | 'onChange' | 'checked'\n> & {\n checked: boolean;\n onCheckedChange: (checked: boolean) => void;\n label?: string;\n};\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n ({ checked, onCheckedChange, disabled, className, id: idProp, label, ...props }, ref) => {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n\n return (\n <label htmlFor={id} className={cn(switchLabelStyles, disabled && switchLabelDisabledStyles)}>\n <span className={switchTrackWrapperStyles}>\n <input\n ref={ref}\n id={id}\n type=\"checkbox\"\n role=\"switch\"\n checked={checked}\n disabled={disabled}\n onChange={(event) => onCheckedChange(event.target.checked)}\n className={switchInputStyles}\n {...props}\n />\n <span aria-hidden className={cn(switchTrackStyles({ checked }), className)}>\n <span className={switchThumbStyles({ checked })} />\n </span>\n </span>\n {label && (\n <RichText as=\"span\" variant=\"p3\" className={switchLabelTextStyles}>\n {label}\n </RichText>\n )}\n </label>\n );\n },\n);\n\nSwitch.displayName = 'Switch';\n"]}
@@ -0,0 +1,23 @@
1
+ import * as react from 'react';
2
+ import { ButtonHTMLAttributes } from 'react';
3
+ import * as class_variance_authority_types from 'class-variance-authority/types';
4
+ import { VariantProps } from 'class-variance-authority';
5
+
6
+ declare const buttonStyles: (props?: ({
7
+ variant?: "primary" | "secondary" | "ghost" | "destructive" | null | undefined;
8
+ size?: "sm" | "md" | "lg" | "icon" | null | undefined;
9
+ fullWidth?: boolean | null | undefined;
10
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
11
+
12
+ type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<typeof buttonStyles> & {
13
+ asChild?: boolean;
14
+ };
15
+ declare const Button: react.ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<(props?: ({
16
+ variant?: "primary" | "secondary" | "ghost" | "destructive" | null | undefined;
17
+ size?: "sm" | "md" | "lg" | "icon" | null | undefined;
18
+ fullWidth?: boolean | null | undefined;
19
+ } & class_variance_authority_types.ClassProp) | undefined) => string> & {
20
+ asChild?: boolean;
21
+ } & react.RefAttributes<HTMLButtonElement>>;
22
+
23
+ export { Button, type ButtonProps };
@@ -0,0 +1,4 @@
1
+ export { Button } from '../../../chunk-KWSZ2S34.js';
2
+ import '../../../chunk-6LLGTBM6.js';
3
+ //# sourceMappingURL=index.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,19 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ import { SVGProps, ComponentType } from 'react';
4
+ import * as class_variance_authority_types from 'class-variance-authority/types';
5
+
6
+ declare const iconStyles: (props?: ({
7
+ size?: "sm" | "md" | "lg" | null | undefined;
8
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
9
+
10
+ type IconProps = Omit<SVGProps<SVGSVGElement>, 'children'> & VariantProps<typeof iconStyles> & {
11
+ icon: ComponentType<SVGProps<SVGSVGElement>>;
12
+ label?: string;
13
+ };
14
+ declare const Icon: {
15
+ ({ icon: IconComponent, size, className, label, ...props }: IconProps): react_jsx_runtime.JSX.Element;
16
+ displayName: string;
17
+ };
18
+
19
+ export { Icon, type IconProps };
@@ -0,0 +1,4 @@
1
+ export { Icon } from '../../../chunk-7HQFLM4A.js';
2
+ import '../../../chunk-6LLGTBM6.js';
3
+ //# sourceMappingURL=index.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}