@usevane/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +119 -0
  3. package/dist/components/alert.d.ts +19 -0
  4. package/dist/components/alert.d.ts.map +1 -0
  5. package/dist/components/alert.js +33 -0
  6. package/dist/components/alert.js.map +1 -0
  7. package/dist/components/api-route.d.ts +32 -0
  8. package/dist/components/api-route.d.ts.map +1 -0
  9. package/dist/components/api-route.js +23 -0
  10. package/dist/components/api-route.js.map +1 -0
  11. package/dist/components/badge.d.ts +17 -0
  12. package/dist/components/badge.d.ts.map +1 -0
  13. package/dist/components/badge.js +30 -0
  14. package/dist/components/badge.js.map +1 -0
  15. package/dist/components/button.d.ts +18 -0
  16. package/dist/components/button.d.ts.map +1 -0
  17. package/dist/components/button.js +32 -0
  18. package/dist/components/button.js.map +1 -0
  19. package/dist/components/callout.d.ts +16 -0
  20. package/dist/components/callout.d.ts.map +1 -0
  21. package/dist/components/callout.js +40 -0
  22. package/dist/components/callout.js.map +1 -0
  23. package/dist/components/card.d.ts +22 -0
  24. package/dist/components/card.d.ts.map +1 -0
  25. package/dist/components/card.js +35 -0
  26. package/dist/components/card.js.map +1 -0
  27. package/dist/components/charts.d.ts +65 -0
  28. package/dist/components/charts.d.ts.map +1 -0
  29. package/dist/components/charts.js +56 -0
  30. package/dist/components/charts.js.map +1 -0
  31. package/dist/components/code-block.d.ts +16 -0
  32. package/dist/components/code-block.d.ts.map +1 -0
  33. package/dist/components/code-block.js +14 -0
  34. package/dist/components/code-block.js.map +1 -0
  35. package/dist/components/command-palette.d.ts +23 -0
  36. package/dist/components/command-palette.d.ts.map +1 -0
  37. package/dist/components/command-palette.js +107 -0
  38. package/dist/components/command-palette.js.map +1 -0
  39. package/dist/components/command-provider.d.ts +22 -0
  40. package/dist/components/command-provider.d.ts.map +1 -0
  41. package/dist/components/command-provider.js +42 -0
  42. package/dist/components/command-provider.js.map +1 -0
  43. package/dist/components/confirm-dialog.d.ts +22 -0
  44. package/dist/components/confirm-dialog.d.ts.map +1 -0
  45. package/dist/components/confirm-dialog.js +42 -0
  46. package/dist/components/confirm-dialog.js.map +1 -0
  47. package/dist/components/copy-block.d.ts +17 -0
  48. package/dist/components/copy-block.d.ts.map +1 -0
  49. package/dist/components/copy-block.js +23 -0
  50. package/dist/components/copy-block.js.map +1 -0
  51. package/dist/components/data-module.d.ts +26 -0
  52. package/dist/components/data-module.d.ts.map +1 -0
  53. package/dist/components/data-module.js +46 -0
  54. package/dist/components/data-module.js.map +1 -0
  55. package/dist/components/data-stack.d.ts +23 -0
  56. package/dist/components/data-stack.d.ts.map +1 -0
  57. package/dist/components/data-stack.js +31 -0
  58. package/dist/components/data-stack.js.map +1 -0
  59. package/dist/components/data-table.d.ts +15 -0
  60. package/dist/components/data-table.d.ts.map +1 -0
  61. package/dist/components/data-table.js +22 -0
  62. package/dist/components/data-table.js.map +1 -0
  63. package/dist/components/doc-heading.d.ts +14 -0
  64. package/dist/components/doc-heading.d.ts.map +1 -0
  65. package/dist/components/doc-heading.js +28 -0
  66. package/dist/components/doc-heading.js.map +1 -0
  67. package/dist/components/empty-state.d.ts +16 -0
  68. package/dist/components/empty-state.d.ts.map +1 -0
  69. package/dist/components/empty-state.js +11 -0
  70. package/dist/components/empty-state.js.map +1 -0
  71. package/dist/components/error-page.d.ts +27 -0
  72. package/dist/components/error-page.d.ts.map +1 -0
  73. package/dist/components/error-page.js +16 -0
  74. package/dist/components/error-page.js.map +1 -0
  75. package/dist/components/form-field.d.ts +23 -0
  76. package/dist/components/form-field.d.ts.map +1 -0
  77. package/dist/components/form-field.js +23 -0
  78. package/dist/components/form-field.js.map +1 -0
  79. package/dist/components/grid.d.ts +16 -0
  80. package/dist/components/grid.d.ts.map +1 -0
  81. package/dist/components/grid.js +22 -0
  82. package/dist/components/grid.js.map +1 -0
  83. package/dist/components/heading.d.ts +15 -0
  84. package/dist/components/heading.d.ts.map +1 -0
  85. package/dist/components/heading.js +21 -0
  86. package/dist/components/heading.js.map +1 -0
  87. package/dist/components/input.d.ts +16 -0
  88. package/dist/components/input.d.ts.map +1 -0
  89. package/dist/components/input.js +23 -0
  90. package/dist/components/input.js.map +1 -0
  91. package/dist/components/kbd.d.ts +14 -0
  92. package/dist/components/kbd.d.ts.map +1 -0
  93. package/dist/components/kbd.js +11 -0
  94. package/dist/components/kbd.js.map +1 -0
  95. package/dist/components/label.d.ts +11 -0
  96. package/dist/components/label.d.ts.map +1 -0
  97. package/dist/components/label.js +12 -0
  98. package/dist/components/label.js.map +1 -0
  99. package/dist/components/mobile-menu.d.ts +14 -0
  100. package/dist/components/mobile-menu.d.ts.map +1 -0
  101. package/dist/components/mobile-menu.js +15 -0
  102. package/dist/components/mobile-menu.js.map +1 -0
  103. package/dist/components/modal.d.ts +20 -0
  104. package/dist/components/modal.d.ts.map +1 -0
  105. package/dist/components/modal.js +62 -0
  106. package/dist/components/modal.js.map +1 -0
  107. package/dist/components/nav-link.d.ts +16 -0
  108. package/dist/components/nav-link.d.ts.map +1 -0
  109. package/dist/components/nav-link.js +13 -0
  110. package/dist/components/nav-link.js.map +1 -0
  111. package/dist/components/page-header.d.ts +18 -0
  112. package/dist/components/page-header.d.ts.map +1 -0
  113. package/dist/components/page-header.js +11 -0
  114. package/dist/components/page-header.js.map +1 -0
  115. package/dist/components/select.d.ts +16 -0
  116. package/dist/components/select.d.ts.map +1 -0
  117. package/dist/components/select.js +23 -0
  118. package/dist/components/select.js.map +1 -0
  119. package/dist/components/separator.d.ts +16 -0
  120. package/dist/components/separator.d.ts.map +1 -0
  121. package/dist/components/separator.js +11 -0
  122. package/dist/components/separator.js.map +1 -0
  123. package/dist/components/sidebar.d.ts +20 -0
  124. package/dist/components/sidebar.d.ts.map +1 -0
  125. package/dist/components/sidebar.js +16 -0
  126. package/dist/components/sidebar.js.map +1 -0
  127. package/dist/components/sign-out-button.d.ts +15 -0
  128. package/dist/components/sign-out-button.d.ts.map +1 -0
  129. package/dist/components/sign-out-button.js +14 -0
  130. package/dist/components/sign-out-button.js.map +1 -0
  131. package/dist/components/skeleton.d.ts +11 -0
  132. package/dist/components/skeleton.d.ts.map +1 -0
  133. package/dist/components/skeleton.js +12 -0
  134. package/dist/components/skeleton.js.map +1 -0
  135. package/dist/components/spacer.d.ts +14 -0
  136. package/dist/components/spacer.d.ts.map +1 -0
  137. package/dist/components/spacer.js +18 -0
  138. package/dist/components/spacer.js.map +1 -0
  139. package/dist/components/stack.d.ts +20 -0
  140. package/dist/components/stack.d.ts.map +1 -0
  141. package/dist/components/stack.js +14 -0
  142. package/dist/components/stack.js.map +1 -0
  143. package/dist/components/status-badge.d.ts +17 -0
  144. package/dist/components/status-badge.d.ts.map +1 -0
  145. package/dist/components/status-badge.js +27 -0
  146. package/dist/components/status-badge.js.map +1 -0
  147. package/dist/components/tabs.d.ts +18 -0
  148. package/dist/components/tabs.d.ts.map +1 -0
  149. package/dist/components/tabs.js +12 -0
  150. package/dist/components/tabs.js.map +1 -0
  151. package/dist/components/textarea.d.ts +16 -0
  152. package/dist/components/textarea.d.ts.map +1 -0
  153. package/dist/components/textarea.js +23 -0
  154. package/dist/components/textarea.js.map +1 -0
  155. package/dist/components/toast.d.ts +36 -0
  156. package/dist/components/toast.d.ts.map +1 -0
  157. package/dist/components/toast.js +47 -0
  158. package/dist/components/toast.js.map +1 -0
  159. package/dist/components/top-bar.d.ts +18 -0
  160. package/dist/components/top-bar.d.ts.map +1 -0
  161. package/dist/components/top-bar.js +11 -0
  162. package/dist/components/top-bar.js.map +1 -0
  163. package/dist/index.d.ts +83 -0
  164. package/dist/index.d.ts.map +1 -0
  165. package/dist/index.js +61 -0
  166. package/dist/index.js.map +1 -0
  167. package/dist/lib/utils.d.ts +7 -0
  168. package/dist/lib/utils.d.ts.map +1 -0
  169. package/dist/lib/utils.js +8 -0
  170. package/dist/lib/utils.js.map +1 -0
  171. package/package.json +46 -0
  172. package/src/theme.css +78 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-stack.js","sourceRoot":"","sources":["../../src/components/data-stack.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAYjC,MAAM,aAAa,GAAG;IACpB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,eAAe;IACzB,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,YAAY;CACX,CAAA;AAEV,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAChC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClD,cACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,OAAO,gBACD,iBAAiB,EAC5B,SAAS,EAAE,EAAE,CACX,6CAA6C,EAC7C,MAAM;QACJ,CAAC,CAAC,mDAAmD;QACrD,CAAC,CAAC,iEAAiE,EACrE,SAAS,CACV,KACG,KAAK,YAER,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;QACtC,IAAI,KAAK,CAAC,cAAc,CAA6C,KAAK,CAAC,EAAE,CAAC;YAC5E,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAyD,CAAC,CAAA;QAC9G,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,GACE,CACP,CACF,CAAA;AACD,SAAS,CAAC,WAAW,GAAG,WAAW,CAAA;AAEnC,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAGpC,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;IACvD,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAEjE,OAAO,CACL,eAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,KAAK,aAC5B,eAAM,SAAS,EAAC,qFAAqF,YAClG,KAAK,GACD,EACP,eAAM,SAAS,EAAE,EAAE,CAAC,qDAAqD,EAAE,UAAU,CAAC,YACnF,QAAQ,GACJ,IACH,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AACF,aAAa,CAAC,WAAW,GAAG,eAAe,CAAA;AAE3C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @file packages/ui/src/components/data-table.tsx
3
+ * @description Moe-Brutalist data table — hard header border, mono text, overflow-x on mobile.
4
+ * Composes the raw table pattern used across the platform into a proper component.
5
+ */
6
+ import * as React from 'react';
7
+ type DataTableProps = React.TableHTMLAttributes<HTMLTableElement>;
8
+ declare const DataTable: React.ForwardRefExoticComponent<DataTableProps & React.RefAttributes<HTMLTableElement>>;
9
+ declare const DataTableHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableSectionElement> & React.RefAttributes<HTMLTableSectionElement>>;
10
+ declare const DataTableBody: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableSectionElement> & React.RefAttributes<HTMLTableSectionElement>>;
11
+ declare const DataTableRow: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableRowElement> & React.RefAttributes<HTMLTableRowElement>>;
12
+ declare const DataTableHead: React.ForwardRefExoticComponent<React.ThHTMLAttributes<HTMLTableCellElement> & React.RefAttributes<HTMLTableCellElement>>;
13
+ declare const DataTableCell: React.ForwardRefExoticComponent<React.TdHTMLAttributes<HTMLTableCellElement> & React.RefAttributes<HTMLTableCellElement>>;
14
+ export { DataTable, DataTableHeader, DataTableBody, DataTableRow, DataTableHead, DataTableCell, };
15
+ //# sourceMappingURL=data-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.d.ts","sourceRoot":"","sources":["../../src/components/data-table.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,cAAc,GAAG,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;AAEjE,QAAA,MAAM,SAAS,yFAUd,CAAA;AAGD,QAAA,MAAM,eAAe,+HAKnB,CAAA;AAGF,QAAA,MAAM,aAAa,+HAKjB,CAAA;AAGF,QAAA,MAAM,YAAY,uHAKhB,CAAA;AAGF,QAAA,MAAM,aAAa,2HAajB,CAAA;AAGF,QAAA,MAAM,aAAa,2HAKjB,CAAA;AAGF,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,GACd,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @file packages/ui/src/components/data-table.tsx
4
+ * @description Moe-Brutalist data table — hard header border, mono text, overflow-x on mobile.
5
+ * Composes the raw table pattern used across the platform into a proper component.
6
+ */
7
+ import * as React from 'react';
8
+ import { cn } from '../lib/utils';
9
+ const DataTable = React.forwardRef(({ className, ...props }, ref) => (_jsx("div", { className: "overflow-x-auto", children: _jsx("table", { className: cn('w-full border-collapse font-mono text-sm', className), ref: ref, ...props }) })));
10
+ DataTable.displayName = 'DataTable';
11
+ const DataTableHeader = React.forwardRef(({ className, ...props }, ref) => (_jsx("thead", { className: cn('', className), ref: ref, ...props })));
12
+ DataTableHeader.displayName = 'DataTableHeader';
13
+ const DataTableBody = React.forwardRef(({ className, ...props }, ref) => (_jsx("tbody", { className: cn('', className), ref: ref, ...props })));
14
+ DataTableBody.displayName = 'DataTableBody';
15
+ const DataTableRow = React.forwardRef(({ className, ...props }, ref) => (_jsx("tr", { className: cn('border-b border-white/10', className), ref: ref, ...props })));
16
+ DataTableRow.displayName = 'DataTableRow';
17
+ const DataTableHead = React.forwardRef(({ className, ...props }, ref) => (_jsx("th", { scope: "col", className: cn('border-b-2 border-white pb-2 pr-4 text-left text-[11px] font-normal uppercase tracking-widest text-secondary', className), ref: ref, ...props })));
18
+ DataTableHead.displayName = 'DataTableHead';
19
+ const DataTableCell = React.forwardRef(({ className, ...props }, ref) => (_jsx("td", { className: cn('py-2 pr-4 text-white', className), ref: ref, ...props })));
20
+ DataTableCell.displayName = 'DataTableCell';
21
+ export { DataTable, DataTableHeader, DataTableBody, DataTableRow, DataTableHead, DataTableCell, };
22
+ //# sourceMappingURL=data-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.js","sourceRoot":"","sources":["../../src/components/data-table.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAIjC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAChC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,cAAK,SAAS,EAAC,iBAAiB,YAC9B,gBACE,SAAS,EAAE,EAAE,CAAC,0CAA0C,EAAE,SAAS,CAAC,EACpE,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,GACE,CACP,CACF,CAAA;AACD,SAAS,CAAC,WAAW,GAAG,WAAW,CAAA;AAEnC,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CAGtC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClC,gBAAO,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,KAAM,KAAK,GAAI,CAC7D,CAAC,CAAA;AACF,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAA;AAE/C,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAGpC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClC,gBAAO,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,KAAM,KAAK,GAAI,CAC7D,CAAC,CAAA;AACF,aAAa,CAAC,WAAW,GAAG,eAAe,CAAA;AAE3C,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAGnC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClC,aAAI,SAAS,EAAE,EAAE,CAAC,0BAA0B,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,KAAM,KAAK,GAAI,CAClF,CAAC,CAAA;AACF,YAAY,CAAC,WAAW,GAAG,cAAc,CAAA;AAEzC,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAGpC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClC,aACE,KAAK,EAAC,KAAK,EACX,SAAS,EAAE,EAAE,CACX,8GAA8G,EAC9G,SAAS,CACV,EACD,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CAAC,CAAA;AACF,aAAa,CAAC,WAAW,GAAG,eAAe,CAAA;AAE3C,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAGpC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAClC,aAAI,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,KAAM,KAAK,GAAI,CAC9E,CAAC,CAAA;AACF,aAAa,CAAC,WAAW,GAAG,eAAe,CAAA;AAE3C,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,GACd,CAAA"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @file packages/ui/src/components/doc-heading.tsx
3
+ * @description Moe-Brutalist documentation headings — Syne display for H1/H2, mono for H3/H4.
4
+ * Each heading gets an auto-generated anchor for deep linking.
5
+ */
6
+ import * as React from 'react';
7
+ type DocHeadingProps = React.HTMLAttributes<HTMLHeadingElement>;
8
+ declare const DocH1: React.ForwardRefExoticComponent<DocHeadingProps & React.RefAttributes<HTMLHeadingElement>>;
9
+ declare const DocH2: React.ForwardRefExoticComponent<DocHeadingProps & React.RefAttributes<HTMLHeadingElement>>;
10
+ declare const DocH3: React.ForwardRefExoticComponent<DocHeadingProps & React.RefAttributes<HTMLHeadingElement>>;
11
+ declare const DocH4: React.ForwardRefExoticComponent<DocHeadingProps & React.RefAttributes<HTMLHeadingElement>>;
12
+ export { DocH1, DocH2, DocH3, DocH4 };
13
+ export type { DocHeadingProps };
14
+ //# sourceMappingURL=doc-heading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-heading.d.ts","sourceRoot":"","sources":["../../src/components/doc-heading.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAM9B,KAAK,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAA;AAE/D,QAAA,MAAM,KAAK,4FAcV,CAAA;AAGD,QAAA,MAAM,KAAK,4FAiBV,CAAA;AAGD,QAAA,MAAM,KAAK,4FAcV,CAAA;AAGD,QAAA,MAAM,KAAK,4FAUV,CAAA;AAGD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;AACrC,YAAY,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @file packages/ui/src/components/doc-heading.tsx
4
+ * @description Moe-Brutalist documentation headings — Syne display for H1/H2, mono for H3/H4.
5
+ * Each heading gets an auto-generated anchor for deep linking.
6
+ */
7
+ import * as React from 'react';
8
+ import { cn } from '../lib/utils';
9
+ const slugify = (text) => text.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)/g, '');
10
+ const DocH1 = React.forwardRef(({ className, children, ...props }, ref) => {
11
+ const slug = typeof children === 'string' ? slugify(children) : undefined;
12
+ return (_jsx("h1", { id: slug, className: cn('mt-12 mb-4 font-display text-5xl font-bold uppercase text-white', className), ref: ref, ...props, children: children }));
13
+ });
14
+ DocH1.displayName = 'DocH1';
15
+ const DocH2 = React.forwardRef(({ className, children, ...props }, ref) => {
16
+ const slug = typeof children === 'string' ? slugify(children) : undefined;
17
+ return (_jsx("h2", { id: slug, className: cn('mt-10 mb-3 border-b-2 border-white/20 pb-2 font-display text-2xl font-bold uppercase text-white', className), ref: ref, ...props, children: children }));
18
+ });
19
+ DocH2.displayName = 'DocH2';
20
+ const DocH3 = React.forwardRef(({ className, children, ...props }, ref) => {
21
+ const slug = typeof children === 'string' ? slugify(children) : undefined;
22
+ return (_jsx("h3", { id: slug, className: cn('mt-8 mb-2 font-mono text-lg font-bold text-pink', className), ref: ref, ...props, children: children }));
23
+ });
24
+ DocH3.displayName = 'DocH3';
25
+ const DocH4 = React.forwardRef(({ className, children, ...props }, ref) => (_jsx("h4", { className: cn('mt-6 mb-2 font-mono text-sm font-bold uppercase tracking-widest text-secondary', className), ref: ref, ...props, children: children })));
26
+ DocH4.displayName = 'DocH4';
27
+ export { DocH1, DocH2, DocH3, DocH4 };
28
+ //# sourceMappingURL=doc-heading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc-heading.js","sourceRoot":"","sources":["../../src/components/doc-heading.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CACvC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AAIxE,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACzC,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACzE,OAAO,CACL,aACE,EAAE,EAAE,IAAI,EACR,SAAS,EAAE,EAAE,CAAC,iEAAiE,EAAE,SAAS,CAAC,EAC3F,GAAG,EAAE,GAAG,KACJ,KAAK,YAER,QAAQ,GACN,CACN,CAAA;AACH,CAAC,CACF,CAAA;AACD,KAAK,CAAC,WAAW,GAAG,OAAO,CAAA;AAE3B,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACzC,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACzE,OAAO,CACL,aACE,EAAE,EAAE,IAAI,EACR,SAAS,EAAE,EAAE,CACX,iGAAiG,EACjG,SAAS,CACV,EACD,GAAG,EAAE,GAAG,KACJ,KAAK,YAER,QAAQ,GACN,CACN,CAAA;AACH,CAAC,CACF,CAAA;AACD,KAAK,CAAC,WAAW,GAAG,OAAO,CAAA;AAE3B,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACzC,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACzE,OAAO,CACL,aACE,EAAE,EAAE,IAAI,EACR,SAAS,EAAE,EAAE,CAAC,iDAAiD,EAAE,SAAS,CAAC,EAC3E,GAAG,EAAE,GAAG,KACJ,KAAK,YAER,QAAQ,GACN,CACN,CAAA;AACH,CAAC,CACF,CAAA;AACD,KAAK,CAAC,WAAW,GAAG,OAAO,CAAA;AAE3B,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC1C,aACE,SAAS,EAAE,EAAE,CAAC,gFAAgF,EAAE,SAAS,CAAC,EAC1G,GAAG,EAAE,GAAG,KACJ,KAAK,YAER,QAAQ,GACN,CACN,CACF,CAAA;AACD,KAAK,CAAC,WAAW,GAAG,OAAO,CAAA;AAE3B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @file packages/ui/src/components/empty-state.tsx
3
+ * @description Moe-Brutalist empty state — "no data yet" placeholder.
4
+ */
5
+ import * as React from 'react';
6
+ type EmptyStateProps = React.HTMLAttributes<HTMLDivElement> & {
7
+ message: string;
8
+ action?: React.ReactNode;
9
+ };
10
+ declare const EmptyState: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
11
+ message: string;
12
+ action?: React.ReactNode;
13
+ } & React.RefAttributes<HTMLDivElement>>;
14
+ export { EmptyState };
15
+ export type { EmptyStateProps };
16
+ //# sourceMappingURL=empty-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-state.d.ts","sourceRoot":"","sources":["../../src/components/empty-state.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IAC5D,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB,CAAA;AAED,QAAA,MAAM,UAAU;aAJL,MAAM;aACN,KAAK,CAAC,SAAS;wCAiBzB,CAAA;AAGD,OAAO,EAAE,UAAU,EAAE,CAAA;AACrB,YAAY,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @file packages/ui/src/components/empty-state.tsx
4
+ * @description Moe-Brutalist empty state — "no data yet" placeholder.
5
+ */
6
+ import * as React from 'react';
7
+ import { cn } from '../lib/utils';
8
+ const EmptyState = React.forwardRef(({ className, message, action, ...props }, ref) => (_jsxs("div", { className: cn('rounded-none border-2 border-white/20 bg-surface p-8 text-center', className), ref: ref, ...props, children: [_jsx("p", { className: "font-mono text-sm text-secondary", children: message }), action ? _jsx("div", { className: "mt-4", children: action }) : null] })));
9
+ EmptyState.displayName = 'EmptyState';
10
+ export { EmptyState };
11
+ //# sourceMappingURL=empty-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-state.js","sourceRoot":"","sources":["../../src/components/empty-state.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAOjC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CACjC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACjD,eACE,SAAS,EAAE,EAAE,CACX,kEAAkE,EAClE,SAAS,CACV,EACD,GAAG,EAAE,GAAG,KACJ,KAAK,aAET,YAAG,SAAS,EAAC,kCAAkC,YAAE,OAAO,GAAK,EAC5D,MAAM,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,MAAM,YAAE,MAAM,GAAO,CAAC,CAAC,CAAC,IAAI,IACjD,CACP,CACF,CAAA;AACD,UAAU,CAAC,WAAW,GAAG,YAAY,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @file packages/ui/src/components/error-page.tsx
3
+ * @description Moe-Brutalist error pages — 404 and 500. Shared across all Vane sites.
4
+ * Hard borders, monospace, void background. The error IS the content.
5
+ */
6
+ import * as React from 'react';
7
+ type ErrorPageProps = React.HTMLAttributes<HTMLDivElement> & {
8
+ code: string;
9
+ title: string;
10
+ message: string;
11
+ action?: React.ReactNode;
12
+ };
13
+ declare const ErrorPage: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
14
+ code: string;
15
+ title: string;
16
+ message: string;
17
+ action?: React.ReactNode;
18
+ } & React.RefAttributes<HTMLDivElement>>;
19
+ declare const NotFoundPage: React.ForwardRefExoticComponent<Omit<ErrorPageProps, "title" | "code" | "message"> & {
20
+ message?: string;
21
+ } & React.RefAttributes<HTMLDivElement>>;
22
+ declare const ServerErrorPage: React.ForwardRefExoticComponent<Omit<ErrorPageProps, "title" | "code" | "message"> & {
23
+ message?: string;
24
+ } & React.RefAttributes<HTMLDivElement>>;
25
+ export { ErrorPage, NotFoundPage, ServerErrorPage };
26
+ export type { ErrorPageProps };
27
+ //# sourceMappingURL=error-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-page.d.ts","sourceRoot":"","sources":["../../src/components/error-page.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IAC3D,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB,CAAA;AAED,QAAA,MAAM,SAAS;UANP,MAAM;WACL,MAAM;aACJ,MAAM;aACN,KAAK,CAAC,SAAS;wCAsBzB,CAAA;AAGD,QAAA,MAAM,YAAY;cAAqG,MAAM;wCAU5H,CAAA;AAGD,QAAA,MAAM,eAAe;cAAqG,MAAM;wCAU/H,CAAA;AAGD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,CAAA;AACnD,YAAY,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @file packages/ui/src/components/error-page.tsx
4
+ * @description Moe-Brutalist error pages — 404 and 500. Shared across all Vane sites.
5
+ * Hard borders, monospace, void background. The error IS the content.
6
+ */
7
+ import * as React from 'react';
8
+ import { cn } from '../lib/utils';
9
+ const ErrorPage = React.forwardRef(({ className, code, title, message, action, ...props }, ref) => (_jsxs("div", { className: cn('flex min-h-screen flex-col items-center justify-center px-6', className), ref: ref, ...props, children: [_jsx("span", { className: "font-mono text-[120px] font-bold leading-none text-white/10 md:text-[200px]", children: code }), _jsx("h1", { className: "mt-4 font-display text-3xl font-bold uppercase text-white md:text-5xl", children: title }), _jsx("p", { className: "mt-3 max-w-md text-center font-mono text-sm text-secondary", children: message }), action ? _jsx("div", { className: "mt-8", children: action }) : null] })));
10
+ ErrorPage.displayName = 'ErrorPage';
11
+ const NotFoundPage = React.forwardRef(({ message = 'The page you are looking for does not exist or has been moved.', ...props }, ref) => (_jsx(ErrorPage, { code: "404", title: "NOT FOUND", message: message, ref: ref, ...props })));
12
+ NotFoundPage.displayName = 'NotFoundPage';
13
+ const ServerErrorPage = React.forwardRef(({ message = 'Something went wrong on our end. Please try again.', ...props }, ref) => (_jsx(ErrorPage, { code: "500", title: "SERVER ERROR", message: message, ref: ref, ...props })));
14
+ ServerErrorPage.displayName = 'ServerErrorPage';
15
+ export { ErrorPage, NotFoundPage, ServerErrorPage };
16
+ //# sourceMappingURL=error-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-page.js","sourceRoot":"","sources":["../../src/components/error-page.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AASjC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAChC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC9D,eACE,SAAS,EAAE,EAAE,CAAC,6DAA6D,EAAE,SAAS,CAAC,EACvF,GAAG,EAAE,GAAG,KACJ,KAAK,aAET,eAAM,SAAS,EAAC,6EAA6E,YAC1F,IAAI,GACA,EACP,aAAI,SAAS,EAAC,uEAAuE,YAClF,KAAK,GACH,EACL,YAAG,SAAS,EAAC,4DAA4D,YACtE,OAAO,GACN,EACH,MAAM,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,MAAM,YAAE,MAAM,GAAO,CAAC,CAAC,CAAC,IAAI,IACjD,CACP,CACF,CAAA;AACD,SAAS,CAAC,WAAW,GAAG,WAAW,CAAA;AAEnC,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CACnC,CAAC,EAAE,OAAO,GAAG,gEAAgE,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACjG,KAAC,SAAS,IACR,IAAI,EAAC,KAAK,EACV,KAAK,EAAC,WAAW,EACjB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CACF,CAAA;AACD,YAAY,CAAC,WAAW,GAAG,cAAc,CAAA;AAEzC,MAAM,eAAe,GAAG,KAAK,CAAC,UAAU,CACtC,CAAC,EAAE,OAAO,GAAG,oDAAoD,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACrF,KAAC,SAAS,IACR,IAAI,EAAC,KAAK,EACV,KAAK,EAAC,cAAc,EACpB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CACF,CAAA;AACD,eAAe,CAAC,WAAW,GAAG,iBAAiB,CAAA;AAE/C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @file packages/ui/src/components/form-field.tsx
3
+ * @description Moe-Brutalist form field — composes Label + input slot + error message.
4
+ * Wraps the label-input-error pattern with proper ARIA associations.
5
+ */
6
+ import * as React from 'react';
7
+ type FormFieldProps = React.HTMLAttributes<HTMLDivElement> & {
8
+ label: string;
9
+ error?: string;
10
+ helpText?: string;
11
+ required?: boolean;
12
+ htmlFor?: string;
13
+ };
14
+ declare const FormField: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
15
+ label: string;
16
+ error?: string;
17
+ helpText?: string;
18
+ required?: boolean;
19
+ htmlFor?: string;
20
+ } & React.RefAttributes<HTMLDivElement>>;
21
+ export { FormField };
22
+ export type { FormFieldProps };
23
+ //# sourceMappingURL=form-field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-field.d.ts","sourceRoot":"","sources":["../../src/components/form-field.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IAC3D,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,QAAA,MAAM,SAAS;WAPN,MAAM;YACL,MAAM;eACH,MAAM;eACN,OAAO;cACR,MAAM;wCAkDjB,CAAA;AAGD,OAAO,EAAE,SAAS,EAAE,CAAA;AACpB,YAAY,EAAE,cAAc,EAAE,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @file packages/ui/src/components/form-field.tsx
4
+ * @description Moe-Brutalist form field — composes Label + input slot + error message.
5
+ * Wraps the label-input-error pattern with proper ARIA associations.
6
+ */
7
+ import * as React from 'react';
8
+ import { cn } from '../lib/utils';
9
+ const FormField = React.forwardRef(({ className, label, error, helpText, required, htmlFor, children, ...props }, ref) => {
10
+ const helpId = helpText && htmlFor ? `${htmlFor}-help` : undefined;
11
+ const errorId = error && htmlFor ? `${htmlFor}-error` : undefined;
12
+ return (_jsxs("div", { className: cn('flex flex-col', className), ref: ref, ...props, children: [_jsxs("label", { htmlFor: htmlFor, className: "block font-mono text-[11px] uppercase tracking-widest text-secondary leading-4 mb-2", children: [label, required && (_jsx("span", { className: "text-threat ml-1", "aria-hidden": "true", children: "*" }))] }), React.isValidElement(children)
13
+ ? React.cloneElement(children, {
14
+ 'aria-required': required || undefined,
15
+ 'aria-invalid': !!error || undefined,
16
+ 'aria-describedby': [helpId, errorId].filter(Boolean).join(' ') || undefined,
17
+ 'aria-errormessage': errorId,
18
+ })
19
+ : children, helpText && !error && (_jsx("span", { id: helpId, className: "mt-1 font-mono text-xs leading-5 text-secondary", children: helpText })), error && (_jsx("span", { id: errorId, role: "alert", className: "mt-1 font-mono text-xs leading-5 text-threat", children: error }))] }));
20
+ });
21
+ FormField.displayName = 'FormField';
22
+ export { FormField };
23
+ //# sourceMappingURL=form-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-field.js","sourceRoot":"","sources":["../../src/components/form-field.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAUjC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAChC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACpF,MAAM,MAAM,GAAG,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;IAClE,MAAM,OAAO,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAA;IAEjE,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,KAAM,KAAK,aACjE,iBACE,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,qFAAqF,aAE9F,KAAK,EACL,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,kBAAkB,iBAAa,MAAM,kBAE9C,CACR,IACK,EACP,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC;gBAC7B,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,QAAuD,EAAE;oBAC1E,eAAe,EAAE,QAAQ,IAAI,SAAS;oBACtC,cAAc,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS;oBACpC,kBAAkB,EAChB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS;oBAC1D,mBAAmB,EAAE,OAAO;iBAC7B,CAAC;gBACJ,CAAC,CAAC,QAAQ,EACX,QAAQ,IAAI,CAAC,KAAK,IAAI,CACrB,eACE,EAAE,EAAE,MAAM,EACV,SAAS,EAAC,iDAAiD,YAE1D,QAAQ,GACJ,CACR,EACA,KAAK,IAAI,CACR,eACE,EAAE,EAAE,OAAO,EACX,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,8CAA8C,YAEvD,KAAK,GACD,CACR,IACG,CACP,CAAA;AACH,CAAC,CACF,CAAA;AACD,SAAS,CAAC,WAAW,GAAG,WAAW,CAAA;AAEnC,OAAO,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @file packages/ui/src/components/grid.tsx
3
+ * @description Moe-Brutalist grid — responsive layout that collapses to single column on mobile.
4
+ */
5
+ import * as React from 'react';
6
+ type GridProps = React.HTMLAttributes<HTMLDivElement> & {
7
+ cols?: 1 | 2 | 3 | 4;
8
+ gap?: 'sm' | 'md' | 'lg';
9
+ };
10
+ declare const Grid: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & {
11
+ cols?: 1 | 2 | 3 | 4;
12
+ gap?: "sm" | "md" | "lg";
13
+ } & React.RefAttributes<HTMLDivElement>>;
14
+ export { Grid };
15
+ export type { GridProps };
16
+ //# sourceMappingURL=grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../src/components/grid.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IACtD,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACpB,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;CACzB,CAAA;AAeD,QAAA,MAAM,IAAI;WAjBD,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;UACd,IAAI,GAAG,IAAI,GAAG,IAAI;wCAwBzB,CAAA;AAGD,OAAO,EAAE,IAAI,EAAE,CAAA;AACf,YAAY,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @file packages/ui/src/components/grid.tsx
4
+ * @description Moe-Brutalist grid — responsive layout that collapses to single column on mobile.
5
+ */
6
+ import * as React from 'react';
7
+ import { cn } from '../lib/utils';
8
+ const COL_CLASSES = {
9
+ 1: 'grid-cols-1',
10
+ 2: 'grid-cols-1 md:grid-cols-2',
11
+ 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3',
12
+ 4: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4',
13
+ };
14
+ const GAP_CLASSES = {
15
+ sm: 'gap-3',
16
+ md: 'gap-4',
17
+ lg: 'gap-6',
18
+ };
19
+ const Grid = React.forwardRef(({ cols = 1, gap = 'md', className, ...props }, ref) => (_jsx("div", { ref: ref, className: cn('grid', COL_CLASSES[cols], GAP_CLASSES[gap], className), ...props })));
20
+ Grid.displayName = 'Grid';
21
+ export { Grid };
22
+ //# sourceMappingURL=grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.js","sourceRoot":"","sources":["../../src/components/grid.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAOjC,MAAM,WAAW,GAAG;IAClB,CAAC,EAAE,aAAa;IAChB,CAAC,EAAE,4BAA4B;IAC/B,CAAC,EAAE,2CAA2C;IAC9C,CAAC,EAAE,2CAA2C;CACtC,CAAA;AAEV,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,OAAO;IACX,EAAE,EAAE,OAAO;CACH,CAAA;AAEV,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAC3B,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACtD,cACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,KACjE,KAAK,GACT,CACH,CACF,CAAA;AACD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAA;AAEzB,OAAO,EAAE,IAAI,EAAE,CAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @file packages/ui/src/components/heading.tsx
3
+ * @description Moe-Brutalist heading — semantic HTML heading with display font sizing.
4
+ * Renders <h1>-<h4> elements, never styled divs.
5
+ */
6
+ import * as React from 'react';
7
+ type HeadingProps = React.HTMLAttributes<HTMLHeadingElement> & {
8
+ level?: 1 | 2 | 3 | 4;
9
+ };
10
+ declare const Heading: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & {
11
+ level?: 1 | 2 | 3 | 4;
12
+ } & React.RefAttributes<HTMLHeadingElement>>;
13
+ export { Heading };
14
+ export type { HeadingProps };
15
+ //# sourceMappingURL=heading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../src/components/heading.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG;IAC7D,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CACtB,CAAA;AASD,QAAA,MAAM,OAAO;YAVH,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;4CAqBtB,CAAA;AAGD,OAAO,EAAE,OAAO,EAAE,CAAA;AAClB,YAAY,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @file packages/ui/src/components/heading.tsx
4
+ * @description Moe-Brutalist heading — semantic HTML heading with display font sizing.
5
+ * Renders <h1>-<h4> elements, never styled divs.
6
+ */
7
+ import * as React from 'react';
8
+ import { cn } from '../lib/utils';
9
+ const HEADING_STYLES = {
10
+ 1: 'font-display text-4xl font-extrabold uppercase md:text-5xl lg:text-6xl leading-tight',
11
+ 2: 'font-display text-xl font-bold uppercase leading-7',
12
+ 3: 'font-display text-base font-bold uppercase leading-6',
13
+ 4: 'font-mono text-sm font-semibold uppercase tracking-widest leading-5',
14
+ };
15
+ const Heading = React.forwardRef(({ level = 2, className, ...props }, ref) => {
16
+ const Tag = `h${level}`;
17
+ return (_jsx(Tag, { ref: ref, className: cn('text-white', HEADING_STYLES[level], className), ...props }));
18
+ });
19
+ Heading.displayName = 'Heading';
20
+ export { Heading };
21
+ //# sourceMappingURL=heading.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heading.js","sourceRoot":"","sources":["../../src/components/heading.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAMjC,MAAM,cAAc,GAAkC;IACpD,CAAC,EAAE,sFAAsF;IACzF,CAAC,EAAE,oDAAoD;IACvD,CAAC,EAAE,sDAAsD;IACzD,CAAC,EAAE,qEAAqE;CACzE,CAAA;AAED,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAC9B,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAC1C,MAAM,GAAG,GAAG,IAAI,KAAK,EAA+B,CAAA;IACpD,OAAO,CACL,KAAC,GAAG,IACF,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,KACzD,KAAK,GACT,CACH,CAAA;AACH,CAAC,CACF,CAAA;AACD,OAAO,CAAC,WAAW,GAAG,SAAS,CAAA;AAE/B,OAAO,EAAE,OAAO,EAAE,CAAA"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @file packages/ui/src/components/input.tsx
3
+ * @description Moe-Brutalist text input — hard borders, no rounding, surface background.
4
+ */
5
+ import { type VariantProps } from 'class-variance-authority';
6
+ import * as React from 'react';
7
+ declare const inputVariants: (props?: ({
8
+ variant?: "default" | "threat" | null | undefined;
9
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
10
+ type InputProps = React.InputHTMLAttributes<HTMLInputElement> & VariantProps<typeof inputVariants>;
11
+ declare const Input: React.ForwardRefExoticComponent<React.InputHTMLAttributes<HTMLInputElement> & VariantProps<(props?: ({
12
+ variant?: "default" | "threat" | null | undefined;
13
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLInputElement>>;
14
+ export { Input, inputVariants };
15
+ export type { InputProps };
16
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,QAAA,MAAM,aAAa;;8EAalB,CAAA;AAED,KAAK,UAAU,GAAG,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,GAC3D,YAAY,CAAC,OAAO,aAAa,CAAC,CAAA;AAEpC,QAAA,MAAM,KAAK;;wHAQV,CAAA;AAGD,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA;AAC/B,YAAY,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @file packages/ui/src/components/input.tsx
4
+ * @description Moe-Brutalist text input — hard borders, no rounding, surface background.
5
+ */
6
+ import { cva } from 'class-variance-authority';
7
+ import * as React from 'react';
8
+ import { cn } from '../lib/utils';
9
+ const inputVariants = cva('w-full rounded-none border-2 bg-void px-4 py-2 font-mono text-sm leading-5 text-white min-h-11 shadow-hard placeholder:text-secondary/50 focus-visible:outline-none focus-visible:shadow-hard-focus focus-visible:border-cyan disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed disabled:border-secondary', {
10
+ variants: {
11
+ variant: {
12
+ default: 'border-white',
13
+ threat: 'border-threat shadow-hard-threat focus-visible:shadow-hard-threat focus-visible:border-threat',
14
+ },
15
+ },
16
+ defaultVariants: {
17
+ variant: 'default',
18
+ },
19
+ });
20
+ const Input = React.forwardRef(({ className, variant, ...props }, ref) => (_jsx("input", { className: cn(inputVariants({ variant, className })), ref: ref, ...props })));
21
+ Input.displayName = 'Input';
22
+ export { Input, inputVariants };
23
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAEjC,MAAM,aAAa,GAAG,GAAG,CACvB,sUAAsU,EACtU;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,OAAO,EAAE,cAAc;YACvB,MAAM,EAAE,+FAA+F;SACxG;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,SAAS;KACnB;CACF,CACF,CAAA;AAKD,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACzC,gBACE,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,EACpD,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CACF,CAAA;AACD,KAAK,CAAC,WAAW,GAAG,OAAO,CAAA;AAE3B,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @file packages/ui/src/components/kbd.tsx
3
+ * @description Moe-Brutalist keyboard shortcut display — hard-bordered key caps.
4
+ */
5
+ import * as React from 'react';
6
+ type KbdProps = React.HTMLAttributes<HTMLElement> & {
7
+ keys: string[];
8
+ };
9
+ declare const Kbd: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLElement> & {
10
+ keys: string[];
11
+ } & React.RefAttributes<HTMLElement>>;
12
+ export { Kbd };
13
+ export type { KbdProps };
14
+ //# sourceMappingURL=kbd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kbd.d.ts","sourceRoot":"","sources":["../../src/components/kbd.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG;IAClD,IAAI,EAAE,MAAM,EAAE,CAAA;CACf,CAAA;AAED,QAAA,MAAM,GAAG;UAHD,MAAM,EAAE;qCAgBf,CAAA;AAGD,OAAO,EAAE,GAAG,EAAE,CAAA;AACd,YAAY,EAAE,QAAQ,EAAE,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @file packages/ui/src/components/kbd.tsx
4
+ * @description Moe-Brutalist keyboard shortcut display — hard-bordered key caps.
5
+ */
6
+ import * as React from 'react';
7
+ import { cn } from '../lib/utils';
8
+ const Kbd = React.forwardRef(({ className, keys, ...props }, ref) => (_jsx("span", { className: cn('inline-flex items-center gap-0.5', className), ref: ref, ...props, children: keys.map((key, idx) => (_jsx("kbd", { className: "inline-flex h-5 min-w-5 items-center justify-center rounded-none border border-white/30 bg-void px-1 font-mono text-[11px] text-secondary", children: key }, idx))) })));
9
+ Kbd.displayName = 'Kbd';
10
+ export { Kbd };
11
+ //# sourceMappingURL=kbd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kbd.js","sourceRoot":"","sources":["../../src/components/kbd.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAMjC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAC1B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACtC,eAAM,SAAS,EAAE,EAAE,CAAC,kCAAkC,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE,GAAG,KAAM,KAAK,YACpF,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CACtB,cAEE,SAAS,EAAC,2IAA2I,YAEpJ,GAAG,IAHC,GAAG,CAIJ,CACP,CAAC,GACG,CACR,CACF,CAAA;AACD,GAAG,CAAC,WAAW,GAAG,KAAK,CAAA;AAEvB,OAAO,EAAE,GAAG,EAAE,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @file packages/ui/src/components/label.tsx
3
+ * @description Moe-Brutalist label — 11px uppercase mono, secondary color.
4
+ * The most repeated pattern in the platform. Now a component.
5
+ */
6
+ import * as React from 'react';
7
+ type LabelProps = React.LabelHTMLAttributes<HTMLLabelElement>;
8
+ declare const Label: React.ForwardRefExoticComponent<LabelProps & React.RefAttributes<HTMLLabelElement>>;
9
+ export { Label };
10
+ export type { LabelProps };
11
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../src/components/label.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,UAAU,GAAG,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAA;AAE7D,QAAA,MAAM,KAAK,qFAWV,CAAA;AAGD,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,YAAY,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @file packages/ui/src/components/label.tsx
4
+ * @description Moe-Brutalist label — 11px uppercase mono, secondary color.
5
+ * The most repeated pattern in the platform. Now a component.
6
+ */
7
+ import * as React from 'react';
8
+ import { cn } from '../lib/utils';
9
+ const Label = React.forwardRef(({ className, ...props }, ref) => (_jsx("label", { className: cn('block font-mono text-[11px] uppercase tracking-widest text-secondary leading-4 mb-2', className), ref: ref, ...props })));
10
+ Label.displayName = 'Label';
11
+ export { Label };
12
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/components/label.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAIjC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAChC,gBACE,SAAS,EAAE,EAAE,CACX,qFAAqF,EACrF,SAAS,CACV,EACD,GAAG,EAAE,GAAG,KACJ,KAAK,GACT,CACH,CACF,CAAA;AACD,KAAK,CAAC,WAAW,GAAG,OAAO,CAAA;AAE3B,OAAO,EAAE,KAAK,EAAE,CAAA"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @file packages/ui/src/components/mobile-menu.tsx
3
+ * @description Moe-Brutalist mobile menu — hamburger toggle + full-screen overlay.
4
+ * Snap open/close. No slide animation. No fade. Just appears.
5
+ */
6
+ import * as React from 'react';
7
+ type MobileMenuProps = {
8
+ children: React.ReactNode;
9
+ className?: string;
10
+ };
11
+ declare const MobileMenu: ({ children, className }: MobileMenuProps) => import("react/jsx-runtime").JSX.Element;
12
+ export { MobileMenu };
13
+ export type { MobileMenuProps };
14
+ //# sourceMappingURL=mobile-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile-menu.d.ts","sourceRoot":"","sources":["../../src/components/mobile-menu.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,QAAA,MAAM,UAAU,GAAI,yBAAyB,eAAe,4CAsC3D,CAAA;AAED,OAAO,EAAE,UAAU,EAAE,CAAA;AACrB,YAAY,EAAE,eAAe,EAAE,CAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @file packages/ui/src/components/mobile-menu.tsx
3
+ * @description Moe-Brutalist mobile menu — hamburger toggle + full-screen overlay.
4
+ * Snap open/close. No slide animation. No fade. Just appears.
5
+ */
6
+ 'use client';
7
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
8
+ import * as React from 'react';
9
+ import { cn } from '../lib/utils';
10
+ const MobileMenu = ({ children, className }) => {
11
+ const [open, setOpen] = React.useState(false);
12
+ return (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", onClick: () => setOpen((prev) => !prev), className: "flex h-10 w-10 items-center justify-center rounded-none border-2 border-white md:hidden cursor-pointer", "aria-label": open ? 'Close menu' : 'Open menu', children: _jsx("span", { className: "font-mono text-sm text-white", children: open ? 'X' : '=' }) }), open ? (_jsxs("div", { className: cn('fixed inset-0 z-50 flex flex-col bg-void p-6 md:hidden', className), children: [_jsx("div", { className: "flex justify-end", children: _jsx("button", { type: "button", onClick: () => setOpen(false), className: "flex h-10 w-10 items-center justify-center rounded-none border-2 border-white cursor-pointer", "aria-label": "Close menu", children: _jsx("span", { className: "font-mono text-sm text-white", children: "X" }) }) }), _jsx("div", { className: "mt-8 flex flex-1 flex-col gap-4", onClick: () => setOpen(false), children: children })] })) : null] }));
13
+ };
14
+ export { MobileMenu };
15
+ //# sourceMappingURL=mobile-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mobile-menu.js","sourceRoot":"","sources":["../../src/components/mobile-menu.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,CAAA;;AAEZ,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAA;AAOjC,MAAM,UAAU,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAmB,EAAE,EAAE;IAC9D,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE7C,OAAO,CACL,8BACE,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EACvC,SAAS,EAAC,wGAAwG,gBACtG,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,YAE7C,eAAM,SAAS,EAAC,8BAA8B,YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAQ,GACjE,EAER,IAAI,CAAC,CAAC,CAAC,CACN,eACE,SAAS,EAAE,EAAE,CACX,wDAAwD,EACxD,SAAS,CACV,aAED,cAAK,SAAS,EAAC,kBAAkB,YAC/B,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAC7B,SAAS,EAAC,8FAA8F,gBAC7F,YAAY,YAEvB,eAAM,SAAS,EAAC,8BAA8B,kBAAS,GAChD,GACL,EACN,cAAK,SAAS,EAAC,iCAAiC,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,YAC3E,QAAQ,GACL,IACF,CACP,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,CAAA;AACH,CAAC,CAAA;AAED,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @file packages/ui/src/components/modal.tsx
3
+ * @description Moe-Brutalist modal — hard-bordered overlay with focus trap.
4
+ * Full-screen on mobile, centered on desktop. Snap open, no fade.
5
+ */
6
+ import * as React from 'react';
7
+ type ModalProps = {
8
+ open: boolean;
9
+ onClose: () => void;
10
+ title?: string;
11
+ children: React.ReactNode;
12
+ className?: string;
13
+ };
14
+ declare const Modal: {
15
+ ({ open, onClose, title, children, className }: ModalProps): import("react/jsx-runtime").JSX.Element | null;
16
+ displayName: string;
17
+ };
18
+ export { Modal };
19
+ export type { ModalProps };
20
+ //# sourceMappingURL=modal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../src/components/modal.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAID,QAAA,MAAM,KAAK;oDAAmD,UAAU;;CAqFvE,CAAA;AAID,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,YAAY,EAAE,UAAU,EAAE,CAAA"}