@tomny-dev/uzi 0.2.4 → 0.2.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 (183) hide show
  1. package/dist/index.cjs +66 -2
  2. package/dist/index.js +25 -1594
  3. package/dist/index10.cjs +26 -0
  4. package/dist/index10.cjs.map +1 -0
  5. package/dist/index10.js +19 -0
  6. package/dist/index10.js.map +1 -0
  7. package/dist/index11.cjs +22 -0
  8. package/dist/index11.cjs.map +1 -0
  9. package/dist/index11.js +22 -0
  10. package/dist/index11.js.map +1 -0
  11. package/dist/index12.cjs +22 -0
  12. package/dist/index12.cjs.map +1 -0
  13. package/dist/index12.js +41 -0
  14. package/dist/index12.js.map +1 -0
  15. package/dist/index13.cjs +56 -0
  16. package/dist/index13.cjs.map +1 -0
  17. package/dist/index13.js +84 -0
  18. package/dist/index13.js.map +1 -0
  19. package/dist/index14.cjs +87 -0
  20. package/dist/index14.cjs.map +1 -0
  21. package/dist/index14.js +17 -0
  22. package/dist/index14.js.map +1 -0
  23. package/dist/index15.cjs +22 -0
  24. package/dist/index15.cjs.map +1 -0
  25. package/dist/index15.js +16 -0
  26. package/dist/index15.js.map +1 -0
  27. package/dist/index16.cjs +16 -0
  28. package/dist/index16.cjs.map +1 -0
  29. package/dist/index16.js +45 -0
  30. package/dist/index16.js.map +1 -0
  31. package/dist/index17.cjs +64 -0
  32. package/dist/index17.cjs.map +1 -0
  33. package/dist/index17.js +435 -0
  34. package/dist/index17.js.map +1 -0
  35. package/dist/index18.cjs +438 -0
  36. package/dist/index18.cjs.map +1 -0
  37. package/dist/index18.js +7 -0
  38. package/dist/index18.js.map +1 -0
  39. package/dist/index19.cjs +8 -0
  40. package/dist/index19.cjs.map +1 -0
  41. package/dist/index19.js +18 -0
  42. package/dist/index19.js.map +1 -0
  43. package/dist/index2.cjs +23 -0
  44. package/dist/index20.cjs +20 -0
  45. package/dist/index20.cjs.map +1 -0
  46. package/dist/index20.js +7 -0
  47. package/dist/index20.js.map +1 -0
  48. package/dist/index21.cjs +8 -0
  49. package/dist/index21.cjs.map +1 -0
  50. package/dist/index21.js +15 -0
  51. package/dist/index21.js.map +1 -0
  52. package/dist/index22.cjs +17 -0
  53. package/dist/index22.cjs.map +1 -0
  54. package/dist/index22.js +7 -0
  55. package/dist/index22.js.map +1 -0
  56. package/dist/index23.cjs +8 -0
  57. package/dist/index23.cjs.map +1 -0
  58. package/dist/index23.js +18 -0
  59. package/dist/index23.js.map +1 -0
  60. package/dist/index24.cjs +20 -0
  61. package/dist/index24.cjs.map +1 -0
  62. package/dist/index24.js +41 -0
  63. package/dist/index24.js.map +1 -0
  64. package/dist/index25.cjs +58 -0
  65. package/dist/index25.cjs.map +1 -0
  66. package/dist/index25.js +123 -0
  67. package/dist/index25.js.map +1 -0
  68. package/dist/index26.cjs +126 -0
  69. package/dist/index26.cjs.map +1 -0
  70. package/dist/index26.js +29 -0
  71. package/dist/index26.js.map +1 -0
  72. package/dist/index27.cjs +40 -0
  73. package/dist/index27.cjs.map +1 -0
  74. package/dist/index27.js +110 -0
  75. package/dist/index27.js.map +1 -0
  76. package/dist/index28.cjs +113 -0
  77. package/dist/index28.cjs.map +1 -0
  78. package/dist/index28.js +26 -0
  79. package/dist/index28.js.map +1 -0
  80. package/dist/index29.cjs +28 -0
  81. package/dist/index29.cjs.map +1 -0
  82. package/dist/index29.js +29 -0
  83. package/dist/index29.js.map +1 -0
  84. package/dist/index3.js +8 -0
  85. package/dist/index3.js.map +1 -0
  86. package/dist/index30.cjs +40 -0
  87. package/dist/index30.cjs.map +1 -0
  88. package/dist/index30.js +118 -0
  89. package/dist/index30.js.map +1 -0
  90. package/dist/index31.cjs +134 -0
  91. package/dist/index31.cjs.map +1 -0
  92. package/dist/index31.js +20 -0
  93. package/dist/index31.js.map +1 -0
  94. package/dist/index32.cjs +23 -0
  95. package/dist/index32.cjs.map +1 -0
  96. package/dist/index32.js +114 -0
  97. package/dist/index32.js.map +1 -0
  98. package/dist/index33.cjs +115 -0
  99. package/dist/index33.cjs.map +1 -0
  100. package/dist/index33.js +7 -0
  101. package/dist/index33.js.map +1 -0
  102. package/dist/index34.cjs +8 -0
  103. package/dist/index34.cjs.map +1 -0
  104. package/dist/index34.js +66 -0
  105. package/dist/index34.js.map +1 -0
  106. package/dist/index35.cjs +66 -0
  107. package/dist/index35.cjs.map +1 -0
  108. package/dist/index35.js +25 -0
  109. package/dist/index35.js.map +1 -0
  110. package/dist/index36.cjs +34 -0
  111. package/dist/index36.cjs.map +1 -0
  112. package/dist/index36.js +55 -0
  113. package/dist/index36.js.map +1 -0
  114. package/dist/index37.cjs +55 -0
  115. package/dist/index37.cjs.map +1 -0
  116. package/dist/index37.js +35 -0
  117. package/dist/index37.js.map +1 -0
  118. package/dist/index38.cjs +49 -0
  119. package/dist/index38.cjs.map +1 -0
  120. package/dist/index38.js +150 -0
  121. package/dist/index38.js.map +1 -0
  122. package/dist/index39.cjs +150 -0
  123. package/dist/index39.cjs.map +1 -0
  124. package/dist/index39.js +43 -0
  125. package/dist/index39.js.map +1 -0
  126. package/dist/index4.cjs +8 -0
  127. package/dist/index4.cjs.map +1 -0
  128. package/dist/index4.js +29 -0
  129. package/dist/index4.js.map +1 -0
  130. package/dist/index40.cjs +61 -0
  131. package/dist/index40.cjs.map +1 -0
  132. package/dist/index40.js +173 -0
  133. package/dist/index40.js.map +1 -0
  134. package/dist/index41.cjs +173 -0
  135. package/dist/index41.cjs.map +1 -0
  136. package/dist/index41.js +14 -0
  137. package/dist/index41.js.map +1 -0
  138. package/dist/index42.cjs +15 -0
  139. package/dist/index42.cjs.map +1 -0
  140. package/dist/index42.js +21 -0
  141. package/dist/index42.js.map +1 -0
  142. package/dist/index43.cjs +21 -0
  143. package/dist/index43.cjs.map +1 -0
  144. package/dist/index43.js +15 -0
  145. package/dist/index43.js.map +1 -0
  146. package/dist/index44.cjs +17 -0
  147. package/dist/index44.cjs.map +1 -0
  148. package/dist/index44.js +24 -0
  149. package/dist/index44.js.map +1 -0
  150. package/dist/index45.cjs +24 -0
  151. package/dist/index45.cjs.map +1 -0
  152. package/dist/index45.js +13 -0
  153. package/dist/index45.js.map +1 -0
  154. package/dist/index46.cjs +16 -0
  155. package/dist/index46.cjs.map +1 -0
  156. package/dist/index46.js +96 -0
  157. package/dist/index46.js.map +1 -0
  158. package/dist/index47.cjs +98 -0
  159. package/dist/index47.cjs.map +1 -0
  160. package/dist/index5.cjs +40 -0
  161. package/dist/index5.cjs.map +1 -0
  162. package/dist/index5.js +45 -0
  163. package/dist/index5.js.map +1 -0
  164. package/dist/index6.cjs +47 -0
  165. package/dist/index6.cjs.map +1 -0
  166. package/dist/index6.js +17 -0
  167. package/dist/index6.js.map +1 -0
  168. package/dist/index7.cjs +20 -0
  169. package/dist/index7.cjs.map +1 -0
  170. package/dist/index7.js +30 -0
  171. package/dist/index7.js.map +1 -0
  172. package/dist/index8.cjs +35 -0
  173. package/dist/index8.cjs.map +1 -0
  174. package/dist/index8.js +18 -0
  175. package/dist/index8.js.map +1 -0
  176. package/dist/index9.cjs +20 -0
  177. package/dist/index9.cjs.map +1 -0
  178. package/dist/index9.js +26 -0
  179. package/dist/index9.js.map +1 -0
  180. package/dist/style.css +2025 -1
  181. package/package.json +1 -1
  182. package/dist/index.cjs.map +0 -1
  183. package/dist/index.js.map +0 -1
@@ -0,0 +1,98 @@
1
+ "use client";
2
+ const require_runtime = require("./index2.cjs");
3
+ const require_cx = require("./index4.cjs");
4
+ const require_segmented_toggle_module = require("./index46.cjs");
5
+ let react = require("react");
6
+ react = require_runtime.__toESM(react, 1);
7
+ let react_jsx_runtime = require("react/jsx-runtime");
8
+ //#region src/components/segmented-toggle/SegmentedToggle.tsx
9
+ function SegmentedToggle({ options, value, onChange, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, className }) {
10
+ const itemRefs = react.useRef([]);
11
+ const selectedIndex = options.findIndex((opt) => opt.value === value);
12
+ const fallbackIndex = options.findIndex((opt) => !opt.disabled);
13
+ let lastEnabledIndex = -1;
14
+ for (let index = options.length - 1; index >= 0; index -= 1) if (!options[index]?.disabled) {
15
+ lastEnabledIndex = index;
16
+ break;
17
+ }
18
+ const tabbableIndex = selectedIndex >= 0 && !options[selectedIndex]?.disabled ? selectedIndex : fallbackIndex;
19
+ const focusItem = (index) => {
20
+ itemRefs.current[index]?.focus();
21
+ };
22
+ const findEnabledIndex = (startIndex, direction) => {
23
+ if (options.length === 0) return -1;
24
+ let nextIndex = startIndex;
25
+ for (let i = 0; i < options.length; i += 1) {
26
+ nextIndex = (nextIndex + direction + options.length) % options.length;
27
+ if (!options[nextIndex]?.disabled) return nextIndex;
28
+ }
29
+ return startIndex;
30
+ };
31
+ const selectIndex = (index) => {
32
+ const nextOption = options[index];
33
+ if (!nextOption || nextOption.disabled || nextOption.value === value) return;
34
+ onChange(nextOption.value);
35
+ };
36
+ const handleKeyDown = (event, index) => {
37
+ switch (event.key) {
38
+ case "ArrowRight":
39
+ case "ArrowDown": {
40
+ event.preventDefault();
41
+ const nextIndex = findEnabledIndex(index, 1);
42
+ focusItem(nextIndex);
43
+ selectIndex(nextIndex);
44
+ break;
45
+ }
46
+ case "ArrowLeft":
47
+ case "ArrowUp": {
48
+ event.preventDefault();
49
+ const nextIndex = findEnabledIndex(index, -1);
50
+ focusItem(nextIndex);
51
+ selectIndex(nextIndex);
52
+ break;
53
+ }
54
+ case "Home":
55
+ event.preventDefault();
56
+ focusItem(fallbackIndex);
57
+ if (fallbackIndex >= 0) selectIndex(fallbackIndex);
58
+ break;
59
+ case "End":
60
+ event.preventDefault();
61
+ if (lastEnabledIndex >= 0) {
62
+ focusItem(lastEnabledIndex);
63
+ selectIndex(lastEnabledIndex);
64
+ }
65
+ break;
66
+ default: break;
67
+ }
68
+ };
69
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
70
+ className: require_cx.cx(require_segmented_toggle_module.default.track, className),
71
+ role: "radiogroup",
72
+ "aria-label": ariaLabel,
73
+ "aria-labelledby": ariaLabelledBy,
74
+ children: options.map((opt, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
75
+ ref: (node) => {
76
+ itemRefs.current[index] = node;
77
+ },
78
+ type: "button",
79
+ role: "radio",
80
+ "aria-checked": opt.value === value,
81
+ disabled: opt.disabled,
82
+ tabIndex: opt.disabled ? -1 : index === tabbableIndex ? 0 : -1,
83
+ onClick: () => {
84
+ if (opt.value !== value) onChange(opt.value);
85
+ },
86
+ onKeyDown: (event) => handleKeyDown(event, index),
87
+ className: require_cx.cx(require_segmented_toggle_module.default.option),
88
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
89
+ className: require_segmented_toggle_module.default.label,
90
+ children: opt.label
91
+ })
92
+ }, opt.value))
93
+ });
94
+ }
95
+ //#endregion
96
+ exports.SegmentedToggle = SegmentedToggle;
97
+
98
+ //# sourceMappingURL=index47.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index47.cjs","names":[],"sources":["../src/components/segmented-toggle/SegmentedToggle.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport type { ReactNode } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./segmented-toggle.module.css\";\n\nexport type SegmentedToggleOption<T extends string = string> = {\n label: ReactNode;\n value: T;\n disabled?: boolean;\n};\n\nexport type SegmentedToggleProps<T extends string = string> = {\n options: SegmentedToggleOption<T>[];\n value: T;\n onChange: (value: T) => void;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n className?: string;\n};\n\nexport function SegmentedToggle<T extends string = string>({\n options,\n value,\n onChange,\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n className,\n}: SegmentedToggleProps<T>) {\n const itemRefs = React.useRef<Array<HTMLButtonElement | null>>([]);\n const selectedIndex = options.findIndex((opt) => opt.value === value);\n const fallbackIndex = options.findIndex((opt) => !opt.disabled);\n let lastEnabledIndex = -1;\n for (let index = options.length - 1; index >= 0; index -= 1) {\n if (!options[index]?.disabled) {\n lastEnabledIndex = index;\n break;\n }\n }\n const tabbableIndex =\n selectedIndex >= 0 && !options[selectedIndex]?.disabled\n ? selectedIndex\n : fallbackIndex;\n\n const focusItem = (index: number) => {\n itemRefs.current[index]?.focus();\n };\n\n const findEnabledIndex = (\n startIndex: number,\n direction: 1 | -1,\n ): number => {\n if (options.length === 0) return -1;\n\n let nextIndex = startIndex;\n for (let i = 0; i < options.length; i += 1) {\n nextIndex = (nextIndex + direction + options.length) % options.length;\n if (!options[nextIndex]?.disabled) {\n return nextIndex;\n }\n }\n\n return startIndex;\n };\n\n const selectIndex = (index: number) => {\n const nextOption = options[index];\n if (!nextOption || nextOption.disabled || nextOption.value === value) {\n return;\n }\n onChange(nextOption.value);\n };\n\n const handleKeyDown = (\n event: React.KeyboardEvent<HTMLButtonElement>,\n index: number,\n ) => {\n switch (event.key) {\n case \"ArrowRight\":\n case \"ArrowDown\": {\n event.preventDefault();\n const nextIndex = findEnabledIndex(index, 1);\n focusItem(nextIndex);\n selectIndex(nextIndex);\n break;\n }\n case \"ArrowLeft\":\n case \"ArrowUp\": {\n event.preventDefault();\n const nextIndex = findEnabledIndex(index, -1);\n focusItem(nextIndex);\n selectIndex(nextIndex);\n break;\n }\n case \"Home\": {\n event.preventDefault();\n focusItem(fallbackIndex);\n if (fallbackIndex >= 0) {\n selectIndex(fallbackIndex);\n }\n break;\n }\n case \"End\": {\n event.preventDefault();\n if (lastEnabledIndex >= 0) {\n focusItem(lastEnabledIndex);\n selectIndex(lastEnabledIndex);\n }\n break;\n }\n default:\n break;\n }\n };\n\n return (\n <div\n className={cx(styles.track, className)}\n role=\"radiogroup\"\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n {options.map((opt, index) => (\n <button\n key={opt.value}\n ref={(node) => {\n itemRefs.current[index] = node;\n }}\n type=\"button\"\n role=\"radio\"\n aria-checked={opt.value === value}\n disabled={opt.disabled}\n tabIndex={\n opt.disabled\n ? -1\n : index === tabbableIndex\n ? 0\n : -1\n }\n onClick={() => {\n if (opt.value !== value) {\n onChange(opt.value);\n }\n }}\n onKeyDown={(event) => handleKeyDown(event, index)}\n className={cx(styles.option)}\n >\n <span className={styles.label}>{opt.label}</span>\n </button>\n ))}\n </div>\n );\n}\n"],"mappings":";;;;;;;;AAsBA,SAAgB,gBAA2C,EACzD,SACA,OACA,UACA,cAAc,WACd,mBAAmB,gBACnB,aAC0B;CAC1B,MAAM,WAAW,MAAM,OAAwC,CAAC,CAAC;CACjE,MAAM,gBAAgB,QAAQ,WAAW,QAAQ,IAAI,UAAU,KAAK;CACpE,MAAM,gBAAgB,QAAQ,WAAW,QAAQ,CAAC,IAAI,QAAQ;CAC9D,IAAI,mBAAmB;CACvB,KAAK,IAAI,QAAQ,QAAQ,SAAS,GAAG,SAAS,GAAG,SAAS,GACxD,IAAI,CAAC,QAAQ,MAAM,EAAE,UAAU;EAC7B,mBAAmB;EACnB;CACF;CAEF,MAAM,gBACJ,iBAAiB,KAAK,CAAC,QAAQ,cAAc,EAAE,WAC3C,gBACA;CAEN,MAAM,aAAa,UAAkB;EACnC,SAAS,QAAQ,MAAM,EAAE,MAAM;CACjC;CAEA,MAAM,oBACJ,YACA,cACW;EACX,IAAI,QAAQ,WAAW,GAAG,OAAO;EAEjC,IAAI,YAAY;EAChB,KAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK,GAAG;GAC1C,aAAa,YAAY,YAAY,QAAQ,UAAU,QAAQ;GAC/D,IAAI,CAAC,QAAQ,UAAU,EAAE,UACvB,OAAO;EAEX;EAEA,OAAO;CACT;CAEA,MAAM,eAAe,UAAkB;EACrC,MAAM,aAAa,QAAQ;EAC3B,IAAI,CAAC,cAAc,WAAW,YAAY,WAAW,UAAU,OAC7D;EAEF,SAAS,WAAW,KAAK;CAC3B;CAEA,MAAM,iBACJ,OACA,UACG;EACH,QAAQ,MAAM,KAAd;GACE,KAAK;GACL,KAAK,aAAa;IAChB,MAAM,eAAe;IACrB,MAAM,YAAY,iBAAiB,OAAO,CAAC;IAC3C,UAAU,SAAS;IACnB,YAAY,SAAS;IACrB;GACF;GACA,KAAK;GACL,KAAK,WAAW;IACd,MAAM,eAAe;IACrB,MAAM,YAAY,iBAAiB,OAAO,EAAE;IAC5C,UAAU,SAAS;IACnB,YAAY,SAAS;IACrB;GACF;GACA,KAAK;IACH,MAAM,eAAe;IACrB,UAAU,aAAa;IACvB,IAAI,iBAAiB,GACnB,YAAY,aAAa;IAE3B;GAEF,KAAK;IACH,MAAM,eAAe;IACrB,IAAI,oBAAoB,GAAG;KACzB,UAAU,gBAAgB;KAC1B,YAAY,gBAAgB;IAC9B;IACA;GAEF,SACE;EACJ;CACF;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EACE,WAAW,WAAA,GAAG,gCAAA,QAAO,OAAO,SAAS;EACrC,MAAK;EACL,cAAY;EACZ,mBAAiB;YAEhB,QAAQ,KAAK,KAAK,UACjB,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;GAEE,MAAM,SAAS;IACb,SAAS,QAAQ,SAAS;GAC5B;GACA,MAAK;GACL,MAAK;GACL,gBAAc,IAAI,UAAU;GAC5B,UAAU,IAAI;GACd,UACE,IAAI,WACA,KACA,UAAU,gBACR,IACA;GAER,eAAe;IACb,IAAI,IAAI,UAAU,OAChB,SAAS,IAAI,KAAK;GAEtB;GACA,YAAY,UAAU,cAAc,OAAO,KAAK;GAChD,WAAW,WAAA,GAAG,gCAAA,QAAO,MAAM;aAE3B,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;IAAM,WAAW,gCAAA,QAAO;cAAQ,IAAI;GAAY,CAAA;EAC1C,GAxBD,IAAI,KAwBH,CACT;CACE,CAAA;AAET"}
@@ -0,0 +1,40 @@
1
+ //#region src/components/button/button.module.css
2
+ var button = "uzi-button-module__button__5dzDN";
3
+ var sizeSm = "uzi-button-module__sizeSm__jb544";
4
+ var sizeMd = "uzi-button-module__sizeMd__lIo8M";
5
+ var sizeLg = "uzi-button-module__sizeLg__QSSuW";
6
+ var sizeIcon = "uzi-button-module__sizeIcon__Aa9tN";
7
+ var variantPrimary = "uzi-button-module__variantPrimary__zp2Pg";
8
+ var variantSecondary = "uzi-button-module__variantSecondary__oX5CB";
9
+ var variantOutline = "uzi-button-module__variantOutline__uXfiP";
10
+ var variantGhost = "uzi-button-module__variantGhost__-OEB8";
11
+ var variantDestructive = "uzi-button-module__variantDestructive__5IeYA";
12
+ var variantLink = "uzi-button-module__variantLink__Olx4I";
13
+ var button_module_default = {
14
+ button,
15
+ sizeSm,
16
+ sizeMd,
17
+ sizeLg,
18
+ sizeIcon,
19
+ variantPrimary,
20
+ variantSecondary,
21
+ variantOutline,
22
+ variantGhost,
23
+ variantDestructive,
24
+ variantLink
25
+ };
26
+ //#endregion
27
+ exports.button = button;
28
+ exports.default = button_module_default;
29
+ exports.sizeIcon = sizeIcon;
30
+ exports.sizeLg = sizeLg;
31
+ exports.sizeMd = sizeMd;
32
+ exports.sizeSm = sizeSm;
33
+ exports.variantDestructive = variantDestructive;
34
+ exports.variantGhost = variantGhost;
35
+ exports.variantLink = variantLink;
36
+ exports.variantOutline = variantOutline;
37
+ exports.variantPrimary = variantPrimary;
38
+ exports.variantSecondary = variantSecondary;
39
+
40
+ //# sourceMappingURL=index5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index5.cjs","names":[],"sources":["../src/components/button/button.module.css"],"sourcesContent":[".button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n font-family: inherit;\n font-weight: 600;\n border-radius: 8px;\n border: 1px solid transparent;\n cursor: pointer;\n text-decoration: none;\n transition:\n opacity 0.15s,\n border-color 0.15s,\n color 0.15s,\n background 0.15s;\n white-space: nowrap;\n line-height: 1;\n}\n\n.button:focus-visible {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n.button svg {\n width: 1rem;\n height: 1rem;\n flex-shrink: 0;\n}\n\n.button:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n/* Sizes */\n.sizeSm {\n font-size: 0.82rem;\n min-height: 2rem;\n padding: 6px 14px;\n}\n\n.sizeMd {\n font-size: 0.95rem;\n min-height: 2.25rem;\n padding: 10px 22px;\n}\n\n.sizeLg {\n font-size: 1rem;\n min-height: 2.5rem;\n padding: 12px 28px;\n}\n\n.sizeIcon {\n width: 2.25rem;\n height: 2.25rem;\n padding: 0;\n}\n\n/* Variants */\n.variantPrimary {\n background: var(--ts-btn-primary-bg, var(--primary));\n color: var(--ts-btn-primary-text, var(--primary-foreground));\n}\n\n.variantPrimary:hover:not(:disabled) {\n opacity: 0.88;\n}\n\n.variantSecondary {\n background: var(--ts-btn-secondary-bg, var(--secondary));\n color: var(--ts-btn-secondary-text, var(--secondary-foreground));\n border-color: var(--ts-btn-secondary-border, var(--border));\n}\n\n.variantSecondary:hover:not(:disabled) {\n background: var(--ts-btn-secondary-hover-bg, color-mix(in srgb, var(--secondary) 90%, black));\n}\n\n.variantOutline {\n background: var(--ts-btn-outline-bg, var(--background));\n color: var(--ts-btn-outline-text, var(--foreground));\n border-color: var(--ts-btn-outline-border, var(--border));\n}\n\n.variantOutline:hover:not(:disabled) {\n background: var(--ts-btn-outline-hover-bg, var(--accent));\n color: var(--ts-btn-outline-hover-text, var(--accent-foreground));\n}\n\n.variantGhost {\n background: transparent;\n color: var(--ts-btn-ghost-text, var(--muted-foreground));\n padding-left: 8px;\n padding-right: 8px;\n}\n\n.variantGhost:hover:not(:disabled) {\n background: var(--ts-btn-ghost-hover-bg, var(--accent));\n color: var(--ts-btn-ghost-hover-text, var(--accent-foreground));\n}\n\n.variantDestructive {\n background: var(--ts-btn-danger-bg, var(--destructive));\n color: var(--ts-btn-danger-text, var(--destructive-foreground));\n}\n\n.variantDestructive:hover:not(:disabled) {\n opacity: 0.9;\n}\n\n.variantLink {\n background: transparent;\n color: var(--ts-btn-link-text, var(--primary));\n border-color: transparent;\n min-height: auto;\n padding: 0;\n border-radius: 0;\n}\n\n.variantLink:hover:not(:disabled) {\n text-decoration: underline;\n text-underline-offset: 0.2em;\n}\n"],"mappings":""}
package/dist/index5.js ADDED
@@ -0,0 +1,45 @@
1
+ import { cx } from "./index3.js";
2
+ import button_module_default from "./index4.js";
3
+ import "react";
4
+ import { Slot } from "@radix-ui/react-slot";
5
+ import { jsx } from "react/jsx-runtime";
6
+ //#region src/components/button/Button.tsx
7
+ var variantClass = {
8
+ default: "variantPrimary",
9
+ primary: "variantPrimary",
10
+ secondary: "variantSecondary",
11
+ outline: "variantOutline",
12
+ ghost: "variantGhost",
13
+ destructive: "variantDestructive",
14
+ link: "variantLink"
15
+ };
16
+ var sizeClass = {
17
+ default: "sizeMd",
18
+ sm: "sizeSm",
19
+ md: "sizeMd",
20
+ lg: "sizeLg",
21
+ icon: "sizeIcon"
22
+ };
23
+ function Button({ as, variant = "default", size = "default", className, children, asChild = false, ...rest }) {
24
+ const classes = cx(button_module_default.button, button_module_default[variantClass[variant]], button_module_default[sizeClass[size]], className);
25
+ if (asChild) return /* @__PURE__ */ jsx(Slot, {
26
+ className: classes,
27
+ ...rest,
28
+ children
29
+ });
30
+ if (as === "a") return /* @__PURE__ */ jsx("a", {
31
+ className: classes,
32
+ ...rest,
33
+ children
34
+ });
35
+ return /* @__PURE__ */ jsx("button", {
36
+ type: "button",
37
+ className: classes,
38
+ ...rest,
39
+ children
40
+ });
41
+ }
42
+ //#endregion
43
+ export { Button };
44
+
45
+ //# sourceMappingURL=index5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index5.js","names":[],"sources":["../src/components/button/Button.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./button.module.css\";\n\nexport type ButtonVariant =\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"outline\"\n | \"ghost\"\n | \"destructive\"\n | \"link\";\nexport type ButtonSize = \"default\" | \"sm\" | \"md\" | \"lg\" | \"icon\";\n\ntype BaseProps = {\n variant?: ButtonVariant;\n size?: ButtonSize;\n className?: string;\n children?: React.ReactNode;\n asChild?: boolean;\n};\n\ntype AsButton = BaseProps &\n React.ButtonHTMLAttributes<HTMLButtonElement> & { as?: \"button\" };\n\ntype AsAnchor = BaseProps &\n React.AnchorHTMLAttributes<HTMLAnchorElement> & { as: \"a\" };\n\nexport type ButtonProps = AsButton | AsAnchor;\n\nconst variantClass: Record<ButtonVariant, string> = {\n default: \"variantPrimary\",\n primary: \"variantPrimary\",\n secondary: \"variantSecondary\",\n outline: \"variantOutline\",\n ghost: \"variantGhost\",\n destructive: \"variantDestructive\",\n link: \"variantLink\",\n};\n\nconst sizeClass: Record<ButtonSize, string> = {\n default: \"sizeMd\",\n sm: \"sizeSm\",\n md: \"sizeMd\",\n lg: \"sizeLg\",\n icon: \"sizeIcon\",\n};\n\nexport function Button({\n as,\n variant = \"default\",\n size = \"default\",\n className,\n children,\n asChild = false,\n ...rest\n}: ButtonProps) {\n const classes = cx(\n styles.button,\n styles[variantClass[variant]],\n styles[sizeClass[size]],\n className,\n );\n\n if (asChild) {\n return (\n <Slot className={classes} {...rest}>\n {children}\n </Slot>\n );\n }\n\n if (as === \"a\") {\n return (\n <a\n className={classes}\n {...(rest as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\n >\n {children}\n </a>\n );\n }\n\n return (\n <button\n type=\"button\"\n className={classes}\n {...(rest as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n >\n {children}\n </button>\n );\n}\n"],"mappings":";;;;;;AA+BA,IAAM,eAA8C;CAClD,SAAS;CACT,SAAS;CACT,WAAW;CACX,SAAS;CACT,OAAO;CACP,aAAa;CACb,MAAM;AACR;AAEA,IAAM,YAAwC;CAC5C,SAAS;CACT,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,SAAgB,OAAO,EACrB,IACA,UAAU,WACV,OAAO,WACP,WACA,UACA,UAAU,OACV,GAAG,QACW;CACd,MAAM,UAAU,GACd,sBAAO,QACP,sBAAO,aAAa,WACpB,sBAAO,UAAU,QACjB,SACF;CAEA,IAAI,SACF,OACE,oBAAC,MAAD;EAAM,WAAW;EAAS,GAAI;EAC3B;CACG,CAAA;CAIV,IAAI,OAAO,KACT,OACE,oBAAC,KAAD;EACE,WAAW;EACX,GAAK;EAEJ;CACA,CAAA;CAIP,OACE,oBAAC,UAAD;EACE,MAAK;EACL,WAAW;EACX,GAAK;EAEJ;CACK,CAAA;AAEZ"}
@@ -0,0 +1,47 @@
1
+ const require_runtime = require("./index2.cjs");
2
+ const require_cx = require("./index4.cjs");
3
+ const require_button_module = require("./index5.cjs");
4
+ let react = require("react");
5
+ react = require_runtime.__toESM(react, 1);
6
+ let _radix_ui_react_slot = require("@radix-ui/react-slot");
7
+ let react_jsx_runtime = require("react/jsx-runtime");
8
+ //#region src/components/button/Button.tsx
9
+ var variantClass = {
10
+ default: "variantPrimary",
11
+ primary: "variantPrimary",
12
+ secondary: "variantSecondary",
13
+ outline: "variantOutline",
14
+ ghost: "variantGhost",
15
+ destructive: "variantDestructive",
16
+ link: "variantLink"
17
+ };
18
+ var sizeClass = {
19
+ default: "sizeMd",
20
+ sm: "sizeSm",
21
+ md: "sizeMd",
22
+ lg: "sizeLg",
23
+ icon: "sizeIcon"
24
+ };
25
+ function Button({ as, variant = "default", size = "default", className, children, asChild = false, ...rest }) {
26
+ const classes = require_cx.cx(require_button_module.default.button, require_button_module.default[variantClass[variant]], require_button_module.default[sizeClass[size]], className);
27
+ if (asChild) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_slot.Slot, {
28
+ className: classes,
29
+ ...rest,
30
+ children
31
+ });
32
+ if (as === "a") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
33
+ className: classes,
34
+ ...rest,
35
+ children
36
+ });
37
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
38
+ type: "button",
39
+ className: classes,
40
+ ...rest,
41
+ children
42
+ });
43
+ }
44
+ //#endregion
45
+ exports.Button = Button;
46
+
47
+ //# sourceMappingURL=index6.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index6.cjs","names":[],"sources":["../src/components/button/Button.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./button.module.css\";\n\nexport type ButtonVariant =\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"outline\"\n | \"ghost\"\n | \"destructive\"\n | \"link\";\nexport type ButtonSize = \"default\" | \"sm\" | \"md\" | \"lg\" | \"icon\";\n\ntype BaseProps = {\n variant?: ButtonVariant;\n size?: ButtonSize;\n className?: string;\n children?: React.ReactNode;\n asChild?: boolean;\n};\n\ntype AsButton = BaseProps &\n React.ButtonHTMLAttributes<HTMLButtonElement> & { as?: \"button\" };\n\ntype AsAnchor = BaseProps &\n React.AnchorHTMLAttributes<HTMLAnchorElement> & { as: \"a\" };\n\nexport type ButtonProps = AsButton | AsAnchor;\n\nconst variantClass: Record<ButtonVariant, string> = {\n default: \"variantPrimary\",\n primary: \"variantPrimary\",\n secondary: \"variantSecondary\",\n outline: \"variantOutline\",\n ghost: \"variantGhost\",\n destructive: \"variantDestructive\",\n link: \"variantLink\",\n};\n\nconst sizeClass: Record<ButtonSize, string> = {\n default: \"sizeMd\",\n sm: \"sizeSm\",\n md: \"sizeMd\",\n lg: \"sizeLg\",\n icon: \"sizeIcon\",\n};\n\nexport function Button({\n as,\n variant = \"default\",\n size = \"default\",\n className,\n children,\n asChild = false,\n ...rest\n}: ButtonProps) {\n const classes = cx(\n styles.button,\n styles[variantClass[variant]],\n styles[sizeClass[size]],\n className,\n );\n\n if (asChild) {\n return (\n <Slot className={classes} {...rest}>\n {children}\n </Slot>\n );\n }\n\n if (as === \"a\") {\n return (\n <a\n className={classes}\n {...(rest as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\n >\n {children}\n </a>\n );\n }\n\n return (\n <button\n type=\"button\"\n className={classes}\n {...(rest as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n >\n {children}\n </button>\n );\n}\n"],"mappings":";;;;;;;;AA+BA,IAAM,eAA8C;CAClD,SAAS;CACT,SAAS;CACT,WAAW;CACX,SAAS;CACT,OAAO;CACP,aAAa;CACb,MAAM;AACR;AAEA,IAAM,YAAwC;CAC5C,SAAS;CACT,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,MAAM;AACR;AAEA,SAAgB,OAAO,EACrB,IACA,UAAU,WACV,OAAO,WACP,WACA,UACA,UAAU,OACV,GAAG,QACW;CACd,MAAM,UAAU,WAAA,GACd,sBAAA,QAAO,QACP,sBAAA,QAAO,aAAa,WACpB,sBAAA,QAAO,UAAU,QACjB,SACF;CAEA,IAAI,SACF,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,qBAAA,MAAD;EAAM,WAAW;EAAS,GAAI;EAC3B;CACG,CAAA;CAIV,IAAI,OAAO,KACT,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,KAAD;EACE,WAAW;EACX,GAAK;EAEJ;CACA,CAAA;CAIP,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,UAAD;EACE,MAAK;EACL,WAAW;EACX,GAAK;EAEJ;CACK,CAAA;AAEZ"}
package/dist/index6.js ADDED
@@ -0,0 +1,17 @@
1
+ //#region src/components/avatar/avatar.module.css
2
+ var avatar = "uzi-avatar-module__avatar__yPIOs";
3
+ var image = "uzi-avatar-module__image__Ngo7A";
4
+ var fallback = "uzi-avatar-module__fallback__Tf3oZ";
5
+ var avatar_module_default = {
6
+ avatar,
7
+ "size-sm": "uzi-avatar-module__size-sm__v5riJ",
8
+ "size-md": "uzi-avatar-module__size-md__g7IQS",
9
+ "size-lg": "uzi-avatar-module__size-lg__Ca4xk",
10
+ "size-xl": "uzi-avatar-module__size-xl__K0Dfk",
11
+ image,
12
+ fallback
13
+ };
14
+ //#endregion
15
+ export { avatar, avatar_module_default as default, fallback, image };
16
+
17
+ //# sourceMappingURL=index6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index6.js","names":[],"sources":["../src/components/avatar/avatar.module.css"],"sourcesContent":[".avatar {\n position: relative;\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n border-radius: 999px;\n background: var(--ts-avatar-bg, var(--muted));\n color: var(--ts-avatar-fg, var(--muted-foreground));\n}\n\n.size-sm {\n width: 1.75rem;\n height: 1.75rem;\n}\n\n.size-md {\n width: 2rem;\n height: 2rem;\n}\n\n.size-lg {\n width: 2.25rem;\n height: 2.25rem;\n}\n\n.size-xl {\n width: 4rem;\n height: 4rem;\n}\n\n.image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.fallback {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n border-radius: inherit;\n background: var(--ts-avatar-fallback-bg, var(--muted));\n color: var(--ts-avatar-fallback-fg, var(--muted-foreground));\n font-size: 0.85rem;\n font-weight: 700;\n line-height: 1;\n text-transform: uppercase;\n}\n"],"mappings":""}
@@ -0,0 +1,20 @@
1
+ //#region src/components/avatar/avatar.module.css
2
+ var avatar = "uzi-avatar-module__avatar__yPIOs";
3
+ var image = "uzi-avatar-module__image__Ngo7A";
4
+ var fallback = "uzi-avatar-module__fallback__Tf3oZ";
5
+ var avatar_module_default = {
6
+ avatar,
7
+ "size-sm": "uzi-avatar-module__size-sm__v5riJ",
8
+ "size-md": "uzi-avatar-module__size-md__g7IQS",
9
+ "size-lg": "uzi-avatar-module__size-lg__Ca4xk",
10
+ "size-xl": "uzi-avatar-module__size-xl__K0Dfk",
11
+ image,
12
+ fallback
13
+ };
14
+ //#endregion
15
+ exports.avatar = avatar;
16
+ exports.default = avatar_module_default;
17
+ exports.fallback = fallback;
18
+ exports.image = image;
19
+
20
+ //# sourceMappingURL=index7.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index7.cjs","names":[],"sources":["../src/components/avatar/avatar.module.css"],"sourcesContent":[".avatar {\n position: relative;\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n border-radius: 999px;\n background: var(--ts-avatar-bg, var(--muted));\n color: var(--ts-avatar-fg, var(--muted-foreground));\n}\n\n.size-sm {\n width: 1.75rem;\n height: 1.75rem;\n}\n\n.size-md {\n width: 2rem;\n height: 2rem;\n}\n\n.size-lg {\n width: 2.25rem;\n height: 2.25rem;\n}\n\n.size-xl {\n width: 4rem;\n height: 4rem;\n}\n\n.image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.fallback {\n display: flex;\n width: 100%;\n height: 100%;\n align-items: center;\n justify-content: center;\n border-radius: inherit;\n background: var(--ts-avatar-fallback-bg, var(--muted));\n color: var(--ts-avatar-fallback-fg, var(--muted-foreground));\n font-size: 0.85rem;\n font-weight: 700;\n line-height: 1;\n text-transform: uppercase;\n}\n"],"mappings":""}
package/dist/index7.js ADDED
@@ -0,0 +1,30 @@
1
+ "use client";
2
+ import { cx } from "./index3.js";
3
+ import avatar_module_default from "./index6.js";
4
+ import "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+ import * as AvatarPrimitive from "@radix-ui/react-avatar";
7
+ //#region src/components/avatar/Avatar.tsx
8
+ function Avatar({ className, size = "md", ...props }) {
9
+ const sizeClass = size === "sm" ? avatar_module_default["size-sm"] : size === "lg" ? avatar_module_default["size-lg"] : size === "xl" ? avatar_module_default["size-xl"] : avatar_module_default["size-md"];
10
+ return /* @__PURE__ */ jsx(AvatarPrimitive.Root, {
11
+ className: cx(avatar_module_default.avatar, sizeClass, className),
12
+ ...props
13
+ });
14
+ }
15
+ function AvatarImage({ className, ...props }) {
16
+ return /* @__PURE__ */ jsx(AvatarPrimitive.Image, {
17
+ className: cx(avatar_module_default.image, className),
18
+ ...props
19
+ });
20
+ }
21
+ function AvatarFallback({ className, ...props }) {
22
+ return /* @__PURE__ */ jsx(AvatarPrimitive.Fallback, {
23
+ className: cx(avatar_module_default.fallback, className),
24
+ ...props
25
+ });
26
+ }
27
+ //#endregion
28
+ export { Avatar, AvatarFallback, AvatarImage };
29
+
30
+ //# sourceMappingURL=index7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index7.js","names":[],"sources":["../src/components/avatar/Avatar.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./avatar.module.css\";\n\nexport type AvatarSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport type AvatarProps = React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: AvatarSize;\n};\n\nexport function Avatar({\n className,\n size = \"md\",\n ...props\n}: AvatarProps) {\n const sizeClass =\n size === \"sm\" ? styles[\"size-sm\"] : size === \"lg\" ? styles[\"size-lg\"] : size === \"xl\" ? styles[\"size-xl\"] : styles[\"size-md\"];\n\n return (\n <AvatarPrimitive.Root\n className={cx(styles.avatar, sizeClass, className)}\n {...props}\n />\n );\n}\n\nexport function AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n className={cx(styles.image, className)}\n {...props}\n />\n );\n}\n\nexport function AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n className={cx(styles.fallback, className)}\n {...props}\n />\n );\n}\n"],"mappings":";;;;;;;AAaA,SAAgB,OAAO,EACrB,WACA,OAAO,MACP,GAAG,SACW;CACd,MAAM,YACJ,SAAS,OAAO,sBAAO,aAAa,SAAS,OAAO,sBAAO,aAAa,SAAS,OAAO,sBAAO,aAAa,sBAAO;CAErH,OACE,oBAAC,gBAAgB,MAAjB;EACE,WAAW,GAAG,sBAAO,QAAQ,WAAW,SAAS;EACjD,GAAI;CACL,CAAA;AAEL;AAEA,SAAgB,YAAY,EAC1B,WACA,GAAG,SACkD;CACrD,OACE,oBAAC,gBAAgB,OAAjB;EACE,WAAW,GAAG,sBAAO,OAAO,SAAS;EACrC,GAAI;CACL,CAAA;AAEL;AAEA,SAAgB,eAAe,EAC7B,WACA,GAAG,SACqD;CACxD,OACE,oBAAC,gBAAgB,UAAjB;EACE,WAAW,GAAG,sBAAO,UAAU,SAAS;EACxC,GAAI;CACL,CAAA;AAEL"}
@@ -0,0 +1,35 @@
1
+ "use client";
2
+ const require_runtime = require("./index2.cjs");
3
+ const require_cx = require("./index4.cjs");
4
+ const require_avatar_module = require("./index7.cjs");
5
+ let react = require("react");
6
+ react = require_runtime.__toESM(react, 1);
7
+ let react_jsx_runtime = require("react/jsx-runtime");
8
+ let _radix_ui_react_avatar = require("@radix-ui/react-avatar");
9
+ _radix_ui_react_avatar = require_runtime.__toESM(_radix_ui_react_avatar, 1);
10
+ //#region src/components/avatar/Avatar.tsx
11
+ function Avatar({ className, size = "md", ...props }) {
12
+ const sizeClass = size === "sm" ? require_avatar_module.default["size-sm"] : size === "lg" ? require_avatar_module.default["size-lg"] : size === "xl" ? require_avatar_module.default["size-xl"] : require_avatar_module.default["size-md"];
13
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_avatar.Root, {
14
+ className: require_cx.cx(require_avatar_module.default.avatar, sizeClass, className),
15
+ ...props
16
+ });
17
+ }
18
+ function AvatarImage({ className, ...props }) {
19
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_avatar.Image, {
20
+ className: require_cx.cx(require_avatar_module.default.image, className),
21
+ ...props
22
+ });
23
+ }
24
+ function AvatarFallback({ className, ...props }) {
25
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_radix_ui_react_avatar.Fallback, {
26
+ className: require_cx.cx(require_avatar_module.default.fallback, className),
27
+ ...props
28
+ });
29
+ }
30
+ //#endregion
31
+ exports.Avatar = Avatar;
32
+ exports.AvatarFallback = AvatarFallback;
33
+ exports.AvatarImage = AvatarImage;
34
+
35
+ //# sourceMappingURL=index8.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index8.cjs","names":[],"sources":["../src/components/avatar/Avatar.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./avatar.module.css\";\n\nexport type AvatarSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport type AvatarProps = React.ComponentProps<typeof AvatarPrimitive.Root> & {\n size?: AvatarSize;\n};\n\nexport function Avatar({\n className,\n size = \"md\",\n ...props\n}: AvatarProps) {\n const sizeClass =\n size === \"sm\" ? styles[\"size-sm\"] : size === \"lg\" ? styles[\"size-lg\"] : size === \"xl\" ? styles[\"size-xl\"] : styles[\"size-md\"];\n\n return (\n <AvatarPrimitive.Root\n className={cx(styles.avatar, sizeClass, className)}\n {...props}\n />\n );\n}\n\nexport function AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n className={cx(styles.image, className)}\n {...props}\n />\n );\n}\n\nexport function AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n className={cx(styles.fallback, className)}\n {...props}\n />\n );\n}\n"],"mappings":";;;;;;;;;;AAaA,SAAgB,OAAO,EACrB,WACA,OAAO,MACP,GAAG,SACW;CACd,MAAM,YACJ,SAAS,OAAO,sBAAA,QAAO,aAAa,SAAS,OAAO,sBAAA,QAAO,aAAa,SAAS,OAAO,sBAAA,QAAO,aAAa,sBAAA,QAAO;CAErH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,uBAAgB,MAAjB;EACE,WAAW,WAAA,GAAG,sBAAA,QAAO,QAAQ,WAAW,SAAS;EACjD,GAAI;CACL,CAAA;AAEL;AAEA,SAAgB,YAAY,EAC1B,WACA,GAAG,SACkD;CACrD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,uBAAgB,OAAjB;EACE,WAAW,WAAA,GAAG,sBAAA,QAAO,OAAO,SAAS;EACrC,GAAI;CACL,CAAA;AAEL;AAEA,SAAgB,eAAe,EAC7B,WACA,GAAG,SACqD;CACxD,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,uBAAgB,UAAjB;EACE,WAAW,WAAA,GAAG,sBAAA,QAAO,UAAU,SAAS;EACxC,GAAI;CACL,CAAA;AAEL"}
package/dist/index8.js ADDED
@@ -0,0 +1,18 @@
1
+ //#region src/components/card/card.module.css
2
+ var card = "uzi-card-module__card__ZPFTz";
3
+ var interactive = "uzi-card-module__interactive__zlPML";
4
+ var card_module_default = {
5
+ card,
6
+ "tone-default": "uzi-card-module__tone-default__7Ujf9",
7
+ "tone-muted": "uzi-card-module__tone-muted__RQy5B",
8
+ "tone-contrast": "uzi-card-module__tone-contrast__JpFxL",
9
+ interactive,
10
+ "padding-none": "uzi-card-module__padding-none__LXdx-",
11
+ "padding-sm": "uzi-card-module__padding-sm__-Ub1s",
12
+ "padding-md": "uzi-card-module__padding-md__kUf46",
13
+ "padding-lg": "uzi-card-module__padding-lg__a5mWP"
14
+ };
15
+ //#endregion
16
+ export { card, card_module_default as default, interactive };
17
+
18
+ //# sourceMappingURL=index8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index8.js","names":[],"sources":["../src/components/card/card.module.css"],"sourcesContent":[".card {\n position: relative;\n overflow: visible;\n border-radius: var(--ts-card-radius, 12px);\n border: 1px solid var(--ts-card-border, var(--border));\n background: var(--ts-card-bg, var(--panel));\n color: var(--ts-card-fg, var(--foreground));\n box-shadow: var(--ts-card-shadow, 0 16px 36px rgba(0, 0, 0, 0.28));\n padding: var(--ts-card-padding, 16px);\n transition:\n transform 140ms ease,\n box-shadow 140ms ease,\n border-color 140ms ease,\n background-color 140ms ease;\n}\n\n.tone-default {\n --ts-card-bg: var(--panel);\n --ts-card-border: var(--border);\n --ts-card-shadow: 0 16px 36px rgba(0, 0, 0, 0.28);\n}\n\n.tone-muted {\n --ts-card-bg: var(--muted);\n --ts-card-border: var(--border);\n --ts-card-shadow: 0 10px 26px rgba(0, 0, 0, 0.22);\n}\n\n.tone-contrast {\n --ts-card-bg: var(--ts-card-contrast-bg, color-mix(in srgb, var(--background) 60%, black));\n --ts-card-border: var(--border);\n --ts-card-shadow: 0 18px 50px rgba(0, 0, 0, 0.32);\n}\n\n.interactive {\n cursor: default;\n}\n\n.interactive:hover {\n transform: translateY(-1px);\n box-shadow: 0 22px 60px rgba(0, 0, 0, 0.32);\n border-color: var(--ts-card-hover-border, color-mix(in srgb, var(--primary) 40%, transparent));\n}\n\n.interactive:focus-within {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n.padding-none { --ts-card-padding: 0; }\n.padding-sm { --ts-card-padding: 10px; }\n.padding-md { --ts-card-padding: 16px; }\n.padding-lg { --ts-card-padding: 20px; }\n"],"mappings":""}
@@ -0,0 +1,20 @@
1
+ //#region src/components/card/card.module.css
2
+ var card = "uzi-card-module__card__ZPFTz";
3
+ var interactive = "uzi-card-module__interactive__zlPML";
4
+ var card_module_default = {
5
+ card,
6
+ "tone-default": "uzi-card-module__tone-default__7Ujf9",
7
+ "tone-muted": "uzi-card-module__tone-muted__RQy5B",
8
+ "tone-contrast": "uzi-card-module__tone-contrast__JpFxL",
9
+ interactive,
10
+ "padding-none": "uzi-card-module__padding-none__LXdx-",
11
+ "padding-sm": "uzi-card-module__padding-sm__-Ub1s",
12
+ "padding-md": "uzi-card-module__padding-md__kUf46",
13
+ "padding-lg": "uzi-card-module__padding-lg__a5mWP"
14
+ };
15
+ //#endregion
16
+ exports.card = card;
17
+ exports.default = card_module_default;
18
+ exports.interactive = interactive;
19
+
20
+ //# sourceMappingURL=index9.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index9.cjs","names":[],"sources":["../src/components/card/card.module.css"],"sourcesContent":[".card {\n position: relative;\n overflow: visible;\n border-radius: var(--ts-card-radius, 12px);\n border: 1px solid var(--ts-card-border, var(--border));\n background: var(--ts-card-bg, var(--panel));\n color: var(--ts-card-fg, var(--foreground));\n box-shadow: var(--ts-card-shadow, 0 16px 36px rgba(0, 0, 0, 0.28));\n padding: var(--ts-card-padding, 16px);\n transition:\n transform 140ms ease,\n box-shadow 140ms ease,\n border-color 140ms ease,\n background-color 140ms ease;\n}\n\n.tone-default {\n --ts-card-bg: var(--panel);\n --ts-card-border: var(--border);\n --ts-card-shadow: 0 16px 36px rgba(0, 0, 0, 0.28);\n}\n\n.tone-muted {\n --ts-card-bg: var(--muted);\n --ts-card-border: var(--border);\n --ts-card-shadow: 0 10px 26px rgba(0, 0, 0, 0.22);\n}\n\n.tone-contrast {\n --ts-card-bg: var(--ts-card-contrast-bg, color-mix(in srgb, var(--background) 60%, black));\n --ts-card-border: var(--border);\n --ts-card-shadow: 0 18px 50px rgba(0, 0, 0, 0.32);\n}\n\n.interactive {\n cursor: default;\n}\n\n.interactive:hover {\n transform: translateY(-1px);\n box-shadow: 0 22px 60px rgba(0, 0, 0, 0.32);\n border-color: var(--ts-card-hover-border, color-mix(in srgb, var(--primary) 40%, transparent));\n}\n\n.interactive:focus-within {\n outline: var(--focus-ring);\n outline-offset: var(--focus-ring-offset);\n}\n\n.padding-none { --ts-card-padding: 0; }\n.padding-sm { --ts-card-padding: 10px; }\n.padding-md { --ts-card-padding: 16px; }\n.padding-lg { --ts-card-padding: 20px; }\n"],"mappings":""}
package/dist/index9.js ADDED
@@ -0,0 +1,26 @@
1
+ import { cx } from "./index3.js";
2
+ import card_module_default from "./index8.js";
3
+ import { jsx } from "react/jsx-runtime";
4
+ //#region src/components/card/Card.tsx
5
+ function Card({ as, tone = "default", padding = "md", interactive = false, className, children, ...rest }) {
6
+ const Component = as ?? "div";
7
+ const TONE_CLASS = {
8
+ default: null,
9
+ muted: "tone-muted",
10
+ contrast: "tone-contrast"
11
+ };
12
+ return /* @__PURE__ */ jsx(Component, {
13
+ className: cx(card_module_default.card, TONE_CLASS[tone] ? card_module_default[TONE_CLASS[tone]] : null, card_module_default[{
14
+ none: "padding-none",
15
+ sm: "padding-sm",
16
+ md: "padding-md",
17
+ lg: "padding-lg"
18
+ }[padding]], interactive && card_module_default.interactive, className),
19
+ ...rest,
20
+ children
21
+ });
22
+ }
23
+ //#endregion
24
+ export { Card };
25
+
26
+ //# sourceMappingURL=index9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index9.js","names":[],"sources":["../src/components/card/Card.tsx"],"sourcesContent":["/**\n * Lightweight container component used for panels across the app.\n *\n * @remarks\n * Supports tone variants, padding presets, and an optional interactive affordance.\n *\n * @param props.as - Semantic element to render (defaults to `div`).\n * @param props.tone - Visual tone variant.\n * @param props.padding - Padding preset.\n * @param props.interactive - Enables hover/focus affordance.\n */\nimport type { HTMLAttributes } from \"react\";\nimport { cx } from \"../../utils/cx\";\nimport styles from \"./card.module.css\";\n\nexport type CardTone = \"default\" | \"muted\" | \"contrast\";\nexport type CardPadding = \"none\" | \"sm\" | \"md\" | \"lg\";\n\ntype CardElement = \"div\" | \"section\" | \"article\";\n\nexport type CardProps = HTMLAttributes<HTMLElement> & {\n /** Optional semantic element type. Defaults to `div`. */\n as?: CardElement;\n /** Visual tone; drives background/border CSS vars. */\n tone?: CardTone;\n /** Padding preset; maps to CSS variables so consumers can override globally. */\n padding?: CardPadding;\n /** Adds hover/focus affordance (lift + outline). */\n interactive?: boolean;\n};\n\nexport function Card({\n as,\n tone = \"default\",\n padding = \"md\",\n interactive = false,\n className,\n children,\n ...rest\n}: CardProps) {\n const Component: CardElement = as ?? \"div\";\n const TONE_CLASS: Record<CardTone, string | null> = { default: null, muted: \"tone-muted\", contrast: \"tone-contrast\" };\n const PADDING_CLASS: Record<CardPadding, string> = { none: \"padding-none\", sm: \"padding-sm\", md: \"padding-md\", lg: \"padding-lg\" };\n const classes = cx(\n styles.card,\n TONE_CLASS[tone] ? styles[TONE_CLASS[tone]] : null,\n styles[PADDING_CLASS[padding]],\n interactive && styles.interactive,\n className,\n );\n\n return (\n <Component className={classes} {...rest}>\n {children}\n </Component>\n );\n}\n"],"mappings":";;;;AA+BA,SAAgB,KAAK,EACnB,IACA,OAAO,WACP,UAAU,MACV,cAAc,OACd,WACA,UACA,GAAG,QACS;CACZ,MAAM,YAAyB,MAAM;CACrC,MAAM,aAA8C;EAAE,SAAS;EAAM,OAAO;EAAc,UAAU;CAAgB;CAUpH,OACE,oBAAC,WAAD;EAAW,WATG,GACd,oBAAO,MACP,WAAW,QAAQ,oBAAO,WAAW,SAAS,MAC9C,oBAAO;GAJ4C,MAAM;GAAgB,IAAI;GAAc,IAAI;GAAc,IAAI;EAI1G,EAAc,WACrB,eAAe,oBAAO,aACtB,SAIsB;EAAS,GAAI;EAChC;CACQ,CAAA;AAEf"}