@shipfox/react-ui 0.13.0 → 0.15.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 (268) hide show
  1. package/.storybook/preview.tsx +7 -0
  2. package/.turbo/turbo-build.log +7 -7
  3. package/.turbo/turbo-check.log +2 -2
  4. package/.turbo/turbo-type.log +1 -1
  5. package/CHANGELOG.md +16 -0
  6. package/dist/components/avatar/avatar.js +1 -1
  7. package/dist/components/avatar/avatar.js.map +1 -1
  8. package/dist/components/button-group/button-group.d.ts +17 -0
  9. package/dist/components/button-group/button-group.d.ts.map +1 -0
  10. package/dist/components/button-group/button-group.js +74 -0
  11. package/dist/components/button-group/button-group.js.map +1 -0
  12. package/dist/components/button-group/button-group.stories.js +644 -0
  13. package/dist/components/button-group/button-group.stories.js.map +1 -0
  14. package/dist/components/button-group/index.d.ts +2 -0
  15. package/dist/components/button-group/index.d.ts.map +1 -0
  16. package/dist/components/button-group/index.js +3 -0
  17. package/dist/components/button-group/index.js.map +1 -0
  18. package/dist/components/code-block/code-block-footer.d.ts.map +1 -1
  19. package/dist/components/code-block/code-block-footer.js +13 -5
  20. package/dist/components/code-block/code-block-footer.js.map +1 -1
  21. package/dist/components/command/command.d.ts +28 -0
  22. package/dist/components/command/command.d.ts.map +1 -0
  23. package/dist/components/command/command.js +190 -0
  24. package/dist/components/command/command.js.map +1 -0
  25. package/dist/components/command/command.stories.js +228 -0
  26. package/dist/components/command/command.stories.js.map +1 -0
  27. package/dist/components/command/index.d.ts +2 -0
  28. package/dist/components/command/index.d.ts.map +1 -0
  29. package/dist/components/command/index.js +3 -0
  30. package/dist/components/command/index.js.map +1 -0
  31. package/dist/components/confetti/confetti.d.ts +21 -0
  32. package/dist/components/confetti/confetti.d.ts.map +1 -0
  33. package/dist/components/confetti/confetti.js +101 -0
  34. package/dist/components/confetti/confetti.js.map +1 -0
  35. package/dist/components/confetti/confetti.stories.js +41 -0
  36. package/dist/components/confetti/confetti.stories.js.map +1 -0
  37. package/dist/components/confetti/index.d.ts +2 -0
  38. package/dist/components/confetti/index.d.ts.map +1 -0
  39. package/dist/components/confetti/index.js +3 -0
  40. package/dist/components/confetti/index.js.map +1 -0
  41. package/dist/components/dashboard/components/analytics-content.d.ts +2 -0
  42. package/dist/components/dashboard/components/analytics-content.d.ts.map +1 -0
  43. package/dist/components/dashboard/components/analytics-content.js +180 -0
  44. package/dist/components/dashboard/components/analytics-content.js.map +1 -0
  45. package/dist/components/dashboard/components/animated-logo.d.ts +4 -0
  46. package/dist/components/dashboard/components/animated-logo.d.ts.map +1 -0
  47. package/dist/components/dashboard/components/animated-logo.js +23 -0
  48. package/dist/components/dashboard/components/animated-logo.js.map +1 -0
  49. package/dist/components/dashboard/components/complete-setup-button.d.ts +4 -0
  50. package/dist/components/dashboard/components/complete-setup-button.d.ts.map +1 -0
  51. package/dist/components/dashboard/components/complete-setup-button.js +28 -0
  52. package/dist/components/dashboard/components/complete-setup-button.js.map +1 -0
  53. package/dist/components/dashboard/components/jobs-content.d.ts +2 -0
  54. package/dist/components/dashboard/components/jobs-content.d.ts.map +1 -0
  55. package/dist/components/dashboard/components/jobs-content.js +69 -0
  56. package/dist/components/dashboard/components/jobs-content.js.map +1 -0
  57. package/dist/components/dashboard/components/mobile-menu.d.ts +2 -0
  58. package/dist/components/dashboard/components/mobile-menu.d.ts.map +1 -0
  59. package/dist/components/dashboard/components/mobile-menu.js +65 -0
  60. package/dist/components/dashboard/components/mobile-menu.js.map +1 -0
  61. package/dist/components/dashboard/components/organization-selector.d.ts +2 -0
  62. package/dist/components/dashboard/components/organization-selector.d.ts.map +1 -0
  63. package/dist/components/dashboard/components/organization-selector.js +92 -0
  64. package/dist/components/dashboard/components/organization-selector.js.map +1 -0
  65. package/dist/components/dashboard/components/top-menu.d.ts +5 -0
  66. package/dist/components/dashboard/components/top-menu.d.ts.map +1 -0
  67. package/dist/components/dashboard/components/top-menu.js +31 -0
  68. package/dist/components/dashboard/components/top-menu.js.map +1 -0
  69. package/dist/components/dashboard/components/topbar-button.d.ts +7 -0
  70. package/dist/components/dashboard/components/topbar-button.d.ts.map +1 -0
  71. package/dist/components/dashboard/components/topbar-button.js +18 -0
  72. package/dist/components/dashboard/components/topbar-button.js.map +1 -0
  73. package/dist/components/dashboard/components/topbar.d.ts +4 -0
  74. package/dist/components/dashboard/components/topbar.d.ts.map +1 -0
  75. package/dist/components/dashboard/components/topbar.js +62 -0
  76. package/dist/components/dashboard/components/topbar.js.map +1 -0
  77. package/dist/components/dashboard/components/user-profile.d.ts +2 -0
  78. package/dist/components/dashboard/components/user-profile.d.ts.map +1 -0
  79. package/dist/components/dashboard/components/user-profile.js +146 -0
  80. package/dist/components/dashboard/components/user-profile.js.map +1 -0
  81. package/dist/components/dashboard/dashboard.d.ts +2 -0
  82. package/dist/components/dashboard/dashboard.d.ts.map +1 -0
  83. package/dist/components/dashboard/dashboard.js +70 -0
  84. package/dist/components/dashboard/dashboard.js.map +1 -0
  85. package/dist/components/dashboard/dashboard.stories.js +23 -0
  86. package/dist/components/dashboard/dashboard.stories.js.map +1 -0
  87. package/dist/components/dashboard/index.d.ts +2 -0
  88. package/dist/components/dashboard/index.d.ts.map +1 -0
  89. package/dist/components/dashboard/index.js +3 -0
  90. package/dist/components/dashboard/index.js.map +1 -0
  91. package/dist/components/form/form.stories.js +6 -1
  92. package/dist/components/form/form.stories.js.map +1 -1
  93. package/dist/components/icon/icon.d.ts +3 -2
  94. package/dist/components/icon/icon.d.ts.map +1 -1
  95. package/dist/components/icon/icon.js +7 -2
  96. package/dist/components/icon/icon.js.map +1 -1
  97. package/dist/components/index.d.ts +9 -0
  98. package/dist/components/index.d.ts.map +1 -1
  99. package/dist/components/index.js +9 -0
  100. package/dist/components/index.js.map +1 -1
  101. package/dist/components/kbd/index.d.ts +2 -0
  102. package/dist/components/kbd/index.d.ts.map +1 -0
  103. package/dist/components/kbd/index.js +3 -0
  104. package/dist/components/kbd/index.js.map +1 -0
  105. package/dist/components/kbd/kbd.d.ts +7 -0
  106. package/dist/components/kbd/kbd.d.ts.map +1 -0
  107. package/dist/components/kbd/kbd.js +18 -0
  108. package/dist/components/kbd/kbd.js.map +1 -0
  109. package/dist/components/kbd/kbd.stories.js +119 -0
  110. package/dist/components/kbd/kbd.stories.js.map +1 -0
  111. package/dist/components/modal/modal.stories.js +227 -168
  112. package/dist/components/modal/modal.stories.js.map +1 -1
  113. package/dist/components/search/index.d.ts +7 -0
  114. package/dist/components/search/index.d.ts.map +1 -0
  115. package/dist/components/search/index.js +8 -0
  116. package/dist/components/search/index.js.map +1 -0
  117. package/dist/components/search/search-context.d.ts +11 -0
  118. package/dist/components/search/search-context.d.ts.map +1 -0
  119. package/dist/components/search/search-context.js +56 -0
  120. package/dist/components/search/search-context.js.map +1 -0
  121. package/dist/components/search/search-inline.d.ts +9 -0
  122. package/dist/components/search/search-inline.d.ts.map +1 -0
  123. package/dist/components/search/search-inline.js +85 -0
  124. package/dist/components/search/search-inline.js.map +1 -0
  125. package/dist/components/search/search-modal.d.ts +25 -0
  126. package/dist/components/search/search-modal.d.ts.map +1 -0
  127. package/dist/components/search/search-modal.js +162 -0
  128. package/dist/components/search/search-modal.js.map +1 -0
  129. package/dist/components/search/search-trigger.d.ts +9 -0
  130. package/dist/components/search/search-trigger.d.ts.map +1 -0
  131. package/dist/components/search/search-trigger.js +37 -0
  132. package/dist/components/search/search-trigger.js.map +1 -0
  133. package/dist/components/search/search-variants.d.ts +14 -0
  134. package/dist/components/search/search-variants.d.ts.map +1 -0
  135. package/dist/components/search/search-variants.js +90 -0
  136. package/dist/components/search/search-variants.js.map +1 -0
  137. package/dist/components/search/search.d.ts +11 -0
  138. package/dist/components/search/search.d.ts.map +1 -0
  139. package/dist/components/search/search.js +35 -0
  140. package/dist/components/search/search.js.map +1 -0
  141. package/dist/components/search/search.stories.js +630 -0
  142. package/dist/components/search/search.stories.js.map +1 -0
  143. package/dist/components/select/index.d.ts +2 -0
  144. package/dist/components/select/index.d.ts.map +1 -0
  145. package/dist/components/select/index.js +3 -0
  146. package/dist/components/select/index.js.map +1 -0
  147. package/dist/components/select/select.d.ts +25 -0
  148. package/dist/components/select/select.d.ts.map +1 -0
  149. package/dist/components/select/select.js +153 -0
  150. package/dist/components/select/select.js.map +1 -0
  151. package/dist/components/select/select.stories.js +393 -0
  152. package/dist/components/select/select.stories.js.map +1 -0
  153. package/dist/components/shiny-text/index.d.ts +2 -0
  154. package/dist/components/shiny-text/index.d.ts.map +1 -0
  155. package/dist/components/shiny-text/index.js +3 -0
  156. package/dist/components/shiny-text/index.js.map +1 -0
  157. package/dist/components/shiny-text/shiny-text.d.ts +10 -0
  158. package/dist/components/shiny-text/shiny-text.d.ts.map +1 -0
  159. package/dist/components/shiny-text/shiny-text.js +17 -0
  160. package/dist/components/shiny-text/shiny-text.js.map +1 -0
  161. package/dist/components/skeleton/index.d.ts +2 -0
  162. package/dist/components/skeleton/index.d.ts.map +1 -0
  163. package/dist/components/skeleton/index.js +3 -0
  164. package/dist/components/skeleton/index.js.map +1 -0
  165. package/dist/components/skeleton/skeleton.d.ts +5 -0
  166. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  167. package/dist/components/skeleton/skeleton.js +11 -0
  168. package/dist/components/skeleton/skeleton.js.map +1 -0
  169. package/dist/components/skeleton/skeleton.stories.js +345 -0
  170. package/dist/components/skeleton/skeleton.stories.js.map +1 -0
  171. package/dist/components/table/data-table.d.ts +70 -0
  172. package/dist/components/table/data-table.d.ts.map +1 -0
  173. package/dist/components/table/data-table.js +159 -0
  174. package/dist/components/table/data-table.js.map +1 -0
  175. package/dist/components/table/index.d.ts +6 -0
  176. package/dist/components/table/index.d.ts.map +1 -0
  177. package/dist/components/table/index.js +6 -0
  178. package/dist/components/table/index.js.map +1 -0
  179. package/dist/components/table/table-column-header.d.ts +79 -0
  180. package/dist/components/table/table-column-header.d.ts.map +1 -0
  181. package/dist/components/table/table-column-header.js +99 -0
  182. package/dist/components/table/table-column-header.js.map +1 -0
  183. package/dist/components/table/table-pagination.d.ts +53 -0
  184. package/dist/components/table/table-pagination.d.ts.map +1 -0
  185. package/dist/components/table/table-pagination.js +139 -0
  186. package/dist/components/table/table-pagination.js.map +1 -0
  187. package/dist/components/table/table.d.ts +11 -0
  188. package/dist/components/table/table.d.ts.map +1 -0
  189. package/dist/components/table/table.js +64 -0
  190. package/dist/components/table/table.js.map +1 -0
  191. package/dist/components/table/table.stories.columns.d.ts +24 -0
  192. package/dist/components/table/table.stories.columns.d.ts.map +1 -0
  193. package/dist/components/table/table.stories.columns.js +310 -0
  194. package/dist/components/table/table.stories.columns.js.map +1 -0
  195. package/dist/components/table/table.stories.components.d.ts +14 -0
  196. package/dist/components/table/table.stories.components.d.ts.map +1 -0
  197. package/dist/components/table/table.stories.components.js +107 -0
  198. package/dist/components/table/table.stories.components.js.map +1 -0
  199. package/dist/components/table/table.stories.data.d.ts +54 -0
  200. package/dist/components/table/table.stories.data.d.ts.map +1 -0
  201. package/dist/components/table/table.stories.data.js +122 -0
  202. package/dist/components/table/table.stories.data.js.map +1 -0
  203. package/dist/components/table/table.stories.js +302 -0
  204. package/dist/components/table/table.stories.js.map +1 -0
  205. package/dist/index.d.ts +1 -0
  206. package/dist/index.d.ts.map +1 -1
  207. package/dist/index.js +1 -0
  208. package/dist/index.js.map +1 -1
  209. package/dist/styles.css +1 -1
  210. package/index.css +79 -0
  211. package/package.json +6 -2
  212. package/src/components/avatar/avatar.tsx +1 -1
  213. package/src/components/button-group/button-group.stories.tsx +361 -0
  214. package/src/components/button-group/button-group.tsx +111 -0
  215. package/src/components/button-group/index.ts +1 -0
  216. package/src/components/code-block/code-block-footer.tsx +19 -2
  217. package/src/components/command/command.stories.tsx +133 -0
  218. package/src/components/command/command.tsx +265 -0
  219. package/src/components/command/index.ts +1 -0
  220. package/src/components/confetti/confetti.stories.tsx +38 -0
  221. package/src/components/confetti/confetti.tsx +140 -0
  222. package/src/components/confetti/index.ts +1 -0
  223. package/src/components/dashboard/components/analytics-content.tsx +102 -0
  224. package/src/components/dashboard/components/animated-logo.tsx +25 -0
  225. package/src/components/dashboard/components/complete-setup-button.tsx +30 -0
  226. package/src/components/dashboard/components/jobs-content.tsx +51 -0
  227. package/src/components/dashboard/components/mobile-menu.tsx +50 -0
  228. package/src/components/dashboard/components/organization-selector.tsx +51 -0
  229. package/src/components/dashboard/components/top-menu.tsx +26 -0
  230. package/src/components/dashboard/components/topbar-button.tsx +27 -0
  231. package/src/components/dashboard/components/topbar.tsx +40 -0
  232. package/src/components/dashboard/components/user-profile.tsx +90 -0
  233. package/src/components/dashboard/dashboard.stories.tsx +25 -0
  234. package/src/components/dashboard/dashboard.tsx +61 -0
  235. package/src/components/dashboard/index.ts +1 -0
  236. package/src/components/form/form.stories.tsx +5 -0
  237. package/src/components/icon/icon.tsx +7 -3
  238. package/src/components/index.ts +9 -0
  239. package/src/components/kbd/index.ts +1 -0
  240. package/src/components/kbd/kbd.stories.tsx +64 -0
  241. package/src/components/kbd/kbd.tsx +32 -0
  242. package/src/components/modal/modal.stories.tsx +58 -4
  243. package/src/components/search/index.ts +28 -0
  244. package/src/components/search/search-context.tsx +78 -0
  245. package/src/components/search/search-inline.tsx +107 -0
  246. package/src/components/search/search-modal.tsx +198 -0
  247. package/src/components/search/search-trigger.tsx +47 -0
  248. package/src/components/search/search-variants.ts +88 -0
  249. package/src/components/search/search.stories.tsx +392 -0
  250. package/src/components/search/search.tsx +47 -0
  251. package/src/components/select/index.ts +1 -0
  252. package/src/components/select/select.stories.tsx +207 -0
  253. package/src/components/select/select.tsx +220 -0
  254. package/src/components/shiny-text/index.ts +1 -0
  255. package/src/components/shiny-text/shiny-text.tsx +21 -0
  256. package/src/components/skeleton/index.ts +1 -0
  257. package/src/components/skeleton/skeleton.stories.tsx +178 -0
  258. package/src/components/skeleton/skeleton.tsx +14 -0
  259. package/src/components/table/data-table.tsx +254 -0
  260. package/src/components/table/index.ts +5 -0
  261. package/src/components/table/table-column-header.tsx +141 -0
  262. package/src/components/table/table-pagination.tsx +161 -0
  263. package/src/components/table/table.stories.columns.tsx +198 -0
  264. package/src/components/table/table.stories.components.tsx +104 -0
  265. package/src/components/table/table.stories.data.ts +117 -0
  266. package/src/components/table/table.stories.tsx +256 -0
  267. package/src/components/table/table.tsx +95 -0
  268. package/src/index.ts +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topbar-button.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/components/topbar-button.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAGpD,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,IAAI,EACJ,KAAK,GACN,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,2CAcA"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Button } from '../../../components/button/index.js';
3
+ import { Icon } from '../../../components/icon/index.js';
4
+ import { cn } from '../../../utils/cn.js';
5
+ export function TopbarButton({ className, icon, label }) {
6
+ return /*#__PURE__*/ _jsx(Button, {
7
+ type: "button",
8
+ variant: "transparent",
9
+ className: cn('flex items-center justify-center overflow-hidden shrink-0 w-40 h-40 bg-background-subtle-base hover:bg-background-neutral-hover transition-colors rounded-none border-l border-border-neutral-strong', className),
10
+ "aria-label": label ?? undefined,
11
+ children: /*#__PURE__*/ _jsx(Icon, {
12
+ name: icon,
13
+ className: "size-18 text-foreground-neutral-subtle"
14
+ })
15
+ });
16
+ }
17
+
18
+ //# sourceMappingURL=topbar-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/dashboard/components/topbar-button.tsx"],"sourcesContent":["import {Button} from 'components/button';\nimport {Icon, type IconName} from 'components/icon';\nimport {cn} from 'utils/cn';\n\nexport function TopbarButton({\n className,\n icon,\n label,\n}: {\n className?: string;\n icon: IconName;\n label?: string;\n}) {\n return (\n <Button\n type=\"button\"\n variant=\"transparent\"\n className={cn(\n 'flex items-center justify-center overflow-hidden shrink-0 w-40 h-40 bg-background-subtle-base hover:bg-background-neutral-hover transition-colors rounded-none border-l border-border-neutral-strong',\n className,\n )}\n aria-label={label ?? undefined}\n >\n <Icon name={icon} className=\"size-18 text-foreground-neutral-subtle\" />\n </Button>\n );\n}\n"],"names":["Button","Icon","cn","TopbarButton","className","icon","label","type","variant","aria-label","undefined","name"],"mappings":";AAAA,SAAQA,MAAM,QAAO,oBAAoB;AACzC,SAAQC,IAAI,QAAsB,kBAAkB;AACpD,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,SAASC,aAAa,EAC3BC,SAAS,EACTC,IAAI,EACJC,KAAK,EAKN;IACC,qBACE,KAACN;QACCO,MAAK;QACLC,SAAQ;QACRJ,WAAWF,GACT,wMACAE;QAEFK,cAAYH,SAASI;kBAErB,cAAA,KAACT;YAAKU,MAAMN;YAAMD,WAAU;;;AAGlC"}
@@ -0,0 +1,4 @@
1
+ export declare function Topbar({ hideLogo }: {
2
+ hideLogo?: boolean;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=topbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"topbar.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/components/topbar.tsx"],"names":[],"mappings":"AAOA,wBAAgB,MAAM,CAAC,EAAC,QAAgB,EAAC,EAAE;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAC,2CAgC9D"}
@@ -0,0 +1,62 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from '../../../utils/cn.js';
3
+ import { CompleteSetupButton } from './complete-setup-button.js';
4
+ import { MobileMenu } from './mobile-menu.js';
5
+ import { OrganizationSelector } from './organization-selector.js';
6
+ import { TopbarButton } from './topbar-button.js';
7
+ import { UserProfile } from './user-profile.js';
8
+ export function Topbar({ hideLogo = false }) {
9
+ return /*#__PURE__*/ _jsx("div", {
10
+ className: "flex flex-col items-start w-full bg-background-subtle-base",
11
+ children: /*#__PURE__*/ _jsxs("div", {
12
+ className: "flex items-center justify-between w-full shrink-0 border-b border-border-neutral-strong",
13
+ children: [
14
+ /*#__PURE__*/ _jsxs("div", {
15
+ className: "flex items-center flex-1 min-w-0",
16
+ children: [
17
+ /*#__PURE__*/ _jsx("div", {
18
+ className: cn('shrink-0', hideLogo ? 'opacity-0' : 'opacity-100'),
19
+ children: /*#__PURE__*/ _jsx(TopbarButton, {
20
+ icon: "shipfox",
21
+ label: "Shipfox",
22
+ className: "border-none"
23
+ })
24
+ }),
25
+ /*#__PURE__*/ _jsx(OrganizationSelector, {}),
26
+ /*#__PURE__*/ _jsx("div", {
27
+ className: "hidden md:block flex-1 h-40 bg-background-subtle-base"
28
+ })
29
+ ]
30
+ }),
31
+ /*#__PURE__*/ _jsx(CompleteSetupButton, {
32
+ className: "hidden md:flex"
33
+ }),
34
+ /*#__PURE__*/ _jsx("div", {
35
+ className: "hidden md:block",
36
+ children: /*#__PURE__*/ _jsx(TopbarButton, {
37
+ icon: "searchLine",
38
+ label: "Search"
39
+ })
40
+ }),
41
+ /*#__PURE__*/ _jsx("div", {
42
+ className: "hidden md:block",
43
+ children: /*#__PURE__*/ _jsx(TopbarButton, {
44
+ icon: "questionLine",
45
+ label: "Help"
46
+ })
47
+ }),
48
+ /*#__PURE__*/ _jsx("div", {
49
+ className: "hidden md:block",
50
+ children: /*#__PURE__*/ _jsx(TopbarButton, {
51
+ icon: "notification3Line",
52
+ label: "Notifications"
53
+ })
54
+ }),
55
+ /*#__PURE__*/ _jsx(MobileMenu, {}),
56
+ /*#__PURE__*/ _jsx(UserProfile, {})
57
+ ]
58
+ })
59
+ });
60
+ }
61
+
62
+ //# sourceMappingURL=topbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/dashboard/components/topbar.tsx"],"sourcesContent":["import {cn} from 'utils/cn';\nimport {CompleteSetupButton} from './complete-setup-button';\nimport {MobileMenu} from './mobile-menu';\nimport {OrganizationSelector} from './organization-selector';\nimport {TopbarButton} from './topbar-button';\nimport {UserProfile} from './user-profile';\n\nexport function Topbar({hideLogo = false}: {hideLogo?: boolean}) {\n return (\n <div className=\"flex flex-col items-start w-full bg-background-subtle-base\">\n <div className=\"flex items-center justify-between w-full shrink-0 border-b border-border-neutral-strong\">\n <div className=\"flex items-center flex-1 min-w-0\">\n <div className={cn('shrink-0', hideLogo ? 'opacity-0' : 'opacity-100')}>\n <TopbarButton icon=\"shipfox\" label=\"Shipfox\" className=\"border-none\" />\n </div>\n <OrganizationSelector />\n <div className=\"hidden md:block flex-1 h-40 bg-background-subtle-base\" />\n </div>\n\n <CompleteSetupButton className=\"hidden md:flex\" />\n\n <div className=\"hidden md:block\">\n <TopbarButton icon=\"searchLine\" label=\"Search\" />\n </div>\n\n <div className=\"hidden md:block\">\n <TopbarButton icon=\"questionLine\" label=\"Help\" />\n </div>\n\n <div className=\"hidden md:block\">\n <TopbarButton icon=\"notification3Line\" label=\"Notifications\" />\n </div>\n\n <MobileMenu />\n\n <UserProfile />\n </div>\n </div>\n );\n}\n"],"names":["cn","CompleteSetupButton","MobileMenu","OrganizationSelector","TopbarButton","UserProfile","Topbar","hideLogo","div","className","icon","label"],"mappings":";AAAA,SAAQA,EAAE,QAAO,WAAW;AAC5B,SAAQC,mBAAmB,QAAO,0BAA0B;AAC5D,SAAQC,UAAU,QAAO,gBAAgB;AACzC,SAAQC,oBAAoB,QAAO,0BAA0B;AAC7D,SAAQC,YAAY,QAAO,kBAAkB;AAC7C,SAAQC,WAAW,QAAO,iBAAiB;AAE3C,OAAO,SAASC,OAAO,EAACC,WAAW,KAAK,EAAuB;IAC7D,qBACE,KAACC;QAAIC,WAAU;kBACb,cAAA,MAACD;YAAIC,WAAU;;8BACb,MAACD;oBAAIC,WAAU;;sCACb,KAACD;4BAAIC,WAAWT,GAAG,YAAYO,WAAW,cAAc;sCACtD,cAAA,KAACH;gCAAaM,MAAK;gCAAUC,OAAM;gCAAUF,WAAU;;;sCAEzD,KAACN;sCACD,KAACK;4BAAIC,WAAU;;;;8BAGjB,KAACR;oBAAoBQ,WAAU;;8BAE/B,KAACD;oBAAIC,WAAU;8BACb,cAAA,KAACL;wBAAaM,MAAK;wBAAaC,OAAM;;;8BAGxC,KAACH;oBAAIC,WAAU;8BACb,cAAA,KAACL;wBAAaM,MAAK;wBAAeC,OAAM;;;8BAG1C,KAACH;oBAAIC,WAAU;8BACb,cAAA,KAACL;wBAAaM,MAAK;wBAAoBC,OAAM;;;8BAG/C,KAACT;8BAED,KAACG;;;;AAIT"}
@@ -0,0 +1,2 @@
1
+ export declare function UserProfile(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=user-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-profile.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/components/user-profile.tsx"],"names":[],"mappings":"AAsBA,wBAAgB,WAAW,4CAmE1B"}
@@ -0,0 +1,146 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Avatar } from '../../../components/avatar/index.js';
3
+ import { UserBadge } from '../../../components/badge/index.js';
4
+ import { Button } from '../../../components/button/index.js';
5
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger } from '../../../components/dropdown-menu/index.js';
6
+ import { ShinyText } from '../../../components/shiny-text/index.js';
7
+ function UsageGauge({ used, total }) {
8
+ const percentage = total <= 0 ? 0 : Math.min(used / total * 100, 100);
9
+ return /*#__PURE__*/ _jsx("div", {
10
+ className: "flex h-8 w-full rounded-full bg-tag-neutral-bg overflow-hidden",
11
+ children: /*#__PURE__*/ _jsx("div", {
12
+ className: "h-full bg-tag-success-icon rounded-l-2",
13
+ style: {
14
+ width: `${percentage}%`
15
+ }
16
+ })
17
+ });
18
+ }
19
+ export function UserProfile() {
20
+ const userName = 'Thierry Abalea';
21
+ const userEmail = 'thierryabalea@acme.com';
22
+ const creditsUsed = 3213;
23
+ const creditsTotal = 6000;
24
+ return /*#__PURE__*/ _jsxs(DropdownMenu, {
25
+ children: [
26
+ /*#__PURE__*/ _jsx(DropdownMenuTrigger, {
27
+ asChild: true,
28
+ children: /*#__PURE__*/ _jsxs("div", {
29
+ className: "flex items-center justify-center h-40 px-8 cursor-pointer border-l border-border-neutral-strong",
30
+ children: [
31
+ /*#__PURE__*/ _jsx(Avatar, {
32
+ className: "size-24 md:hidden",
33
+ content: "image",
34
+ fallback: "TA"
35
+ }),
36
+ /*#__PURE__*/ _jsx(UserBadge, {
37
+ name: userName,
38
+ className: "hidden md:inline-flex"
39
+ })
40
+ ]
41
+ })
42
+ }),
43
+ /*#__PURE__*/ _jsxs(DropdownMenuContent, {
44
+ align: "end",
45
+ className: "w-220",
46
+ children: [
47
+ /*#__PURE__*/ _jsxs("div", {
48
+ className: "flex items-center gap-12 px-8 py-4",
49
+ children: [
50
+ /*#__PURE__*/ _jsx(Avatar, {
51
+ className: "size-28 shrink-0",
52
+ content: "image",
53
+ fallback: "TA"
54
+ }),
55
+ /*#__PURE__*/ _jsxs("div", {
56
+ className: "flex flex-col min-w-0",
57
+ children: [
58
+ /*#__PURE__*/ _jsx("span", {
59
+ className: "text-sm font-medium leading-20 text-foreground-neutral-base truncate",
60
+ children: userName
61
+ }),
62
+ /*#__PURE__*/ _jsx("span", {
63
+ className: "text-xs leading-20 text-foreground-neutral-subtle truncate",
64
+ children: userEmail
65
+ })
66
+ ]
67
+ })
68
+ ]
69
+ }),
70
+ /*#__PURE__*/ _jsx(DropdownMenuSeparator, {}),
71
+ /*#__PURE__*/ _jsx(DropdownMenuItem, {
72
+ icon: "sparkling2Fill",
73
+ children: "Getting started"
74
+ }),
75
+ /*#__PURE__*/ _jsx(DropdownMenuItem, {
76
+ icon: "userLine",
77
+ children: "Profile settings"
78
+ }),
79
+ /*#__PURE__*/ _jsx(DropdownMenuSeparator, {}),
80
+ /*#__PURE__*/ _jsxs("div", {
81
+ className: "flex flex-col gap-8 px-8 py-4",
82
+ children: [
83
+ /*#__PURE__*/ _jsxs("div", {
84
+ className: "flex items-center justify-between gap-8",
85
+ children: [
86
+ /*#__PURE__*/ _jsxs("div", {
87
+ className: "flex items-center gap-8",
88
+ children: [
89
+ /*#__PURE__*/ _jsx(Avatar, {
90
+ className: "size-12",
91
+ content: "logo",
92
+ logoName: "stripe",
93
+ radius: "rounded"
94
+ }),
95
+ /*#__PURE__*/ _jsx("span", {
96
+ className: "text-sm font-medium leading-20 text-foreground-neutral-subtle",
97
+ children: "Usage"
98
+ })
99
+ ]
100
+ }),
101
+ /*#__PURE__*/ _jsxs("span", {
102
+ className: "text-sm font-medium leading-20 text-foreground-neutral-subtle",
103
+ children: [
104
+ creditsUsed,
105
+ " / ",
106
+ creditsTotal
107
+ ]
108
+ })
109
+ ]
110
+ }),
111
+ /*#__PURE__*/ _jsx(UsageGauge, {
112
+ used: creditsUsed,
113
+ total: creditsTotal
114
+ }),
115
+ /*#__PURE__*/ _jsxs("span", {
116
+ className: "text-xs leading-20 text-foreground-neutral-subtle",
117
+ children: [
118
+ creditsTotal,
119
+ " free credits every month."
120
+ ]
121
+ })
122
+ ]
123
+ }),
124
+ /*#__PURE__*/ _jsx("div", {
125
+ className: "px-8 pb-12",
126
+ children: /*#__PURE__*/ _jsx(Button, {
127
+ type: "button",
128
+ className: "w-full",
129
+ children: /*#__PURE__*/ _jsx(ShinyText, {
130
+ text: "Upgrade Plan",
131
+ className: "flex-1 text-sm font-medium leading-20 text-foreground-neutral-base truncate text-center"
132
+ })
133
+ })
134
+ }),
135
+ /*#__PURE__*/ _jsx(DropdownMenuSeparator, {}),
136
+ /*#__PURE__*/ _jsx(DropdownMenuItem, {
137
+ icon: "logoutCircleLine",
138
+ children: "Log out"
139
+ })
140
+ ]
141
+ })
142
+ ]
143
+ });
144
+ }
145
+
146
+ //# sourceMappingURL=user-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/dashboard/components/user-profile.tsx"],"sourcesContent":["import {Avatar} from 'components/avatar';\nimport {UserBadge} from 'components/badge';\nimport {Button} from 'components/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from 'components/dropdown-menu';\nimport {ShinyText} from 'components/shiny-text';\n\nfunction UsageGauge({used, total}: {used: number; total: number}) {\n const percentage = total <= 0 ? 0 : Math.min((used / total) * 100, 100);\n\n return (\n <div className=\"flex h-8 w-full rounded-full bg-tag-neutral-bg overflow-hidden\">\n <div className=\"h-full bg-tag-success-icon rounded-l-2\" style={{width: `${percentage}%`}} />\n </div>\n );\n}\n\nexport function UserProfile() {\n const userName = 'Thierry Abalea';\n const userEmail = 'thierryabalea@acme.com';\n const creditsUsed = 3213;\n const creditsTotal = 6000;\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <div className=\"flex items-center justify-center h-40 px-8 cursor-pointer border-l border-border-neutral-strong\">\n <Avatar className=\"size-24 md:hidden\" content=\"image\" fallback=\"TA\" />\n <UserBadge name={userName} className=\"hidden md:inline-flex\" />\n </div>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-220\">\n <div className=\"flex items-center gap-12 px-8 py-4\">\n <Avatar className=\"size-28 shrink-0\" content=\"image\" fallback=\"TA\" />\n <div className=\"flex flex-col min-w-0\">\n <span className=\"text-sm font-medium leading-20 text-foreground-neutral-base truncate\">\n {userName}\n </span>\n <span className=\"text-xs leading-20 text-foreground-neutral-subtle truncate\">\n {userEmail}\n </span>\n </div>\n </div>\n\n <DropdownMenuSeparator />\n\n <DropdownMenuItem icon=\"sparkling2Fill\">Getting started</DropdownMenuItem>\n <DropdownMenuItem icon=\"userLine\">Profile settings</DropdownMenuItem>\n\n <DropdownMenuSeparator />\n\n <div className=\"flex flex-col gap-8 px-8 py-4\">\n <div className=\"flex items-center justify-between gap-8\">\n <div className=\"flex items-center gap-8\">\n <Avatar className=\"size-12\" content=\"logo\" logoName=\"stripe\" radius=\"rounded\" />\n <span className=\"text-sm font-medium leading-20 text-foreground-neutral-subtle\">\n Usage\n </span>\n </div>\n <span className=\"text-sm font-medium leading-20 text-foreground-neutral-subtle\">\n {creditsUsed} / {creditsTotal}\n </span>\n </div>\n <UsageGauge used={creditsUsed} total={creditsTotal} />\n <span className=\"text-xs leading-20 text-foreground-neutral-subtle\">\n {creditsTotal} free credits every month.\n </span>\n </div>\n\n <div className=\"px-8 pb-12\">\n <Button type=\"button\" className=\"w-full\">\n <ShinyText\n text=\"Upgrade Plan\"\n className=\"flex-1 text-sm font-medium leading-20 text-foreground-neutral-base truncate text-center\"\n />\n </Button>\n </div>\n\n <DropdownMenuSeparator />\n\n <DropdownMenuItem icon=\"logoutCircleLine\">Log out</DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"],"names":["Avatar","UserBadge","Button","DropdownMenu","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator","DropdownMenuTrigger","ShinyText","UsageGauge","used","total","percentage","Math","min","div","className","style","width","UserProfile","userName","userEmail","creditsUsed","creditsTotal","asChild","content","fallback","name","align","span","icon","logoName","radius","type","text"],"mappings":";AAAA,SAAQA,MAAM,QAAO,oBAAoB;AACzC,SAAQC,SAAS,QAAO,mBAAmB;AAC3C,SAAQC,MAAM,QAAO,oBAAoB;AACzC,SACEC,YAAY,EACZC,mBAAmB,EACnBC,gBAAgB,EAChBC,qBAAqB,EACrBC,mBAAmB,QACd,2BAA2B;AAClC,SAAQC,SAAS,QAAO,wBAAwB;AAEhD,SAASC,WAAW,EAACC,IAAI,EAAEC,KAAK,EAAgC;IAC9D,MAAMC,aAAaD,SAAS,IAAI,IAAIE,KAAKC,GAAG,CAAC,AAACJ,OAAOC,QAAS,KAAK;IAEnE,qBACE,KAACI;QAAIC,WAAU;kBACb,cAAA,KAACD;YAAIC,WAAU;YAAyCC,OAAO;gBAACC,OAAO,GAAGN,WAAW,CAAC,CAAC;YAAA;;;AAG7F;AAEA,OAAO,SAASO;IACd,MAAMC,WAAW;IACjB,MAAMC,YAAY;IAClB,MAAMC,cAAc;IACpB,MAAMC,eAAe;IAErB,qBACE,MAACpB;;0BACC,KAACI;gBAAoBiB,OAAO;0BAC1B,cAAA,MAACT;oBAAIC,WAAU;;sCACb,KAAChB;4BAAOgB,WAAU;4BAAoBS,SAAQ;4BAAQC,UAAS;;sCAC/D,KAACzB;4BAAU0B,MAAMP;4BAAUJ,WAAU;;;;;0BAGzC,MAACZ;gBAAoBwB,OAAM;gBAAMZ,WAAU;;kCACzC,MAACD;wBAAIC,WAAU;;0CACb,KAAChB;gCAAOgB,WAAU;gCAAmBS,SAAQ;gCAAQC,UAAS;;0CAC9D,MAACX;gCAAIC,WAAU;;kDACb,KAACa;wCAAKb,WAAU;kDACbI;;kDAEH,KAACS;wCAAKb,WAAU;kDACbK;;;;;;kCAKP,KAACf;kCAED,KAACD;wBAAiByB,MAAK;kCAAiB;;kCACxC,KAACzB;wBAAiByB,MAAK;kCAAW;;kCAElC,KAACxB;kCAED,MAACS;wBAAIC,WAAU;;0CACb,MAACD;gCAAIC,WAAU;;kDACb,MAACD;wCAAIC,WAAU;;0DACb,KAAChB;gDAAOgB,WAAU;gDAAUS,SAAQ;gDAAOM,UAAS;gDAASC,QAAO;;0DACpE,KAACH;gDAAKb,WAAU;0DAAgE;;;;kDAIlF,MAACa;wCAAKb,WAAU;;4CACbM;4CAAY;4CAAIC;;;;;0CAGrB,KAACd;gCAAWC,MAAMY;gCAAaX,OAAOY;;0CACtC,MAACM;gCAAKb,WAAU;;oCACbO;oCAAa;;;;;kCAIlB,KAACR;wBAAIC,WAAU;kCACb,cAAA,KAACd;4BAAO+B,MAAK;4BAASjB,WAAU;sCAC9B,cAAA,KAACR;gCACC0B,MAAK;gCACLlB,WAAU;;;;kCAKhB,KAACV;kCAED,KAACD;wBAAiByB,MAAK;kCAAmB;;;;;;AAIlD"}
@@ -0,0 +1,2 @@
1
+ export declare function Dashboard(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/dashboard.tsx"],"names":[],"mappings":"AAWA,wBAAgB,SAAS,4CAiDxB"}
@@ -0,0 +1,70 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMotionValueEvent, useScroll } from 'framer-motion';
3
+ import { useCallback, useRef, useState } from 'react';
4
+ import { AnalyticsContent } from './components/analytics-content.js';
5
+ import { AnimatedLogo } from './components/animated-logo.js';
6
+ import { JobsContent } from './components/jobs-content.js';
7
+ import { TopMenu } from './components/top-menu.js';
8
+ import { Topbar } from './components/topbar.js';
9
+ const LOGO_HEIGHT = 48;
10
+ const TOPBAR_HEIGHT = 41;
11
+ export function Dashboard() {
12
+ const containerRef = useRef(null);
13
+ const topbarRef = useRef(null);
14
+ const [scrollProgress, setScrollProgress] = useState(0);
15
+ const [activeTab, setActiveTab] = useState('analytics');
16
+ const { scrollY } = useScroll({
17
+ container: containerRef
18
+ });
19
+ useMotionValueEvent(scrollY, 'change', (latest)=>{
20
+ const progress = Math.min(latest / TOPBAR_HEIGHT, 1);
21
+ setScrollProgress(progress);
22
+ });
23
+ const handleTabChange = useCallback((tab)=>{
24
+ setActiveTab(tab);
25
+ if (containerRef.current) {
26
+ containerRef.current.scrollTo({
27
+ top: 0,
28
+ behavior: 'instant'
29
+ });
30
+ }
31
+ setScrollProgress(0);
32
+ }, []);
33
+ const isTopbarHidden = scrollProgress >= 1;
34
+ return /*#__PURE__*/ _jsxs("div", {
35
+ className: "flex flex-col w-full h-full",
36
+ children: [
37
+ /*#__PURE__*/ _jsx(AnimatedLogo, {
38
+ scrollProgress: scrollProgress
39
+ }),
40
+ /*#__PURE__*/ _jsxs("div", {
41
+ ref: containerRef,
42
+ className: "flex flex-col w-full h-full overflow-auto",
43
+ children: [
44
+ /*#__PURE__*/ _jsx("div", {
45
+ ref: topbarRef,
46
+ children: /*#__PURE__*/ _jsx(Topbar, {
47
+ hideLogo: isTopbarHidden
48
+ })
49
+ }),
50
+ /*#__PURE__*/ _jsx("div", {
51
+ className: "sticky top-0 z-40 border-b border-border-neutral-strong bg-background-neutral-base",
52
+ children: /*#__PURE__*/ _jsx("div", {
53
+ style: {
54
+ paddingLeft: `${(1 - (1 - scrollProgress) ** 3) * (LOGO_HEIGHT - 8)}px`
55
+ },
56
+ children: /*#__PURE__*/ _jsx(TopMenu, {
57
+ activeTab: activeTab,
58
+ onTabChange: handleTabChange
59
+ })
60
+ })
61
+ }),
62
+ activeTab === 'analytics' && /*#__PURE__*/ _jsx(AnalyticsContent, {}),
63
+ activeTab === 'jobs' && /*#__PURE__*/ _jsx(JobsContent, {})
64
+ ]
65
+ })
66
+ ]
67
+ });
68
+ }
69
+
70
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/dashboard/dashboard.tsx"],"sourcesContent":["import {useMotionValueEvent, useScroll} from 'framer-motion';\nimport {useCallback, useRef, useState} from 'react';\nimport {AnalyticsContent} from './components/analytics-content';\nimport {AnimatedLogo} from './components/animated-logo';\nimport {JobsContent} from './components/jobs-content';\nimport {TopMenu} from './components/top-menu';\nimport {Topbar} from './components/topbar';\n\nconst LOGO_HEIGHT = 48;\nconst TOPBAR_HEIGHT = 41;\n\nexport function Dashboard() {\n const containerRef = useRef<HTMLDivElement>(null);\n const topbarRef = useRef<HTMLDivElement>(null);\n const [scrollProgress, setScrollProgress] = useState(0);\n const [activeTab, setActiveTab] = useState('analytics');\n\n const {scrollY} = useScroll({\n container: containerRef,\n });\n\n useMotionValueEvent(scrollY, 'change', (latest) => {\n const progress = Math.min(latest / TOPBAR_HEIGHT, 1);\n setScrollProgress(progress);\n });\n\n const handleTabChange = useCallback((tab: string) => {\n setActiveTab(tab);\n if (containerRef.current) {\n containerRef.current.scrollTo({top: 0, behavior: 'instant'});\n }\n setScrollProgress(0);\n }, []);\n\n const isTopbarHidden = scrollProgress >= 1;\n\n return (\n <div className=\"flex flex-col w-full h-full\">\n <AnimatedLogo scrollProgress={scrollProgress} />\n\n <div ref={containerRef} className=\"flex flex-col w-full h-full overflow-auto\">\n <div ref={topbarRef}>\n <Topbar hideLogo={isTopbarHidden} />\n </div>\n\n <div className=\"sticky top-0 z-40 border-b border-border-neutral-strong bg-background-neutral-base\">\n <div\n style={{\n paddingLeft: `${(1 - (1 - scrollProgress) ** 3) * (LOGO_HEIGHT - 8)}px`,\n }}\n >\n <TopMenu activeTab={activeTab} onTabChange={handleTabChange} />\n </div>\n </div>\n\n {activeTab === 'analytics' && <AnalyticsContent />}\n {activeTab === 'jobs' && <JobsContent />}\n </div>\n </div>\n );\n}\n"],"names":["useMotionValueEvent","useScroll","useCallback","useRef","useState","AnalyticsContent","AnimatedLogo","JobsContent","TopMenu","Topbar","LOGO_HEIGHT","TOPBAR_HEIGHT","Dashboard","containerRef","topbarRef","scrollProgress","setScrollProgress","activeTab","setActiveTab","scrollY","container","latest","progress","Math","min","handleTabChange","tab","current","scrollTo","top","behavior","isTopbarHidden","div","className","ref","hideLogo","style","paddingLeft","onTabChange"],"mappings":";AAAA,SAAQA,mBAAmB,EAAEC,SAAS,QAAO,gBAAgB;AAC7D,SAAQC,WAAW,EAAEC,MAAM,EAAEC,QAAQ,QAAO,QAAQ;AACpD,SAAQC,gBAAgB,QAAO,iCAAiC;AAChE,SAAQC,YAAY,QAAO,6BAA6B;AACxD,SAAQC,WAAW,QAAO,4BAA4B;AACtD,SAAQC,OAAO,QAAO,wBAAwB;AAC9C,SAAQC,MAAM,QAAO,sBAAsB;AAE3C,MAAMC,cAAc;AACpB,MAAMC,gBAAgB;AAEtB,OAAO,SAASC;IACd,MAAMC,eAAeV,OAAuB;IAC5C,MAAMW,YAAYX,OAAuB;IACzC,MAAM,CAACY,gBAAgBC,kBAAkB,GAAGZ,SAAS;IACrD,MAAM,CAACa,WAAWC,aAAa,GAAGd,SAAS;IAE3C,MAAM,EAACe,OAAO,EAAC,GAAGlB,UAAU;QAC1BmB,WAAWP;IACb;IAEAb,oBAAoBmB,SAAS,UAAU,CAACE;QACtC,MAAMC,WAAWC,KAAKC,GAAG,CAACH,SAASV,eAAe;QAClDK,kBAAkBM;IACpB;IAEA,MAAMG,kBAAkBvB,YAAY,CAACwB;QACnCR,aAAaQ;QACb,IAAIb,aAAac,OAAO,EAAE;YACxBd,aAAac,OAAO,CAACC,QAAQ,CAAC;gBAACC,KAAK;gBAAGC,UAAU;YAAS;QAC5D;QACAd,kBAAkB;IACpB,GAAG,EAAE;IAEL,MAAMe,iBAAiBhB,kBAAkB;IAEzC,qBACE,MAACiB;QAAIC,WAAU;;0BACb,KAAC3B;gBAAaS,gBAAgBA;;0BAE9B,MAACiB;gBAAIE,KAAKrB;gBAAcoB,WAAU;;kCAChC,KAACD;wBAAIE,KAAKpB;kCACR,cAAA,KAACL;4BAAO0B,UAAUJ;;;kCAGpB,KAACC;wBAAIC,WAAU;kCACb,cAAA,KAACD;4BACCI,OAAO;gCACLC,aAAa,GAAG,AAAC,CAAA,IAAI,AAAC,CAAA,IAAItB,cAAa,KAAM,CAAA,IAAML,CAAAA,cAAc,CAAA,EAAG,EAAE,CAAC;4BACzE;sCAEA,cAAA,KAACF;gCAAQS,WAAWA;gCAAWqB,aAAab;;;;oBAI/CR,cAAc,6BAAe,KAACZ;oBAC9BY,cAAc,wBAAU,KAACV;;;;;AAIlC"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Dashboard } from './dashboard.js';
3
+ const meta = {
4
+ title: 'Dashboard/Example',
5
+ tags: [
6
+ 'autodocs'
7
+ ],
8
+ parameters: {
9
+ layout: 'fullscreen',
10
+ viewport: {
11
+ defaultViewport: 'extraLarge'
12
+ }
13
+ }
14
+ };
15
+ export default meta;
16
+ export const Default = {
17
+ render: ()=>/*#__PURE__*/ _jsx("div", {
18
+ className: "h-screen w-full",
19
+ children: /*#__PURE__*/ _jsx(Dashboard, {})
20
+ })
21
+ };
22
+
23
+ //# sourceMappingURL=dashboard.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/dashboard/dashboard.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {Dashboard} from './dashboard';\n\nconst meta = {\n title: 'Dashboard/Example',\n tags: ['autodocs'],\n parameters: {\n layout: 'fullscreen',\n viewport: {\n defaultViewport: 'extraLarge',\n },\n },\n} satisfies Meta;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n render: () => (\n <div className=\"h-screen w-full\">\n <Dashboard />\n </div>\n ),\n};\n"],"names":["Dashboard","meta","title","tags","parameters","layout","viewport","defaultViewport","Default","render","div","className"],"mappings":";AACA,SAAQA,SAAS,QAAO,cAAc;AAEtC,MAAMC,OAAO;IACXC,OAAO;IACPC,MAAM;QAAC;KAAW;IAClBC,YAAY;QACVC,QAAQ;QACRC,UAAU;YACRC,iBAAiB;QACnB;IACF;AACF;AAEA,eAAeN,KAAK;AAIpB,OAAO,MAAMO,UAAiB;IAC5BC,QAAQ,kBACN,KAACC;YAAIC,WAAU;sBACb,cAAA,KAACX;;AAGP,EAAE"}
@@ -0,0 +1,2 @@
1
+ export * from './dashboard';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/dashboard/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './dashboard.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/dashboard/index.ts"],"sourcesContent":["export * from './dashboard';\n"],"names":[],"mappings":"AAAA,cAAc,cAAc"}
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { argosScreenshot } from '@argos-ci/storybook/vitest';
2
3
  import { zodResolver } from '@hookform/resolvers/zod';
3
4
  import { Button } from '../../components/button/index.js';
4
5
  import { Checkbox, CheckboxLabel, CheckboxLinks } from '../../components/checkbox/index.js';
@@ -89,7 +90,11 @@ function BasicFormExample() {
89
90
  });
90
91
  }
91
92
  export const Basic = {
92
- render: ()=>/*#__PURE__*/ _jsx(BasicFormExample, {})
93
+ render: ()=>/*#__PURE__*/ _jsx(BasicFormExample, {}),
94
+ play: async (context)=>{
95
+ await new Promise((resolve)=>setTimeout(resolve, 100));
96
+ await argosScreenshot(context, 'Form Basic');
97
+ }
93
98
  };
94
99
  const componentsFormSchema = z.object({
95
100
  example: z.string().min(1, 'This field is required'),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/form/form.stories.tsx"],"sourcesContent":["import {zodResolver} from '@hookform/resolvers/zod';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {Button} from 'components/button';\nimport {Checkbox, CheckboxLabel, CheckboxLinks} from 'components/checkbox';\nimport {Input} from 'components/input';\nimport {Textarea} from 'components/textarea';\nimport {Code, Header} from 'components/typography';\nimport {useForm} from 'react-hook-form';\nimport {z} from 'zod';\nimport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from './form';\n\nconst meta = {\n title: 'Components/Form',\n tags: ['autodocs'],\n} satisfies Meta;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nconst basicFormSchema = z.object({\n username: z.string().min(3, 'Username must be at least 3 characters'),\n email: z.string().email('Invalid email address'),\n});\n\ntype BasicFormValues = z.infer<typeof basicFormSchema>;\n\nfunction BasicFormExample() {\n const form = useForm<BasicFormValues>({\n resolver: zodResolver(basicFormSchema),\n defaultValues: {\n username: '',\n email: '',\n },\n });\n\n function onSubmit(data: BasicFormValues) {\n // biome-ignore lint/suspicious/noConsole: <we need to log the data for the story>\n console.log(data);\n }\n\n return (\n <Form {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-8 w-full max-w-md\">\n <FormField\n control={form.control}\n name=\"username\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Username</FormLabel>\n <FormControl>\n <Input placeholder=\"shadcn\" {...field} />\n </FormControl>\n <FormDescription>This is your public display name.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"email\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Email</FormLabel>\n <FormControl>\n <Input type=\"email\" placeholder=\"email@example.com\" {...field} />\n </FormControl>\n <FormDescription>We'll never share your email.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n <Button type=\"submit\">Submit</Button>\n </form>\n </Form>\n );\n}\n\nexport const Basic: Story = {\n render: () => <BasicFormExample />,\n};\n\nconst componentsFormSchema = z.object({\n example: z.string().min(1, 'This field is required'),\n exampleTextarea: z.string().min(1, 'This field is required'),\n});\n\ntype ComponentsFormValues = z.infer<typeof componentsFormSchema>;\n\nfunction FormComponentsExample() {\n const form = useForm<ComponentsFormValues>({\n resolver: zodResolver(componentsFormSchema),\n defaultValues: {\n example: '',\n exampleTextarea: '',\n },\n });\n\n return (\n <Form {...form}>\n <div className=\"flex flex-col gap-32 w-full max-w-md\">\n <div className=\"flex flex-col gap-16\">\n <Header variant=\"h3\">Form Components</Header>\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Individual form components work together within FormField\n </Code>\n </div>\n\n <form className=\"space-y-8\">\n <FormField\n control={form.control}\n name=\"example\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Form Label</FormLabel>\n <FormControl>\n <Input placeholder=\"Form Control with Input\" {...field} />\n </FormControl>\n <FormDescription>This is a form description.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n\n <FormField\n control={form.control}\n name=\"exampleTextarea\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Form Label</FormLabel>\n <FormControl>\n <Textarea placeholder=\"Form Control with Textarea\" {...field} />\n </FormControl>\n <FormDescription>This is a form description.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n </form>\n </div>\n </Form>\n );\n}\n\nexport const Components: Story = {\n render: () => <FormComponentsExample />,\n};\n\nconst checkboxFormSchema = z.object({\n username: z.string().min(3, 'Username must be at least 3 characters'),\n email: z.string().email('Invalid email address'),\n newsletter: z.boolean(),\n notifications: z.boolean(),\n});\n\ntype CheckboxFormValues = z.infer<typeof checkboxFormSchema>;\n\nfunction FormWithCheckboxExample() {\n const form = useForm<CheckboxFormValues>({\n resolver: zodResolver(checkboxFormSchema),\n defaultValues: {\n username: '',\n email: '',\n newsletter: false,\n notifications: false,\n },\n });\n\n function onSubmit(data: CheckboxFormValues) {\n // biome-ignore lint/suspicious/noConsole: <we need to log the data for the story>\n console.log(data);\n }\n\n return (\n <Form {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-8 w-full max-w-md\">\n <FormField\n control={form.control}\n name=\"username\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Username</FormLabel>\n <FormControl>\n <Input placeholder=\"shadcn\" {...field} />\n </FormControl>\n <FormDescription>This is your public display name.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"email\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Email</FormLabel>\n <FormControl>\n <Input type=\"email\" placeholder=\"email@example.com\" {...field} />\n </FormControl>\n <FormDescription>We'll never share your email.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"newsletter\"\n render={({field}) => (\n <FormItem className=\"flex flex-row items-center gap-8 pt-4\">\n <FormControl>\n <Checkbox checked={field.value} onCheckedChange={field.onChange} />\n </FormControl>\n <FormLabel>Subscribe to newsletter</FormLabel>\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"notifications\"\n render={({field}) => (\n <FormItem className=\"flex flex-row items-center gap-8 pt-4 pb-8\">\n <FormControl>\n <Checkbox checked={field.value} onCheckedChange={field.onChange} />\n </FormControl>\n <FormLabel>Enable notifications</FormLabel>\n </FormItem>\n )}\n />\n <Button type=\"submit\">Submit</Button>\n </form>\n </Form>\n );\n}\n\nexport const WithCheckbox: Story = {\n render: () => <FormWithCheckboxExample />,\n};\n\nconst checkboxLabelSchema = z.object({\n username: z.string().min(1, 'Username is required'),\n email: z.string().email('Invalid email address'),\n terms: z.boolean().refine((val) => val === true, {\n message: 'You must accept the terms and conditions',\n }),\n marketing: z.boolean(),\n});\n\ntype CheckboxLabelFormValues = z.infer<typeof checkboxLabelSchema>;\n\nfunction FormWithCheckboxLabelExample() {\n const form = useForm<CheckboxLabelFormValues>({\n resolver: zodResolver(checkboxLabelSchema),\n defaultValues: {\n username: '',\n email: '',\n terms: false,\n marketing: false,\n },\n });\n\n function onSubmit(data: CheckboxLabelFormValues) {\n // biome-ignore lint/suspicious/noConsole: <we need to log the data for the story>\n console.log(data);\n }\n\n return (\n <Form {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-8 w-full max-w-md\">\n <FormField\n control={form.control}\n name=\"username\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Username</FormLabel>\n <FormControl>\n <Input placeholder=\"shadcn\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"email\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Email</FormLabel>\n <FormControl>\n <Input type=\"email\" placeholder=\"email@example.com\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"terms\"\n render={({field}) => (\n <FormItem>\n <FormControl>\n <CheckboxLabel\n label=\"I agree to the terms and conditions\"\n description=\"By checking this box, you agree to our terms of service and privacy policy.\"\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"marketing\"\n render={({field}) => (\n <FormItem>\n <FormControl>\n <CheckboxLabel\n label=\"I want to receive marketing emails\"\n description=\"Stay updated with our latest products and offers.\"\n optional\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <Button type=\"submit\">Submit</Button>\n </form>\n </Form>\n );\n}\n\nexport const WithCheckboxLabel: Story = {\n render: () => <FormWithCheckboxLabelExample />,\n};\n\nconst checkboxLinksSchema = z.object({\n username: z.string().min(1, 'Username is required'),\n email: z.string().email('Invalid email address'),\n acceptPolicies: z.boolean().refine((val) => val === true, {\n message: 'You must accept the policies to continue',\n }),\n});\n\ntype CheckboxLinksFormValues = z.infer<typeof checkboxLinksSchema>;\n\nfunction FormWithCheckboxLinksExample() {\n const form = useForm<CheckboxLinksFormValues>({\n resolver: zodResolver(checkboxLinksSchema),\n defaultValues: {\n username: '',\n email: '',\n acceptPolicies: false,\n },\n });\n\n function onSubmit(data: CheckboxLinksFormValues) {\n // biome-ignore lint/suspicious/noConsole: <we need to log the data for the story>\n console.log(data);\n }\n\n return (\n <Form {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-8 w-full max-w-md\">\n <FormField\n control={form.control}\n name=\"username\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Username</FormLabel>\n <FormControl>\n <Input placeholder=\"shadcn\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"email\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Email</FormLabel>\n <FormControl>\n <Input type=\"email\" placeholder=\"email@example.com\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"acceptPolicies\"\n render={({field}) => (\n <FormItem>\n <FormControl>\n <CheckboxLinks\n label=\"Accept policies\"\n links={[\n {label: 'Terms of use', href: '#'},\n {label: 'Privacy Policy', href: '#'},\n ]}\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <Button type=\"submit\">Submit</Button>\n </form>\n </Form>\n );\n}\n\nexport const WithCheckboxLinks: Story = {\n render: () => <FormWithCheckboxLinksExample />,\n};\n\nconst checkboxLabelBorderSchema = z.object({\n plan: z.string().min(1, 'Plan name is required'),\n newsletter: z.boolean(),\n});\n\ntype CheckboxLabelBorderFormValues = z.infer<typeof checkboxLabelBorderSchema>;\n\nfunction FormWithCheckboxLabelBorderExample() {\n const form = useForm<CheckboxLabelBorderFormValues>({\n resolver: zodResolver(checkboxLabelBorderSchema),\n defaultValues: {\n plan: '',\n newsletter: false,\n },\n });\n\n function onSubmit(data: CheckboxLabelBorderFormValues) {\n // biome-ignore lint/suspicious/noConsole: <we need to log the data for the story>\n console.log(data);\n }\n\n return (\n <Form {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-8 w-full max-w-md\">\n <FormField\n control={form.control}\n name=\"plan\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Select a plan</FormLabel>\n <FormControl>\n <Input placeholder=\"Enter plan name\" {...field} />\n </FormControl>\n <FormDescription>Choose the plan that best fits your needs.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"newsletter\"\n render={({field}) => (\n <FormItem>\n <FormControl>\n <CheckboxLabel\n label=\"Subscribe to our newsletter\"\n description=\"Get weekly updates, tips, and exclusive content delivered to your inbox.\"\n optional\n showInfoIcon\n border\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <Button type=\"submit\" className=\"mt-4\">\n Submit\n </Button>\n </form>\n </Form>\n );\n}\n\nexport const WithCheckboxLabelBorder: Story = {\n render: () => <FormWithCheckboxLabelBorderExample />,\n};\n"],"names":["zodResolver","Button","Checkbox","CheckboxLabel","CheckboxLinks","Input","Textarea","Code","Header","useForm","z","Form","FormControl","FormDescription","FormField","FormItem","FormLabel","FormMessage","meta","title","tags","basicFormSchema","object","username","string","min","email","BasicFormExample","form","resolver","defaultValues","onSubmit","data","console","log","handleSubmit","className","control","name","render","field","placeholder","type","Basic","componentsFormSchema","example","exampleTextarea","FormComponentsExample","div","variant","Components","checkboxFormSchema","newsletter","boolean","notifications","FormWithCheckboxExample","checked","value","onCheckedChange","onChange","WithCheckbox","checkboxLabelSchema","terms","refine","val","message","marketing","FormWithCheckboxLabelExample","label","description","optional","WithCheckboxLabel","checkboxLinksSchema","acceptPolicies","FormWithCheckboxLinksExample","links","href","WithCheckboxLinks","checkboxLabelBorderSchema","plan","FormWithCheckboxLabelBorderExample","showInfoIcon","border","WithCheckboxLabelBorder"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/form/form.stories.tsx"],"sourcesContent":["import {argosScreenshot} from '@argos-ci/storybook/vitest';\nimport {zodResolver} from '@hookform/resolvers/zod';\nimport type {Meta, StoryObj} from '@storybook/react';\nimport {Button} from 'components/button';\nimport {Checkbox, CheckboxLabel, CheckboxLinks} from 'components/checkbox';\nimport {Input} from 'components/input';\nimport {Textarea} from 'components/textarea';\nimport {Code, Header} from 'components/typography';\nimport {useForm} from 'react-hook-form';\nimport {z} from 'zod';\nimport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from './form';\n\nconst meta = {\n title: 'Components/Form',\n tags: ['autodocs'],\n} satisfies Meta;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nconst basicFormSchema = z.object({\n username: z.string().min(3, 'Username must be at least 3 characters'),\n email: z.string().email('Invalid email address'),\n});\n\ntype BasicFormValues = z.infer<typeof basicFormSchema>;\n\nfunction BasicFormExample() {\n const form = useForm<BasicFormValues>({\n resolver: zodResolver(basicFormSchema),\n defaultValues: {\n username: '',\n email: '',\n },\n });\n\n function onSubmit(data: BasicFormValues) {\n // biome-ignore lint/suspicious/noConsole: <we need to log the data for the story>\n console.log(data);\n }\n\n return (\n <Form {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-8 w-full max-w-md\">\n <FormField\n control={form.control}\n name=\"username\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Username</FormLabel>\n <FormControl>\n <Input placeholder=\"shadcn\" {...field} />\n </FormControl>\n <FormDescription>This is your public display name.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"email\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Email</FormLabel>\n <FormControl>\n <Input type=\"email\" placeholder=\"email@example.com\" {...field} />\n </FormControl>\n <FormDescription>We'll never share your email.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n <Button type=\"submit\">Submit</Button>\n </form>\n </Form>\n );\n}\n\nexport const Basic: Story = {\n render: () => <BasicFormExample />,\n play: async (context) => {\n await new Promise((resolve) => setTimeout(resolve, 100));\n await argosScreenshot(context, 'Form Basic');\n },\n};\n\nconst componentsFormSchema = z.object({\n example: z.string().min(1, 'This field is required'),\n exampleTextarea: z.string().min(1, 'This field is required'),\n});\n\ntype ComponentsFormValues = z.infer<typeof componentsFormSchema>;\n\nfunction FormComponentsExample() {\n const form = useForm<ComponentsFormValues>({\n resolver: zodResolver(componentsFormSchema),\n defaultValues: {\n example: '',\n exampleTextarea: '',\n },\n });\n\n return (\n <Form {...form}>\n <div className=\"flex flex-col gap-32 w-full max-w-md\">\n <div className=\"flex flex-col gap-16\">\n <Header variant=\"h3\">Form Components</Header>\n <Code variant=\"label\" className=\"text-foreground-neutral-subtle\">\n Individual form components work together within FormField\n </Code>\n </div>\n\n <form className=\"space-y-8\">\n <FormField\n control={form.control}\n name=\"example\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Form Label</FormLabel>\n <FormControl>\n <Input placeholder=\"Form Control with Input\" {...field} />\n </FormControl>\n <FormDescription>This is a form description.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n\n <FormField\n control={form.control}\n name=\"exampleTextarea\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Form Label</FormLabel>\n <FormControl>\n <Textarea placeholder=\"Form Control with Textarea\" {...field} />\n </FormControl>\n <FormDescription>This is a form description.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n </form>\n </div>\n </Form>\n );\n}\n\nexport const Components: Story = {\n render: () => <FormComponentsExample />,\n};\n\nconst checkboxFormSchema = z.object({\n username: z.string().min(3, 'Username must be at least 3 characters'),\n email: z.string().email('Invalid email address'),\n newsletter: z.boolean(),\n notifications: z.boolean(),\n});\n\ntype CheckboxFormValues = z.infer<typeof checkboxFormSchema>;\n\nfunction FormWithCheckboxExample() {\n const form = useForm<CheckboxFormValues>({\n resolver: zodResolver(checkboxFormSchema),\n defaultValues: {\n username: '',\n email: '',\n newsletter: false,\n notifications: false,\n },\n });\n\n function onSubmit(data: CheckboxFormValues) {\n // biome-ignore lint/suspicious/noConsole: <we need to log the data for the story>\n console.log(data);\n }\n\n return (\n <Form {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-8 w-full max-w-md\">\n <FormField\n control={form.control}\n name=\"username\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Username</FormLabel>\n <FormControl>\n <Input placeholder=\"shadcn\" {...field} />\n </FormControl>\n <FormDescription>This is your public display name.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"email\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Email</FormLabel>\n <FormControl>\n <Input type=\"email\" placeholder=\"email@example.com\" {...field} />\n </FormControl>\n <FormDescription>We'll never share your email.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"newsletter\"\n render={({field}) => (\n <FormItem className=\"flex flex-row items-center gap-8 pt-4\">\n <FormControl>\n <Checkbox checked={field.value} onCheckedChange={field.onChange} />\n </FormControl>\n <FormLabel>Subscribe to newsletter</FormLabel>\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"notifications\"\n render={({field}) => (\n <FormItem className=\"flex flex-row items-center gap-8 pt-4 pb-8\">\n <FormControl>\n <Checkbox checked={field.value} onCheckedChange={field.onChange} />\n </FormControl>\n <FormLabel>Enable notifications</FormLabel>\n </FormItem>\n )}\n />\n <Button type=\"submit\">Submit</Button>\n </form>\n </Form>\n );\n}\n\nexport const WithCheckbox: Story = {\n render: () => <FormWithCheckboxExample />,\n};\n\nconst checkboxLabelSchema = z.object({\n username: z.string().min(1, 'Username is required'),\n email: z.string().email('Invalid email address'),\n terms: z.boolean().refine((val) => val === true, {\n message: 'You must accept the terms and conditions',\n }),\n marketing: z.boolean(),\n});\n\ntype CheckboxLabelFormValues = z.infer<typeof checkboxLabelSchema>;\n\nfunction FormWithCheckboxLabelExample() {\n const form = useForm<CheckboxLabelFormValues>({\n resolver: zodResolver(checkboxLabelSchema),\n defaultValues: {\n username: '',\n email: '',\n terms: false,\n marketing: false,\n },\n });\n\n function onSubmit(data: CheckboxLabelFormValues) {\n // biome-ignore lint/suspicious/noConsole: <we need to log the data for the story>\n console.log(data);\n }\n\n return (\n <Form {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-8 w-full max-w-md\">\n <FormField\n control={form.control}\n name=\"username\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Username</FormLabel>\n <FormControl>\n <Input placeholder=\"shadcn\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"email\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Email</FormLabel>\n <FormControl>\n <Input type=\"email\" placeholder=\"email@example.com\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"terms\"\n render={({field}) => (\n <FormItem>\n <FormControl>\n <CheckboxLabel\n label=\"I agree to the terms and conditions\"\n description=\"By checking this box, you agree to our terms of service and privacy policy.\"\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"marketing\"\n render={({field}) => (\n <FormItem>\n <FormControl>\n <CheckboxLabel\n label=\"I want to receive marketing emails\"\n description=\"Stay updated with our latest products and offers.\"\n optional\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <Button type=\"submit\">Submit</Button>\n </form>\n </Form>\n );\n}\n\nexport const WithCheckboxLabel: Story = {\n render: () => <FormWithCheckboxLabelExample />,\n};\n\nconst checkboxLinksSchema = z.object({\n username: z.string().min(1, 'Username is required'),\n email: z.string().email('Invalid email address'),\n acceptPolicies: z.boolean().refine((val) => val === true, {\n message: 'You must accept the policies to continue',\n }),\n});\n\ntype CheckboxLinksFormValues = z.infer<typeof checkboxLinksSchema>;\n\nfunction FormWithCheckboxLinksExample() {\n const form = useForm<CheckboxLinksFormValues>({\n resolver: zodResolver(checkboxLinksSchema),\n defaultValues: {\n username: '',\n email: '',\n acceptPolicies: false,\n },\n });\n\n function onSubmit(data: CheckboxLinksFormValues) {\n // biome-ignore lint/suspicious/noConsole: <we need to log the data for the story>\n console.log(data);\n }\n\n return (\n <Form {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-8 w-full max-w-md\">\n <FormField\n control={form.control}\n name=\"username\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Username</FormLabel>\n <FormControl>\n <Input placeholder=\"shadcn\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"email\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Email</FormLabel>\n <FormControl>\n <Input type=\"email\" placeholder=\"email@example.com\" {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"acceptPolicies\"\n render={({field}) => (\n <FormItem>\n <FormControl>\n <CheckboxLinks\n label=\"Accept policies\"\n links={[\n {label: 'Terms of use', href: '#'},\n {label: 'Privacy Policy', href: '#'},\n ]}\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <Button type=\"submit\">Submit</Button>\n </form>\n </Form>\n );\n}\n\nexport const WithCheckboxLinks: Story = {\n render: () => <FormWithCheckboxLinksExample />,\n};\n\nconst checkboxLabelBorderSchema = z.object({\n plan: z.string().min(1, 'Plan name is required'),\n newsletter: z.boolean(),\n});\n\ntype CheckboxLabelBorderFormValues = z.infer<typeof checkboxLabelBorderSchema>;\n\nfunction FormWithCheckboxLabelBorderExample() {\n const form = useForm<CheckboxLabelBorderFormValues>({\n resolver: zodResolver(checkboxLabelBorderSchema),\n defaultValues: {\n plan: '',\n newsletter: false,\n },\n });\n\n function onSubmit(data: CheckboxLabelBorderFormValues) {\n // biome-ignore lint/suspicious/noConsole: <we need to log the data for the story>\n console.log(data);\n }\n\n return (\n <Form {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-8 w-full max-w-md\">\n <FormField\n control={form.control}\n name=\"plan\"\n render={({field}) => (\n <FormItem>\n <FormLabel>Select a plan</FormLabel>\n <FormControl>\n <Input placeholder=\"Enter plan name\" {...field} />\n </FormControl>\n <FormDescription>Choose the plan that best fits your needs.</FormDescription>\n <FormMessage />\n </FormItem>\n )}\n />\n <FormField\n control={form.control}\n name=\"newsletter\"\n render={({field}) => (\n <FormItem>\n <FormControl>\n <CheckboxLabel\n label=\"Subscribe to our newsletter\"\n description=\"Get weekly updates, tips, and exclusive content delivered to your inbox.\"\n optional\n showInfoIcon\n border\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n <Button type=\"submit\" className=\"mt-4\">\n Submit\n </Button>\n </form>\n </Form>\n );\n}\n\nexport const WithCheckboxLabelBorder: Story = {\n render: () => <FormWithCheckboxLabelBorderExample />,\n};\n"],"names":["argosScreenshot","zodResolver","Button","Checkbox","CheckboxLabel","CheckboxLinks","Input","Textarea","Code","Header","useForm","z","Form","FormControl","FormDescription","FormField","FormItem","FormLabel","FormMessage","meta","title","tags","basicFormSchema","object","username","string","min","email","BasicFormExample","form","resolver","defaultValues","onSubmit","data","console","log","handleSubmit","className","control","name","render","field","placeholder","type","Basic","play","context","Promise","resolve","setTimeout","componentsFormSchema","example","exampleTextarea","FormComponentsExample","div","variant","Components","checkboxFormSchema","newsletter","boolean","notifications","FormWithCheckboxExample","checked","value","onCheckedChange","onChange","WithCheckbox","checkboxLabelSchema","terms","refine","val","message","marketing","FormWithCheckboxLabelExample","label","description","optional","WithCheckboxLabel","checkboxLinksSchema","acceptPolicies","FormWithCheckboxLinksExample","links","href","WithCheckboxLinks","checkboxLabelBorderSchema","plan","FormWithCheckboxLabelBorderExample","showInfoIcon","border","WithCheckboxLabelBorder"],"mappings":"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"}
@@ -23,7 +23,8 @@ export declare const iconNames: IconName[];
23
23
  type BaseIconProps = ComponentProps<RemixiconComponentType>;
24
24
  type IconProps = {
25
25
  name: IconName;
26
- } & Omit<BaseIconProps, 'name'>;
27
- export declare function Icon({ name, ...props }: IconProps): import("react/jsx-runtime").JSX.Element;
26
+ size?: number | string;
27
+ } & Omit<BaseIconProps, 'name' | 'size' | 'width' | 'height'>;
28
+ export declare function Icon({ name, size, ...props }: IconProps): import("react/jsx-runtime").JSX.Element;
28
29
  export {};
29
30
  //# sourceMappingURL=icon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../src/components/icon/icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AAiB7D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAC1C,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAoBlB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;CAeuC,CAAC;AAE5D,QAAA,MAAM,QAAQ,EAIT,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,OAAO,cAAc,CAAC;AAEpE,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,QAAQ,CAAC;AAC7C,eAAO,MAAM,SAAS,EAA4B,QAAQ,EAAE,CAAC;AAE7D,KAAK,aAAa,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAC;AAC5D,KAAK,SAAS,GAAG;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAEhE,wBAAgB,IAAI,CAAC,EAAC,IAAI,EAAE,GAAG,KAAK,EAAC,EAAE,SAAS,2CAG/C"}
1
+ {"version":3,"file":"icon.d.ts","sourceRoot":"","sources":["../../../src/components/icon/icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,kBAAkB,CAAC;AAiB7D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAC1C,OAAO,EACL,SAAS,EACT,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAoBlB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;CAeuC,CAAC;AAE5D,QAAA,MAAM,QAAQ,EAIT,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,GAAG,OAAO,cAAc,CAAC;AAEpE,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,QAAQ,CAAC;AAC7C,eAAO,MAAM,SAAS,EAA4B,QAAQ,EAAE,CAAC;AAE7D,KAAK,aAAa,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAC;AAC5D,KAAK,SAAS,GAAG;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAC,GAAG,IAAI,CAC9D,aAAa,EACb,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CACrC,CAAC;AAEF,wBAAgB,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,EAAC,EAAE,SAAS,2CAIrD"}
@@ -40,10 +40,15 @@ const iconsMap = {
40
40
  ...customIconsMap
41
41
  };
42
42
  export const iconNames = Object.keys(iconsMap);
43
- export function Icon({ name, ...props }) {
43
+ export function Icon({ name, size, ...props }) {
44
44
  const IconComponent = iconsMap[name];
45
+ const svgProps = size && typeof size === 'number' ? {
46
+ ...props,
47
+ width: size,
48
+ height: size
49
+ } : props;
45
50
  return /*#__PURE__*/ _jsx(IconComponent, {
46
- ...props
51
+ ...svgProps
47
52
  });
48
53
  }
49
54