@shipfox/react-ui 0.3.0 → 0.5.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 (314) hide show
  1. package/.storybook/main.ts +20 -10
  2. package/.storybook/preview.tsx +1 -1
  3. package/.storybook/vitest.setup.ts +4 -0
  4. package/.turbo/turbo-build.log +2 -2
  5. package/.turbo/turbo-check.log +2 -2
  6. package/.turbo/turbo-type.log +1 -1
  7. package/CHANGELOG.md +18 -0
  8. package/README.md +40 -1
  9. package/argos.config.ts +33 -0
  10. package/dist/components/alert/alert.d.ts +2 -2
  11. package/dist/components/alert/alert.js +3 -3
  12. package/dist/components/alert/alert.js.map +1 -1
  13. package/dist/components/alert/alert.stories.js +2 -2
  14. package/dist/components/alert/alert.stories.js.map +1 -1
  15. package/dist/components/avatar/avatar-group.js +3 -3
  16. package/dist/components/avatar/avatar-group.js.map +1 -1
  17. package/dist/components/avatar/avatar.d.ts +4 -1
  18. package/dist/components/avatar/avatar.d.ts.map +1 -1
  19. package/dist/components/avatar/avatar.js +7 -8
  20. package/dist/components/avatar/avatar.js.map +1 -1
  21. package/dist/components/avatar/avatar.stories.js +15 -3
  22. package/dist/components/avatar/avatar.stories.js.map +1 -1
  23. package/dist/components/badge/badge.d.ts +48 -0
  24. package/dist/components/badge/badge.d.ts.map +1 -0
  25. package/dist/components/badge/badge.js +72 -0
  26. package/dist/components/badge/badge.js.map +1 -0
  27. package/dist/components/badge/badge.stories.js +802 -0
  28. package/dist/components/badge/badge.stories.js.map +1 -0
  29. package/dist/components/badge/icon-badge.d.ts +9 -0
  30. package/dist/components/badge/icon-badge.d.ts.map +1 -0
  31. package/dist/components/badge/icon-badge.js +32 -0
  32. package/dist/components/badge/icon-badge.js.map +1 -0
  33. package/dist/components/badge/index.d.ts +5 -0
  34. package/dist/components/badge/index.d.ts.map +1 -0
  35. package/dist/components/badge/index.js +6 -0
  36. package/dist/components/badge/index.js.map +1 -0
  37. package/dist/components/badge/status-badge.d.ts +9 -0
  38. package/dist/components/badge/status-badge.d.ts.map +1 -0
  39. package/dist/components/badge/status-badge.js +29 -0
  40. package/dist/components/badge/status-badge.js.map +1 -0
  41. package/dist/components/badge/user-badge.d.ts +8 -0
  42. package/dist/components/badge/user-badge.d.ts.map +1 -0
  43. package/dist/components/badge/user-badge.js +24 -0
  44. package/dist/components/badge/user-badge.js.map +1 -0
  45. package/dist/components/button/button-link.d.ts +14 -0
  46. package/dist/components/button/button-link.d.ts.map +1 -0
  47. package/dist/components/button/button-link.js +63 -0
  48. package/dist/components/button/button-link.js.map +1 -0
  49. package/dist/components/button/button-link.stories.js +127 -0
  50. package/dist/components/button/button-link.stories.js.map +1 -0
  51. package/dist/components/{button.d.ts → button/button.d.ts} +2 -2
  52. package/dist/components/button/button.d.ts.map +1 -0
  53. package/dist/components/{button.js → button/button.js} +9 -8
  54. package/dist/components/button/button.js.map +1 -0
  55. package/dist/components/{button.stories.js → button/button.stories.js} +2 -14
  56. package/dist/components/button/button.stories.js.map +1 -0
  57. package/dist/components/button/icon-button.d.ts +14 -0
  58. package/dist/components/button/icon-button.d.ts.map +1 -0
  59. package/dist/components/button/icon-button.js +53 -0
  60. package/dist/components/button/icon-button.js.map +1 -0
  61. package/dist/components/button/icon-button.stories.js +254 -0
  62. package/dist/components/button/icon-button.stories.js.map +1 -0
  63. package/dist/components/button/index.d.ts +4 -0
  64. package/dist/components/button/index.d.ts.map +1 -0
  65. package/dist/components/button/index.js +5 -0
  66. package/dist/components/button/index.js.map +1 -0
  67. package/dist/components/checkbox/checkbox-label.d.ts +14 -0
  68. package/dist/components/checkbox/checkbox-label.d.ts.map +1 -0
  69. package/dist/components/checkbox/checkbox-label.js +82 -0
  70. package/dist/components/checkbox/checkbox-label.js.map +1 -0
  71. package/dist/components/checkbox/checkbox-links.d.ts +18 -0
  72. package/dist/components/checkbox/checkbox-links.d.ts.map +1 -0
  73. package/dist/components/checkbox/checkbox-links.js +58 -0
  74. package/dist/components/checkbox/checkbox-links.js.map +1 -0
  75. package/dist/components/checkbox/checkbox.d.ts +9 -0
  76. package/dist/components/checkbox/checkbox.d.ts.map +1 -0
  77. package/dist/components/checkbox/checkbox.js +49 -0
  78. package/dist/components/checkbox/checkbox.js.map +1 -0
  79. package/dist/components/checkbox/checkbox.stories.js +566 -0
  80. package/dist/components/checkbox/checkbox.stories.js.map +1 -0
  81. package/dist/components/checkbox/index.d.ts +4 -0
  82. package/dist/components/checkbox/index.d.ts.map +1 -0
  83. package/dist/components/checkbox/index.js +5 -0
  84. package/dist/components/checkbox/index.js.map +1 -0
  85. package/dist/components/code-block/code-block-footer.d.ts +26 -0
  86. package/dist/components/code-block/code-block-footer.d.ts.map +1 -0
  87. package/dist/components/code-block/code-block-footer.js +86 -0
  88. package/dist/components/code-block/code-block-footer.js.map +1 -0
  89. package/dist/components/code-block/code-block.d.ts +50 -0
  90. package/dist/components/code-block/code-block.d.ts.map +1 -0
  91. package/dist/components/code-block/code-block.js +142 -0
  92. package/dist/components/code-block/code-block.js.map +1 -0
  93. package/dist/components/code-block/code-block.stories.js +341 -0
  94. package/dist/components/code-block/code-block.stories.js.map +1 -0
  95. package/dist/components/code-block/code-content.d.ts +11 -0
  96. package/dist/components/code-block/code-content.d.ts.map +1 -0
  97. package/dist/components/code-block/code-content.js +29 -0
  98. package/dist/components/code-block/code-content.js.map +1 -0
  99. package/dist/components/code-block/code-copy-button.d.ts +11 -0
  100. package/dist/components/code-block/code-copy-button.d.ts.map +1 -0
  101. package/dist/components/code-block/code-copy-button.js +49 -0
  102. package/dist/components/code-block/code-copy-button.js.map +1 -0
  103. package/dist/components/code-block/code-tabs.d.ts +16 -0
  104. package/dist/components/code-block/code-tabs.d.ts.map +1 -0
  105. package/dist/components/code-block/code-tabs.js +98 -0
  106. package/dist/components/code-block/code-tabs.js.map +1 -0
  107. package/dist/components/code-block/index.d.ts +4 -0
  108. package/dist/components/code-block/index.d.ts.map +1 -0
  109. package/dist/components/code-block/index.js +5 -0
  110. package/dist/components/code-block/index.js.map +1 -0
  111. package/dist/components/dynamic-item/dynamic-item.d.ts +13 -0
  112. package/dist/components/dynamic-item/dynamic-item.d.ts.map +1 -0
  113. package/dist/components/dynamic-item/dynamic-item.js +43 -0
  114. package/dist/components/dynamic-item/dynamic-item.js.map +1 -0
  115. package/dist/components/dynamic-item/dynamic-item.stories.js +375 -0
  116. package/dist/components/dynamic-item/dynamic-item.stories.js.map +1 -0
  117. package/dist/components/dynamic-item/index.d.ts +2 -0
  118. package/dist/components/dynamic-item/index.d.ts.map +1 -0
  119. package/dist/components/dynamic-item/index.js +3 -0
  120. package/dist/components/dynamic-item/index.js.map +1 -0
  121. package/dist/components/icon/custom/index.d.ts +2 -0
  122. package/dist/components/icon/custom/index.d.ts.map +1 -1
  123. package/dist/components/icon/custom/index.js +2 -0
  124. package/dist/components/icon/custom/index.js.map +1 -1
  125. package/dist/components/icon/custom/slack-logo.d.ts +6 -0
  126. package/dist/components/icon/custom/slack-logo.d.ts.map +1 -0
  127. package/dist/components/icon/custom/slack-logo.js +34 -0
  128. package/dist/components/icon/custom/slack-logo.js.map +1 -0
  129. package/dist/components/icon/custom/stripe-logo.d.ts +8 -0
  130. package/dist/components/icon/custom/stripe-logo.d.ts.map +1 -0
  131. package/dist/components/icon/custom/stripe-logo.js +24 -0
  132. package/dist/components/icon/custom/stripe-logo.js.map +1 -0
  133. package/dist/components/icon/icon.d.ts +13 -2
  134. package/dist/components/icon/icon.d.ts.map +1 -1
  135. package/dist/components/icon/icon.js +14 -3
  136. package/dist/components/icon/icon.js.map +1 -1
  137. package/dist/components/icon/icon.stories.js +6 -3
  138. package/dist/components/icon/icon.stories.js.map +1 -1
  139. package/dist/components/index.d.ts +9 -1
  140. package/dist/components/index.d.ts.map +1 -1
  141. package/dist/components/index.js +10 -2
  142. package/dist/components/index.js.map +1 -1
  143. package/dist/components/inline-tips/inline-tips.d.ts +1 -1
  144. package/dist/components/inline-tips/inline-tips.d.ts.map +1 -1
  145. package/dist/components/inline-tips/inline-tips.js +1 -1
  146. package/dist/components/inline-tips/inline-tips.js.map +1 -1
  147. package/dist/components/inline-tips/inline-tips.stories.js +5 -5
  148. package/dist/components/inline-tips/inline-tips.stories.js.map +1 -1
  149. package/dist/components/input/index.d.ts +2 -0
  150. package/dist/components/input/index.d.ts.map +1 -0
  151. package/dist/components/input/index.js +3 -0
  152. package/dist/components/input/index.js.map +1 -0
  153. package/dist/components/input/input.d.ts.map +1 -0
  154. package/dist/components/{input.js → input/input.js} +2 -2
  155. package/dist/components/input/input.js.map +1 -0
  156. package/dist/components/{input.stories.js → input/input.stories.js} +1 -1
  157. package/dist/components/input/input.stories.js.map +1 -0
  158. package/dist/components/item/index.d.ts +2 -0
  159. package/dist/components/item/index.d.ts.map +1 -0
  160. package/dist/components/item/index.js +3 -0
  161. package/dist/components/item/index.js.map +1 -0
  162. package/dist/components/item/item.d.ts +32 -0
  163. package/dist/components/item/item.d.ts.map +1 -0
  164. package/dist/components/item/item.js +120 -0
  165. package/dist/components/item/item.js.map +1 -0
  166. package/dist/components/item/item.stories.js +232 -0
  167. package/dist/components/item/item.stories.js.map +1 -0
  168. package/dist/components/label/index.d.ts +2 -0
  169. package/dist/components/label/index.d.ts.map +1 -0
  170. package/dist/components/label/index.js +3 -0
  171. package/dist/components/label/index.js.map +1 -0
  172. package/dist/components/label/label.d.ts +7 -0
  173. package/dist/components/label/label.d.ts.map +1 -0
  174. package/dist/components/label/label.js +13 -0
  175. package/dist/components/label/label.js.map +1 -0
  176. package/dist/components/label/label.stories.js +105 -0
  177. package/dist/components/label/label.stories.js.map +1 -0
  178. package/dist/components/moving-border/moving-border.d.ts +9 -0
  179. package/dist/components/moving-border/moving-border.d.ts.map +1 -0
  180. package/dist/components/moving-border/moving-border.js +54 -0
  181. package/dist/components/moving-border/moving-border.js.map +1 -0
  182. package/dist/components/textarea/textarea.js +1 -1
  183. package/dist/components/textarea/textarea.js.map +1 -1
  184. package/dist/components/theme/index.d.ts +2 -0
  185. package/dist/components/theme/index.d.ts.map +1 -0
  186. package/dist/components/theme/index.js +3 -0
  187. package/dist/components/theme/index.js.map +1 -0
  188. package/dist/components/{theme-provider.d.ts → theme/theme-provider.d.ts} +1 -1
  189. package/dist/components/theme/theme-provider.d.ts.map +1 -0
  190. package/dist/components/{theme-provider.js → theme/theme-provider.js} +1 -1
  191. package/dist/components/theme/theme-provider.js.map +1 -0
  192. package/dist/components/toast/index.d.ts +3 -0
  193. package/dist/components/toast/index.d.ts.map +1 -0
  194. package/dist/components/toast/index.js +4 -0
  195. package/dist/components/toast/index.js.map +1 -0
  196. package/dist/components/toast/toast-custom.d.ts +19 -0
  197. package/dist/components/toast/toast-custom.d.ts.map +1 -0
  198. package/dist/components/toast/toast-custom.js +134 -0
  199. package/dist/components/toast/toast-custom.js.map +1 -0
  200. package/dist/components/toast/toast.d.ts +5 -0
  201. package/dist/components/toast/toast.d.ts.map +1 -0
  202. package/dist/components/toast/toast.js +40 -0
  203. package/dist/components/toast/toast.js.map +1 -0
  204. package/dist/components/toast/toast.stories.js +326 -0
  205. package/dist/components/toast/toast.stories.js.map +1 -0
  206. package/dist/components/tooltip/index.d.ts +2 -0
  207. package/dist/components/tooltip/index.d.ts.map +1 -0
  208. package/dist/components/tooltip/index.js +3 -0
  209. package/dist/components/tooltip/index.js.map +1 -0
  210. package/dist/components/tooltip/tooltip.d.ts +18 -5
  211. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  212. package/dist/components/tooltip/tooltip.js +63 -3
  213. package/dist/components/tooltip/tooltip.js.map +1 -1
  214. package/dist/components/tooltip/tooltip.stories.js +560 -0
  215. package/dist/components/tooltip/tooltip.stories.js.map +1 -0
  216. package/dist/hooks/index.d.ts +3 -0
  217. package/dist/hooks/index.d.ts.map +1 -1
  218. package/dist/hooks/index.js +3 -0
  219. package/dist/hooks/index.js.map +1 -1
  220. package/dist/hooks/useResolvedTheme.d.ts +2 -0
  221. package/dist/hooks/useResolvedTheme.d.ts.map +1 -0
  222. package/dist/hooks/useResolvedTheme.js +24 -0
  223. package/dist/hooks/useResolvedTheme.js.map +1 -0
  224. package/dist/hooks/useShikiHighlight.d.ts +28 -0
  225. package/dist/hooks/useShikiHighlight.d.ts.map +1 -0
  226. package/dist/hooks/useShikiHighlight.js +106 -0
  227. package/dist/hooks/useShikiHighlight.js.map +1 -0
  228. package/dist/hooks/useShikiStyleInjection.d.ts +2 -0
  229. package/dist/hooks/useShikiStyleInjection.d.ts.map +1 -0
  230. package/dist/hooks/useShikiStyleInjection.js +34 -0
  231. package/dist/hooks/useShikiStyleInjection.js.map +1 -0
  232. package/dist/onboarding/sign-in.stories.js +93 -0
  233. package/dist/onboarding/sign-in.stories.js.map +1 -0
  234. package/index.css +130 -12
  235. package/package.json +14 -3
  236. package/src/assets/illustration-1.svg +92 -0
  237. package/src/assets/illustration-2.svg +14 -0
  238. package/src/assets/illustration-gradient.svg +7049 -0
  239. package/src/components/alert/alert.stories.tsx +2 -2
  240. package/src/components/alert/alert.tsx +3 -3
  241. package/src/components/avatar/avatar-group.tsx +3 -3
  242. package/src/components/avatar/avatar.stories.tsx +9 -2
  243. package/src/components/avatar/avatar.tsx +10 -6
  244. package/src/components/badge/badge.stories.tsx +468 -0
  245. package/src/components/badge/badge.tsx +147 -0
  246. package/src/components/badge/icon-badge.tsx +43 -0
  247. package/src/components/badge/index.ts +4 -0
  248. package/src/components/badge/status-badge.tsx +43 -0
  249. package/src/components/badge/user-badge.tsx +34 -0
  250. package/src/components/button/button-link.stories.tsx +86 -0
  251. package/src/components/button/button-link.tsx +76 -0
  252. package/src/components/{button.stories.tsx → button/button.stories.tsx} +1 -7
  253. package/src/components/{button.tsx → button/button.tsx} +9 -7
  254. package/src/components/button/icon-button.stories.tsx +182 -0
  255. package/src/components/button/icon-button.tsx +69 -0
  256. package/src/components/button/index.ts +3 -0
  257. package/src/components/checkbox/checkbox-label.tsx +125 -0
  258. package/src/components/checkbox/checkbox-links.tsx +90 -0
  259. package/src/components/checkbox/checkbox.stories.tsx +375 -0
  260. package/src/components/checkbox/checkbox.tsx +71 -0
  261. package/src/components/checkbox/index.ts +3 -0
  262. package/src/components/code-block/code-block-footer.tsx +173 -0
  263. package/src/components/code-block/code-block.stories.tsx +323 -0
  264. package/src/components/code-block/code-block.tsx +283 -0
  265. package/src/components/code-block/code-content.tsx +63 -0
  266. package/src/components/code-block/code-copy-button.tsx +73 -0
  267. package/src/components/code-block/code-tabs.tsx +170 -0
  268. package/src/components/code-block/index.ts +3 -0
  269. package/src/components/dynamic-item/dynamic-item.stories.tsx +261 -0
  270. package/src/components/dynamic-item/dynamic-item.tsx +68 -0
  271. package/src/components/dynamic-item/index.ts +1 -0
  272. package/src/components/icon/custom/index.ts +2 -0
  273. package/src/components/icon/custom/slack-logo.tsx +35 -0
  274. package/src/components/icon/custom/stripe-logo.tsx +27 -0
  275. package/src/components/icon/icon.stories.tsx +3 -1
  276. package/src/components/icon/icon.tsx +23 -1
  277. package/src/components/index.ts +9 -1
  278. package/src/components/inline-tips/inline-tips.stories.tsx +3 -3
  279. package/src/components/inline-tips/inline-tips.tsx +2 -2
  280. package/src/components/input/index.ts +1 -0
  281. package/src/components/{input.tsx → input/input.tsx} +1 -1
  282. package/src/components/item/index.ts +1 -0
  283. package/src/components/item/item.stories.tsx +150 -0
  284. package/src/components/item/item.tsx +182 -0
  285. package/src/components/label/index.ts +1 -0
  286. package/src/components/label/label.stories.tsx +67 -0
  287. package/src/components/label/label.tsx +15 -0
  288. package/src/components/moving-border/moving-border.tsx +67 -0
  289. package/src/components/textarea/textarea.tsx +1 -1
  290. package/src/components/theme/index.ts +1 -0
  291. package/src/components/toast/index.ts +2 -0
  292. package/src/components/toast/toast-custom.tsx +154 -0
  293. package/src/components/toast/toast.stories.tsx +369 -0
  294. package/src/components/toast/toast.tsx +41 -0
  295. package/src/components/tooltip/index.ts +1 -0
  296. package/src/components/tooltip/tooltip.stories.tsx +284 -0
  297. package/src/components/tooltip/tooltip.tsx +79 -10
  298. package/src/hooks/index.ts +3 -0
  299. package/src/hooks/useResolvedTheme.ts +34 -0
  300. package/src/hooks/useShikiHighlight.ts +140 -0
  301. package/src/hooks/useShikiStyleInjection.ts +34 -0
  302. package/src/onboarding/sign-in.stories.tsx +73 -0
  303. package/vitest.config.ts +30 -3
  304. package/dist/components/button.d.ts.map +0 -1
  305. package/dist/components/button.js.map +0 -1
  306. package/dist/components/button.stories.js.map +0 -1
  307. package/dist/components/input.d.ts.map +0 -1
  308. package/dist/components/input.js.map +0 -1
  309. package/dist/components/input.stories.js.map +0 -1
  310. package/dist/components/theme-provider.d.ts.map +0 -1
  311. package/dist/components/theme-provider.js.map +0 -1
  312. /package/dist/components/{input.d.ts → input/input.d.ts} +0 -0
  313. /package/src/components/{input.stories.tsx → input/input.stories.tsx} +0 -0
  314. /package/src/components/{theme-provider.tsx → theme/theme-provider.tsx} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/item/item.tsx"],"sourcesContent":["import {Slot} from '@radix-ui/react-slot';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\n\nexport const itemVariants = cva('transition-all duration-150 rounded-8', {\n variants: {\n variant: {\n default:\n 'bg-background-components-base text-foreground-neutral-base border border-border-neutral-base shadow-button-neutral',\n neutral:\n 'bg-background-neutral-base text-foreground-neutral-base border border-border-neutral-base shadow-button-neutral',\n },\n size: {\n default: '',\n sm: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n});\n\nexport type ItemProps = ComponentProps<'div'> &\n VariantProps<typeof itemVariants> & {\n asChild?: boolean;\n };\n\nexport function Item({className, variant, size, asChild = false, children, ...props}: ItemProps) {\n const Comp = asChild ? Slot : 'div';\n\n return (\n <Comp data-slot=\"item\" className={cn(itemVariants({variant, size}), className)} {...props}>\n {children}\n </Comp>\n );\n}\n\n// ItemGroup\nexport type ItemGroupProps = ComponentProps<'div'>;\n\nexport function ItemGroup({className, children, ...props}: ItemGroupProps) {\n return (\n <div data-slot=\"item-group\" className={cn('flex flex-col', className)} {...props}>\n {children}\n </div>\n );\n}\n\n// ItemActions\nexport type ItemActionsProps = ComponentProps<'div'>;\n\nexport function ItemActions({className, children, ...props}: ItemActionsProps) {\n return (\n <div\n data-slot=\"item-actions\"\n className={cn('flex shrink-0 items-center gap-8', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// ItemContent\nexport type ItemContentProps = ComponentProps<'div'>;\n\nexport function ItemContent({className, children, ...props}: ItemContentProps) {\n return (\n <div\n data-slot=\"item-content\"\n className={cn('flex min-w-0 flex-1 flex-col gap-4', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// ItemDescription\nexport type ItemDescriptionProps = ComponentProps<'p'>;\n\nexport function ItemDescription({className, children, ...props}: ItemDescriptionProps) {\n return (\n <p\n data-slot=\"item-description\"\n className={cn(\n 'text-xs leading-20 text-foreground-neutral-subtle max-w-250 sm:max-w-fit line-clamp-3',\n className,\n )}\n {...props}\n >\n {children}\n </p>\n );\n}\n\n// ItemFooter\nexport type ItemFooterProps = ComponentProps<'div'>;\n\nexport function ItemFooter({className, children, ...props}: ItemFooterProps) {\n return (\n <div\n data-slot=\"item-footer\"\n className={cn('flex shrink-0 items-center gap-8 px-12 py-8', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// ItemHeader\nexport type ItemHeaderProps = ComponentProps<'div'>;\n\nexport function ItemHeader({className, children, ...props}: ItemHeaderProps) {\n return (\n <div\n data-slot=\"item-header\"\n className={cn('flex shrink-0 items-center gap-8 px-12 py-8', className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\n// ItemMedia\nexport const itemMediaVariants = cva('flex shrink-0 items-center justify-center', {\n variants: {\n variant: {\n default: '',\n icon: 'text-foreground-neutral-base',\n image: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nexport type ItemMediaProps = ComponentProps<'div'> & VariantProps<typeof itemMediaVariants>;\n\nexport function ItemMedia({className, variant, children, ...props}: ItemMediaProps) {\n return (\n <div data-slot=\"item-media\" className={cn(itemMediaVariants({variant}), className)} {...props}>\n {children}\n </div>\n );\n}\n\n// ItemTitle\nexport type ItemTitleProps = ComponentProps<'h3'>;\n\nexport function ItemTitle({className, children, ...props}: ItemTitleProps) {\n return (\n <h3\n data-slot=\"item-title\"\n className={cn(\n 'text-sm font-medium leading-20 text-foreground-neutral-base truncate',\n className,\n )}\n {...props}\n >\n {children}\n </h3>\n );\n}\n\n// ItemSeparator\nexport type ItemSeparatorProps = ComponentProps<'div'>;\n\nexport function ItemSeparator({className, ...props}: ItemSeparatorProps) {\n return (\n <div\n data-slot=\"item-separator\"\n className={cn('h-px bg-border-neutral-base', className)}\n {...props}\n />\n );\n}\n"],"names":["Slot","cva","cn","itemVariants","variants","variant","default","neutral","size","sm","defaultVariants","Item","className","asChild","children","props","Comp","data-slot","ItemGroup","div","ItemActions","ItemContent","ItemDescription","p","ItemFooter","ItemHeader","itemMediaVariants","icon","image","ItemMedia","ItemTitle","h3","ItemSeparator"],"mappings":";AAAA,SAAQA,IAAI,QAAO,uBAAuB;AAC1C,SAAQC,GAAG,QAA0B,2BAA2B;AAEhE,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,MAAMC,eAAeF,IAAI,yCAAyC;IACvEG,UAAU;QACRC,SAAS;YACPC,SACE;YACFC,SACE;QACJ;QACAC,MAAM;YACJF,SAAS;YACTG,IAAI;QACN;IACF;IACAC,iBAAiB;QACfL,SAAS;QACTG,MAAM;IACR;AACF,GAAG;AAOH,OAAO,SAASG,KAAK,EAACC,SAAS,EAAEP,OAAO,EAAEG,IAAI,EAAEK,UAAU,KAAK,EAAEC,QAAQ,EAAE,GAAGC,OAAiB;IAC7F,MAAMC,OAAOH,UAAUb,OAAO;IAE9B,qBACE,KAACgB;QAAKC,aAAU;QAAOL,WAAWV,GAAGC,aAAa;YAACE;YAASG;QAAI,IAAII;QAAa,GAAGG,KAAK;kBACtFD;;AAGP;AAKA,OAAO,SAASI,UAAU,EAACN,SAAS,EAAEE,QAAQ,EAAE,GAAGC,OAAsB;IACvE,qBACE,KAACI;QAAIF,aAAU;QAAaL,WAAWV,GAAG,iBAAiBU;QAAa,GAAGG,KAAK;kBAC7ED;;AAGP;AAKA,OAAO,SAASM,YAAY,EAACR,SAAS,EAAEE,QAAQ,EAAE,GAAGC,OAAwB;IAC3E,qBACE,KAACI;QACCF,aAAU;QACVL,WAAWV,GAAG,oCAAoCU;QACjD,GAAGG,KAAK;kBAERD;;AAGP;AAKA,OAAO,SAASO,YAAY,EAACT,SAAS,EAAEE,QAAQ,EAAE,GAAGC,OAAwB;IAC3E,qBACE,KAACI;QACCF,aAAU;QACVL,WAAWV,GAAG,sCAAsCU;QACnD,GAAGG,KAAK;kBAERD;;AAGP;AAKA,OAAO,SAASQ,gBAAgB,EAACV,SAAS,EAAEE,QAAQ,EAAE,GAAGC,OAA4B;IACnF,qBACE,KAACQ;QACCN,aAAU;QACVL,WAAWV,GACT,yFACAU;QAED,GAAGG,KAAK;kBAERD;;AAGP;AAKA,OAAO,SAASU,WAAW,EAACZ,SAAS,EAAEE,QAAQ,EAAE,GAAGC,OAAuB;IACzE,qBACE,KAACI;QACCF,aAAU;QACVL,WAAWV,GAAG,+CAA+CU;QAC5D,GAAGG,KAAK;kBAERD;;AAGP;AAKA,OAAO,SAASW,WAAW,EAACb,SAAS,EAAEE,QAAQ,EAAE,GAAGC,OAAuB;IACzE,qBACE,KAACI;QACCF,aAAU;QACVL,WAAWV,GAAG,+CAA+CU;QAC5D,GAAGG,KAAK;kBAERD;;AAGP;AAEA,YAAY;AACZ,OAAO,MAAMY,oBAAoBzB,IAAI,6CAA6C;IAChFG,UAAU;QACRC,SAAS;YACPC,SAAS;YACTqB,MAAM;YACNC,OAAO;QACT;IACF;IACAlB,iBAAiB;QACfL,SAAS;IACX;AACF,GAAG;AAIH,OAAO,SAASwB,UAAU,EAACjB,SAAS,EAAEP,OAAO,EAAES,QAAQ,EAAE,GAAGC,OAAsB;IAChF,qBACE,KAACI;QAAIF,aAAU;QAAaL,WAAWV,GAAGwB,kBAAkB;YAACrB;QAAO,IAAIO;QAAa,GAAGG,KAAK;kBAC1FD;;AAGP;AAKA,OAAO,SAASgB,UAAU,EAAClB,SAAS,EAAEE,QAAQ,EAAE,GAAGC,OAAsB;IACvE,qBACE,KAACgB;QACCd,aAAU;QACVL,WAAWV,GACT,wEACAU;QAED,GAAGG,KAAK;kBAERD;;AAGP;AAKA,OAAO,SAASkB,cAAc,EAACpB,SAAS,EAAE,GAAGG,OAA0B;IACrE,qBACE,KAACI;QACCF,aAAU;QACVL,WAAWV,GAAG,+BAA+BU;QAC5C,GAAGG,KAAK;;AAGf"}
@@ -0,0 +1,232 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button } from '../../components/button/button.js';
3
+ import { Icon } from '../../components/icon/icon.js';
4
+ import { Input } from '../../components/input/input.js';
5
+ import { Label } from '../../components/label/label.js';
6
+ import { Item, ItemActions, ItemContent, ItemDescription, ItemFooter, ItemGroup, ItemHeader, ItemSeparator, ItemTitle } from './item.js';
7
+ const meta = {
8
+ title: 'Components/Item',
9
+ component: Item,
10
+ tags: [
11
+ 'autodocs'
12
+ ],
13
+ argTypes: {
14
+ variant: {
15
+ control: 'select',
16
+ options: [
17
+ 'default',
18
+ 'neutral'
19
+ ]
20
+ },
21
+ size: {
22
+ control: 'select',
23
+ options: [
24
+ 'default',
25
+ 'sm'
26
+ ]
27
+ }
28
+ },
29
+ args: {
30
+ variant: 'default',
31
+ size: 'default'
32
+ }
33
+ };
34
+ export default meta;
35
+ export const Default = {
36
+ args: {
37
+ variant: 'default'
38
+ },
39
+ render: (args)=>/*#__PURE__*/ _jsxs(Item, {
40
+ ...args,
41
+ className: "px-12 py-12",
42
+ children: [
43
+ /*#__PURE__*/ _jsxs(ItemContent, {
44
+ children: [
45
+ /*#__PURE__*/ _jsx(ItemTitle, {
46
+ children: "Basic Item"
47
+ }),
48
+ /*#__PURE__*/ _jsx(ItemDescription, {
49
+ children: "A simple item with title and description."
50
+ })
51
+ ]
52
+ }),
53
+ /*#__PURE__*/ _jsx(ItemActions, {
54
+ className: "pt-8",
55
+ children: /*#__PURE__*/ _jsx(Button, {
56
+ variant: "secondary",
57
+ size: "sm",
58
+ children: "Action"
59
+ })
60
+ })
61
+ ]
62
+ })
63
+ };
64
+ export const Variants = {
65
+ args: {},
66
+ render: ()=>/*#__PURE__*/ _jsxs(ItemGroup, {
67
+ className: "flex w-full max-w-md flex-col gap-12",
68
+ children: [
69
+ /*#__PURE__*/ _jsxs(Item, {
70
+ variant: "default",
71
+ className: "px-12 py-12",
72
+ children: [
73
+ /*#__PURE__*/ _jsxs(ItemContent, {
74
+ children: [
75
+ /*#__PURE__*/ _jsx(ItemTitle, {
76
+ children: "Default Variant"
77
+ }),
78
+ /*#__PURE__*/ _jsx(ItemDescription, {
79
+ children: "Standard styling with subtle background and borders."
80
+ })
81
+ ]
82
+ }),
83
+ /*#__PURE__*/ _jsx(ItemActions, {
84
+ className: "pt-8",
85
+ children: /*#__PURE__*/ _jsx(Button, {
86
+ variant: "secondary",
87
+ size: "sm",
88
+ children: "Action"
89
+ })
90
+ })
91
+ ]
92
+ }),
93
+ /*#__PURE__*/ _jsxs(Item, {
94
+ variant: "neutral",
95
+ className: "px-12 py-12",
96
+ children: [
97
+ /*#__PURE__*/ _jsxs(ItemContent, {
98
+ children: [
99
+ /*#__PURE__*/ _jsx(ItemTitle, {
100
+ children: "Neutral Variant"
101
+ }),
102
+ /*#__PURE__*/ _jsx(ItemDescription, {
103
+ children: "Neutral style with subtle background and borders."
104
+ })
105
+ ]
106
+ }),
107
+ /*#__PURE__*/ _jsx(ItemActions, {
108
+ className: "pt-8",
109
+ children: /*#__PURE__*/ _jsx(Button, {
110
+ variant: "primary",
111
+ size: "sm",
112
+ children: "Action"
113
+ })
114
+ })
115
+ ]
116
+ })
117
+ ]
118
+ })
119
+ };
120
+ export const ImportPastJobsModal = {
121
+ args: {},
122
+ render: ()=>/*#__PURE__*/ _jsx("div", {
123
+ className: "flex w-full max-w-lg flex-col",
124
+ children: /*#__PURE__*/ _jsxs(Item, {
125
+ variant: "neutral",
126
+ children: [
127
+ /*#__PURE__*/ _jsxs(ItemHeader, {
128
+ className: "justify-between px-24 py-16",
129
+ children: [
130
+ /*#__PURE__*/ _jsx(ItemTitle, {
131
+ className: "text-lg font-medium text-foreground-neutral-base",
132
+ children: "Import past jobs from Github"
133
+ }),
134
+ /*#__PURE__*/ _jsxs("div", {
135
+ className: "flex items-center gap-8",
136
+ children: [
137
+ /*#__PURE__*/ _jsx("kbd", {
138
+ className: "flex items-center justify-center rounded-8 border border-border-neutral-base shadow-button-neutral bg-background-field-base text-xs text-foreground-neutral-subtle px-4",
139
+ children: "esc"
140
+ }),
141
+ /*#__PURE__*/ _jsx(Button, {
142
+ variant: "transparent",
143
+ size: "xs",
144
+ className: "rounded-4 p-2 cursor-pointer bg-transparent border-none text-foreground-neutral-muted hover:text-foreground-neutral-base hover:bg-background-components-hover transition-colors duration-150 outline-none focus-visible:ring-2 focus-visible:ring-background-accent-blue-base focus-visible:ring-offset-2 w-24 h-24",
145
+ children: /*#__PURE__*/ _jsx(Icon, {
146
+ name: "close"
147
+ })
148
+ })
149
+ ]
150
+ })
151
+ ]
152
+ }),
153
+ /*#__PURE__*/ _jsx(ItemSeparator, {}),
154
+ /*#__PURE__*/ _jsxs(ItemContent, {
155
+ className: "px-24 py-16",
156
+ children: [
157
+ /*#__PURE__*/ _jsx(ItemDescription, {
158
+ className: "mb-16 text-sm text-foreground-neutral-subtle",
159
+ children: "Backfill your CI history by importing past runs from your Github repo. We'll handle the rest by creating a background task to import the data for you."
160
+ }),
161
+ /*#__PURE__*/ _jsxs("div", {
162
+ className: "flex flex-col gap-20",
163
+ children: [
164
+ /*#__PURE__*/ _jsxs("div", {
165
+ className: "flex flex-col gap-8",
166
+ children: [
167
+ /*#__PURE__*/ _jsx(Label, {
168
+ htmlFor: "repo-owner",
169
+ children: "Repository owner"
170
+ }),
171
+ /*#__PURE__*/ _jsx(Input, {
172
+ id: "repo-owner",
173
+ type: "text",
174
+ defaultValue: "apache"
175
+ })
176
+ ]
177
+ }),
178
+ /*#__PURE__*/ _jsxs("div", {
179
+ className: "flex flex-col gap-8",
180
+ children: [
181
+ /*#__PURE__*/ _jsx(Label, {
182
+ htmlFor: "repo-name",
183
+ children: "Repository name"
184
+ }),
185
+ /*#__PURE__*/ _jsx(Input, {
186
+ id: "repo-name",
187
+ type: "text",
188
+ defaultValue: "kafka"
189
+ })
190
+ ]
191
+ }),
192
+ /*#__PURE__*/ _jsxs("div", {
193
+ className: "flex flex-col gap-8",
194
+ children: [
195
+ /*#__PURE__*/ _jsx(Label, {
196
+ htmlFor: "start-date",
197
+ children: "Start date"
198
+ }),
199
+ /*#__PURE__*/ _jsx(Input, {
200
+ id: "start-date",
201
+ type: "datetime-local",
202
+ defaultValue: "September 5th, 2025",
203
+ className: "pl-32"
204
+ })
205
+ ]
206
+ })
207
+ ]
208
+ })
209
+ ]
210
+ }),
211
+ /*#__PURE__*/ _jsx(ItemSeparator, {}),
212
+ /*#__PURE__*/ _jsxs(ItemFooter, {
213
+ className: "justify-end gap-8 px-24 py-16",
214
+ children: [
215
+ /*#__PURE__*/ _jsx(Button, {
216
+ variant: "transparent",
217
+ size: "sm",
218
+ children: "Cancel"
219
+ }),
220
+ /*#__PURE__*/ _jsx(Button, {
221
+ variant: "primary",
222
+ size: "sm",
223
+ children: "Import"
224
+ })
225
+ ]
226
+ })
227
+ ]
228
+ })
229
+ })
230
+ };
231
+
232
+ //# sourceMappingURL=item.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/item/item.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {Button} from 'components/button/button';\nimport {Icon} from 'components/icon/icon';\nimport {Input} from 'components/input/input';\nimport {Label} from 'components/label/label';\nimport {\n Item,\n ItemActions,\n ItemContent,\n ItemDescription,\n ItemFooter,\n ItemGroup,\n ItemHeader,\n ItemSeparator,\n ItemTitle,\n} from './item';\n\nconst meta = {\n title: 'Components/Item',\n component: Item,\n tags: ['autodocs'],\n argTypes: {\n variant: {\n control: 'select',\n options: ['default', 'neutral'],\n },\n size: {\n control: 'select',\n options: ['default', 'sm'],\n },\n },\n args: {\n variant: 'default',\n size: 'default',\n },\n} satisfies Meta<typeof Item>;\n\nexport default meta;\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n args: {\n variant: 'default',\n },\n render: (args) => (\n <Item {...args} className=\"px-12 py-12\">\n <ItemContent>\n <ItemTitle>Basic Item</ItemTitle>\n <ItemDescription>A simple item with title and description.</ItemDescription>\n </ItemContent>\n <ItemActions className=\"pt-8\">\n <Button variant=\"secondary\" size=\"sm\">\n Action\n </Button>\n </ItemActions>\n </Item>\n ),\n};\n\nexport const Variants: Story = {\n args: {},\n render: () => (\n <ItemGroup className=\"flex w-full max-w-md flex-col gap-12\">\n <Item variant=\"default\" className=\"px-12 py-12\">\n <ItemContent>\n <ItemTitle>Default Variant</ItemTitle>\n <ItemDescription>Standard styling with subtle background and borders.</ItemDescription>\n </ItemContent>\n <ItemActions className=\"pt-8\">\n <Button variant=\"secondary\" size=\"sm\">\n Action\n </Button>\n </ItemActions>\n </Item>\n <Item variant=\"neutral\" className=\"px-12 py-12\">\n <ItemContent>\n <ItemTitle>Neutral Variant</ItemTitle>\n <ItemDescription>Neutral style with subtle background and borders.</ItemDescription>\n </ItemContent>\n <ItemActions className=\"pt-8\">\n <Button variant=\"primary\" size=\"sm\">\n Action\n </Button>\n </ItemActions>\n </Item>\n </ItemGroup>\n ),\n};\n\nexport const ImportPastJobsModal: Story = {\n args: {},\n render: () => (\n <div className=\"flex w-full max-w-lg flex-col\">\n <Item variant=\"neutral\">\n <ItemHeader className=\"justify-between px-24 py-16\">\n <ItemTitle className=\"text-lg font-medium text-foreground-neutral-base\">\n Import past jobs from Github\n </ItemTitle>\n <div className=\"flex items-center gap-8\">\n <kbd className=\"flex items-center justify-center rounded-8 border border-border-neutral-base shadow-button-neutral bg-background-field-base text-xs text-foreground-neutral-subtle px-4\">\n esc\n </kbd>\n <Button\n variant=\"transparent\"\n size=\"xs\"\n className=\"rounded-4 p-2 cursor-pointer bg-transparent border-none text-foreground-neutral-muted hover:text-foreground-neutral-base hover:bg-background-components-hover transition-colors duration-150 outline-none focus-visible:ring-2 focus-visible:ring-background-accent-blue-base focus-visible:ring-offset-2 w-24 h-24\"\n >\n <Icon name=\"close\" />\n </Button>\n </div>\n </ItemHeader>\n <ItemSeparator />\n <ItemContent className=\"px-24 py-16\">\n <ItemDescription className=\"mb-16 text-sm text-foreground-neutral-subtle\">\n Backfill your CI history by importing past runs from your Github repo. We'll handle the\n rest by creating a background task to import the data for you.\n </ItemDescription>\n <div className=\"flex flex-col gap-20\">\n <div className=\"flex flex-col gap-8\">\n <Label htmlFor=\"repo-owner\">Repository owner</Label>\n <Input id=\"repo-owner\" type=\"text\" defaultValue=\"apache\" />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Label htmlFor=\"repo-name\">Repository name</Label>\n <Input id=\"repo-name\" type=\"text\" defaultValue=\"kafka\" />\n </div>\n <div className=\"flex flex-col gap-8\">\n <Label htmlFor=\"start-date\">Start date</Label>\n <Input\n id=\"start-date\"\n type=\"datetime-local\"\n defaultValue=\"September 5th, 2025\"\n className=\"pl-32\"\n />\n </div>\n </div>\n </ItemContent>\n <ItemSeparator />\n <ItemFooter className=\"justify-end gap-8 px-24 py-16\">\n <Button variant=\"transparent\" size=\"sm\">\n Cancel\n </Button>\n <Button variant=\"primary\" size=\"sm\">\n Import\n </Button>\n </ItemFooter>\n </Item>\n </div>\n ),\n};\n"],"names":["Button","Icon","Input","Label","Item","ItemActions","ItemContent","ItemDescription","ItemFooter","ItemGroup","ItemHeader","ItemSeparator","ItemTitle","meta","title","component","tags","argTypes","variant","control","options","size","args","Default","render","className","Variants","ImportPastJobsModal","div","kbd","name","htmlFor","id","type","defaultValue"],"mappings":";AACA,SAAQA,MAAM,QAAO,2BAA2B;AAChD,SAAQC,IAAI,QAAO,uBAAuB;AAC1C,SAAQC,KAAK,QAAO,yBAAyB;AAC7C,SAAQC,KAAK,QAAO,yBAAyB;AAC7C,SACEC,IAAI,EACJC,WAAW,EACXC,WAAW,EACXC,eAAe,EACfC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,aAAa,EACbC,SAAS,QACJ,SAAS;AAEhB,MAAMC,OAAO;IACXC,OAAO;IACPC,WAAWX;IACXY,MAAM;QAAC;KAAW;IAClBC,UAAU;QACRC,SAAS;YACPC,SAAS;YACTC,SAAS;gBAAC;gBAAW;aAAU;QACjC;QACAC,MAAM;YACJF,SAAS;YACTC,SAAS;gBAAC;gBAAW;aAAK;QAC5B;IACF;IACAE,MAAM;QACJJ,SAAS;QACTG,MAAM;IACR;AACF;AAEA,eAAeR,KAAK;AAGpB,OAAO,MAAMU,UAAiB;IAC5BD,MAAM;QACJJ,SAAS;IACX;IACAM,QAAQ,CAACF,qBACP,MAAClB;YAAM,GAAGkB,IAAI;YAAEG,WAAU;;8BACxB,MAACnB;;sCACC,KAACM;sCAAU;;sCACX,KAACL;sCAAgB;;;;8BAEnB,KAACF;oBAAYoB,WAAU;8BACrB,cAAA,KAACzB;wBAAOkB,SAAQ;wBAAYG,MAAK;kCAAK;;;;;AAM9C,EAAE;AAEF,OAAO,MAAMK,WAAkB;IAC7BJ,MAAM,CAAC;IACPE,QAAQ,kBACN,MAACf;YAAUgB,WAAU;;8BACnB,MAACrB;oBAAKc,SAAQ;oBAAUO,WAAU;;sCAChC,MAACnB;;8CACC,KAACM;8CAAU;;8CACX,KAACL;8CAAgB;;;;sCAEnB,KAACF;4BAAYoB,WAAU;sCACrB,cAAA,KAACzB;gCAAOkB,SAAQ;gCAAYG,MAAK;0CAAK;;;;;8BAK1C,MAACjB;oBAAKc,SAAQ;oBAAUO,WAAU;;sCAChC,MAACnB;;8CACC,KAACM;8CAAU;;8CACX,KAACL;8CAAgB;;;;sCAEnB,KAACF;4BAAYoB,WAAU;sCACrB,cAAA,KAACzB;gCAAOkB,SAAQ;gCAAUG,MAAK;0CAAK;;;;;;;AAO9C,EAAE;AAEF,OAAO,MAAMM,sBAA6B;IACxCL,MAAM,CAAC;IACPE,QAAQ,kBACN,KAACI;YAAIH,WAAU;sBACb,cAAA,MAACrB;gBAAKc,SAAQ;;kCACZ,MAACR;wBAAWe,WAAU;;0CACpB,KAACb;gCAAUa,WAAU;0CAAmD;;0CAGxE,MAACG;gCAAIH,WAAU;;kDACb,KAACI;wCAAIJ,WAAU;kDAA0K;;kDAGzL,KAACzB;wCACCkB,SAAQ;wCACRG,MAAK;wCACLI,WAAU;kDAEV,cAAA,KAACxB;4CAAK6B,MAAK;;;;;;;kCAIjB,KAACnB;kCACD,MAACL;wBAAYmB,WAAU;;0CACrB,KAAClB;gCAAgBkB,WAAU;0CAA+C;;0CAI1E,MAACG;gCAAIH,WAAU;;kDACb,MAACG;wCAAIH,WAAU;;0DACb,KAACtB;gDAAM4B,SAAQ;0DAAa;;0DAC5B,KAAC7B;gDAAM8B,IAAG;gDAAaC,MAAK;gDAAOC,cAAa;;;;kDAElD,MAACN;wCAAIH,WAAU;;0DACb,KAACtB;gDAAM4B,SAAQ;0DAAY;;0DAC3B,KAAC7B;gDAAM8B,IAAG;gDAAYC,MAAK;gDAAOC,cAAa;;;;kDAEjD,MAACN;wCAAIH,WAAU;;0DACb,KAACtB;gDAAM4B,SAAQ;0DAAa;;0DAC5B,KAAC7B;gDACC8B,IAAG;gDACHC,MAAK;gDACLC,cAAa;gDACbT,WAAU;;;;;;;;kCAKlB,KAACd;kCACD,MAACH;wBAAWiB,WAAU;;0CACpB,KAACzB;gCAAOkB,SAAQ;gCAAcG,MAAK;0CAAK;;0CAGxC,KAACrB;gCAAOkB,SAAQ;gCAAUG,MAAK;0CAAK;;;;;;;AAO9C,EAAE"}
@@ -0,0 +1,2 @@
1
+ export * from './label';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/label/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './label.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/label/index.ts"],"sourcesContent":["export * from './label';\n"],"names":[],"mappings":"AAAA,cAAc,UAAU"}
@@ -0,0 +1,7 @@
1
+ import * as LabelPrimitive from '@radix-ui/react-label';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ import type { ComponentProps } from 'react';
4
+ export declare const labelVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
5
+ export type LabelProps = ComponentProps<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>;
6
+ export declare function Label({ className, ...props }: LabelProps): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../src/components/label/label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAM,KAAK,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAG1C,eAAO,MAAM,aAAa,oFAEzB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,GACjE,YAAY,CAAC,OAAO,aAAa,CAAC,CAAC;AAErC,wBAAgB,KAAK,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,UAAU,2CAEtD"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as LabelPrimitive from '@radix-ui/react-label';
3
+ import { cva } from 'class-variance-authority';
4
+ import { cn } from '../../utils/cn.js';
5
+ export const labelVariants = cva('text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70');
6
+ export function Label({ className, ...props }) {
7
+ return /*#__PURE__*/ _jsx(LabelPrimitive.Root, {
8
+ className: cn(labelVariants(), className),
9
+ ...props
10
+ });
11
+ }
12
+
13
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/label/label.tsx"],"sourcesContent":["import * as LabelPrimitive from '@radix-ui/react-label';\nimport {cva, type VariantProps} from 'class-variance-authority';\nimport type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\n\nexport const labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n);\n\nexport type LabelProps = ComponentProps<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>;\n\nexport function Label({className, ...props}: LabelProps) {\n return <LabelPrimitive.Root className={cn(labelVariants(), className)} {...props} />;\n}\n"],"names":["LabelPrimitive","cva","cn","labelVariants","Label","className","props","Root"],"mappings":";AAAA,YAAYA,oBAAoB,wBAAwB;AACxD,SAAQC,GAAG,QAA0B,2BAA2B;AAEhE,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,MAAMC,gBAAgBF,IAC3B,8FACA;AAKF,OAAO,SAASG,MAAM,EAACC,SAAS,EAAE,GAAGC,OAAkB;IACrD,qBAAO,KAACN,eAAeO,IAAI;QAACF,WAAWH,GAAGC,iBAAiBE;QAAa,GAAGC,KAAK;;AAClF"}
@@ -0,0 +1,105 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Checkbox } from '../../components/checkbox/index.js';
3
+ import { Input } from '../../components/input/input.js';
4
+ import { Textarea } from '../../components/textarea/index.js';
5
+ import { Label } from './label.js';
6
+ const meta = {
7
+ title: 'Components/Label',
8
+ component: Label,
9
+ tags: [
10
+ 'autodocs'
11
+ ],
12
+ argTypes: {
13
+ htmlFor: {
14
+ control: 'text'
15
+ }
16
+ }
17
+ };
18
+ export default meta;
19
+ export const Default = {
20
+ render: ()=>/*#__PURE__*/ _jsxs("div", {
21
+ className: "flex flex-col gap-8",
22
+ children: [
23
+ /*#__PURE__*/ _jsx(Label, {
24
+ htmlFor: "email",
25
+ children: "Email"
26
+ }),
27
+ /*#__PURE__*/ _jsx(Input, {
28
+ id: "email",
29
+ type: "email",
30
+ placeholder: "Enter your email"
31
+ })
32
+ ]
33
+ })
34
+ };
35
+ export const WithCheckbox = {
36
+ render: ()=>/*#__PURE__*/ _jsxs("div", {
37
+ className: "flex items-center gap-8",
38
+ children: [
39
+ /*#__PURE__*/ _jsx(Checkbox, {
40
+ id: "terms"
41
+ }),
42
+ /*#__PURE__*/ _jsx(Label, {
43
+ htmlFor: "terms",
44
+ children: "Accept terms and conditions"
45
+ })
46
+ ]
47
+ })
48
+ };
49
+ export const WithTextarea = {
50
+ render: ()=>/*#__PURE__*/ _jsxs("div", {
51
+ className: "flex flex-col gap-8",
52
+ children: [
53
+ /*#__PURE__*/ _jsx(Label, {
54
+ htmlFor: "message",
55
+ children: "Message"
56
+ }),
57
+ /*#__PURE__*/ _jsx(Textarea, {
58
+ id: "message",
59
+ placeholder: "Enter your message"
60
+ })
61
+ ]
62
+ })
63
+ };
64
+ export const Required = {
65
+ render: ()=>/*#__PURE__*/ _jsxs("div", {
66
+ className: "flex flex-col gap-8",
67
+ children: [
68
+ /*#__PURE__*/ _jsxs(Label, {
69
+ htmlFor: "required-field",
70
+ children: [
71
+ "Required Field ",
72
+ /*#__PURE__*/ _jsx("span", {
73
+ className: "text-foreground-highlight-error",
74
+ children: "*"
75
+ })
76
+ ]
77
+ }),
78
+ /*#__PURE__*/ _jsx(Input, {
79
+ id: "required-field",
80
+ type: "text",
81
+ placeholder: "This field is required"
82
+ })
83
+ ]
84
+ })
85
+ };
86
+ export const Disabled = {
87
+ render: ()=>/*#__PURE__*/ _jsxs("div", {
88
+ className: "flex flex-col gap-8",
89
+ children: [
90
+ /*#__PURE__*/ _jsx(Label, {
91
+ htmlFor: "disabled-field",
92
+ className: "opacity-50",
93
+ children: "Disabled Field"
94
+ }),
95
+ /*#__PURE__*/ _jsx(Input, {
96
+ id: "disabled-field",
97
+ type: "text",
98
+ placeholder: "Disabled input",
99
+ disabled: true
100
+ })
101
+ ]
102
+ })
103
+ };
104
+
105
+ //# sourceMappingURL=label.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/label/label.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {Checkbox} from 'components/checkbox';\nimport {Input} from 'components/input/input';\nimport {Textarea} from 'components/textarea';\nimport {Label} from './label';\n\nconst meta = {\n title: 'Components/Label',\n component: Label,\n tags: ['autodocs'],\n argTypes: {\n htmlFor: {control: 'text'},\n },\n} satisfies Meta<typeof Label>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n render: () => (\n <div className=\"flex flex-col gap-8\">\n <Label htmlFor=\"email\">Email</Label>\n <Input id=\"email\" type=\"email\" placeholder=\"Enter your email\" />\n </div>\n ),\n};\n\nexport const WithCheckbox: Story = {\n render: () => (\n <div className=\"flex items-center gap-8\">\n <Checkbox id=\"terms\" />\n <Label htmlFor=\"terms\">Accept terms and conditions</Label>\n </div>\n ),\n};\n\nexport const WithTextarea: Story = {\n render: () => (\n <div className=\"flex flex-col gap-8\">\n <Label htmlFor=\"message\">Message</Label>\n <Textarea id=\"message\" placeholder=\"Enter your message\" />\n </div>\n ),\n};\n\nexport const Required: Story = {\n render: () => (\n <div className=\"flex flex-col gap-8\">\n <Label htmlFor=\"required-field\">\n Required Field <span className=\"text-foreground-highlight-error\">*</span>\n </Label>\n <Input id=\"required-field\" type=\"text\" placeholder=\"This field is required\" />\n </div>\n ),\n};\n\nexport const Disabled: Story = {\n render: () => (\n <div className=\"flex flex-col gap-8\">\n <Label htmlFor=\"disabled-field\" className=\"opacity-50\">\n Disabled Field\n </Label>\n <Input id=\"disabled-field\" type=\"text\" placeholder=\"Disabled input\" disabled />\n </div>\n ),\n};\n"],"names":["Checkbox","Input","Textarea","Label","meta","title","component","tags","argTypes","htmlFor","control","Default","render","div","className","id","type","placeholder","WithCheckbox","WithTextarea","Required","span","Disabled","disabled"],"mappings":";AACA,SAAQA,QAAQ,QAAO,sBAAsB;AAC7C,SAAQC,KAAK,QAAO,yBAAyB;AAC7C,SAAQC,QAAQ,QAAO,sBAAsB;AAC7C,SAAQC,KAAK,QAAO,UAAU;AAE9B,MAAMC,OAAO;IACXC,OAAO;IACPC,WAAWH;IACXI,MAAM;QAAC;KAAW;IAClBC,UAAU;QACRC,SAAS;YAACC,SAAS;QAAM;IAC3B;AACF;AAEA,eAAeN,KAAK;AAIpB,OAAO,MAAMO,UAAiB;IAC5BC,QAAQ,kBACN,MAACC;YAAIC,WAAU;;8BACb,KAACX;oBAAMM,SAAQ;8BAAQ;;8BACvB,KAACR;oBAAMc,IAAG;oBAAQC,MAAK;oBAAQC,aAAY;;;;AAGjD,EAAE;AAEF,OAAO,MAAMC,eAAsB;IACjCN,QAAQ,kBACN,MAACC;YAAIC,WAAU;;8BACb,KAACd;oBAASe,IAAG;;8BACb,KAACZ;oBAAMM,SAAQ;8BAAQ;;;;AAG7B,EAAE;AAEF,OAAO,MAAMU,eAAsB;IACjCP,QAAQ,kBACN,MAACC;YAAIC,WAAU;;8BACb,KAACX;oBAAMM,SAAQ;8BAAU;;8BACzB,KAACP;oBAASa,IAAG;oBAAUE,aAAY;;;;AAGzC,EAAE;AAEF,OAAO,MAAMG,WAAkB;IAC7BR,QAAQ,kBACN,MAACC;YAAIC,WAAU;;8BACb,MAACX;oBAAMM,SAAQ;;wBAAiB;sCACf,KAACY;4BAAKP,WAAU;sCAAkC;;;;8BAEnE,KAACb;oBAAMc,IAAG;oBAAiBC,MAAK;oBAAOC,aAAY;;;;AAGzD,EAAE;AAEF,OAAO,MAAMK,WAAkB;IAC7BV,QAAQ,kBACN,MAACC;YAAIC,WAAU;;8BACb,KAACX;oBAAMM,SAAQ;oBAAiBK,WAAU;8BAAa;;8BAGvD,KAACb;oBAAMc,IAAG;oBAAiBC,MAAK;oBAAOC,aAAY;oBAAiBM,QAAQ;;;;AAGlF,EAAE"}
@@ -0,0 +1,9 @@
1
+ import type { ComponentProps } from 'react';
2
+ export type MovingBorderProps = {
3
+ children: React.ReactNode;
4
+ duration?: number;
5
+ rx?: string;
6
+ ry?: string;
7
+ } & ComponentProps<'svg'>;
8
+ export declare function MovingBorder({ children, duration, rx, ry, ...otherProps }: MovingBorderProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=moving-border.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moving-border.d.ts","sourceRoot":"","sources":["../../../src/components/moving-border/moving-border.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAG1C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAE1B,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,QAAe,EACf,EAAE,EACF,EAAE,EACF,GAAG,UAAU,EACd,EAAE,iBAAiB,2CA2CnB"}
@@ -0,0 +1,54 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { motion, useAnimationFrame, useMotionTemplate, useMotionValue, useTransform } from 'framer-motion';
3
+ import { useRef } from 'react';
4
+ export function MovingBorder({ children, duration = 3000, rx, ry, ...otherProps }) {
5
+ const pathRef = useRef(null);
6
+ const progress = useMotionValue(0);
7
+ useAnimationFrame((time)=>{
8
+ const length = pathRef.current?.getTotalLength();
9
+ if (length) {
10
+ const pxPerMillisecond = length / duration;
11
+ progress.set(time * pxPerMillisecond % length);
12
+ }
13
+ });
14
+ const x = useTransform(progress, (val)=>pathRef.current?.getPointAtLength(val)?.x ?? 0);
15
+ const y = useTransform(progress, (val)=>pathRef.current?.getPointAtLength(val)?.y ?? 0);
16
+ const transform = useMotionTemplate`translateX(${x}px) translateY(${y}px) translateX(-50%) translateY(-50%)`;
17
+ return /*#__PURE__*/ _jsxs(_Fragment, {
18
+ children: [
19
+ /*#__PURE__*/ _jsxs("svg", {
20
+ xmlns: "http://www.w3.org/2000/svg",
21
+ preserveAspectRatio: "none",
22
+ className: "absolute h-full w-full",
23
+ width: "100%",
24
+ height: "100%",
25
+ ...otherProps,
26
+ children: [
27
+ /*#__PURE__*/ _jsx("title", {
28
+ children: "Moving Border"
29
+ }),
30
+ /*#__PURE__*/ _jsx("rect", {
31
+ fill: "none",
32
+ width: "100%",
33
+ height: "100%",
34
+ rx: rx,
35
+ ry: ry,
36
+ ref: pathRef
37
+ })
38
+ ]
39
+ }),
40
+ /*#__PURE__*/ _jsx(motion.div, {
41
+ style: {
42
+ position: 'absolute',
43
+ top: 0,
44
+ left: 0,
45
+ display: 'inline-block',
46
+ transform
47
+ },
48
+ children: children
49
+ })
50
+ ]
51
+ });
52
+ }
53
+
54
+ //# sourceMappingURL=moving-border.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/moving-border/moving-border.tsx"],"sourcesContent":["import {\n motion,\n useAnimationFrame,\n useMotionTemplate,\n useMotionValue,\n useTransform,\n} from 'framer-motion';\nimport type {ComponentProps} from 'react';\nimport {useRef} from 'react';\n\nexport type MovingBorderProps = {\n children: React.ReactNode;\n duration?: number;\n rx?: string;\n ry?: string;\n} & ComponentProps<'svg'>;\n\nexport function MovingBorder({\n children,\n duration = 3000,\n rx,\n ry,\n ...otherProps\n}: MovingBorderProps) {\n const pathRef = useRef<SVGRectElement | null>(null);\n const progress = useMotionValue<number>(0);\n\n useAnimationFrame((time: number) => {\n const length = pathRef.current?.getTotalLength();\n if (length) {\n const pxPerMillisecond = length / duration;\n progress.set((time * pxPerMillisecond) % length);\n }\n });\n\n const x = useTransform(progress, (val: number) => pathRef.current?.getPointAtLength(val)?.x ?? 0);\n const y = useTransform(progress, (val: number) => pathRef.current?.getPointAtLength(val)?.y ?? 0);\n\n const transform = useMotionTemplate`translateX(${x}px) translateY(${y}px) translateX(-50%) translateY(-50%)`;\n\n return (\n <>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n preserveAspectRatio=\"none\"\n className=\"absolute h-full w-full\"\n width=\"100%\"\n height=\"100%\"\n {...otherProps}\n >\n <title>Moving Border</title>\n <rect fill=\"none\" width=\"100%\" height=\"100%\" rx={rx} ry={ry} ref={pathRef} />\n </svg>\n <motion.div\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n display: 'inline-block',\n transform,\n }}\n >\n {children}\n </motion.div>\n </>\n );\n}\n"],"names":["motion","useAnimationFrame","useMotionTemplate","useMotionValue","useTransform","useRef","MovingBorder","children","duration","rx","ry","otherProps","pathRef","progress","time","length","current","getTotalLength","pxPerMillisecond","set","x","val","getPointAtLength","y","transform","svg","xmlns","preserveAspectRatio","className","width","height","title","rect","fill","ref","div","style","position","top","left","display"],"mappings":";AAAA,SACEA,MAAM,EACNC,iBAAiB,EACjBC,iBAAiB,EACjBC,cAAc,EACdC,YAAY,QACP,gBAAgB;AAEvB,SAAQC,MAAM,QAAO,QAAQ;AAS7B,OAAO,SAASC,aAAa,EAC3BC,QAAQ,EACRC,WAAW,IAAI,EACfC,EAAE,EACFC,EAAE,EACF,GAAGC,YACe;IAClB,MAAMC,UAAUP,OAA8B;IAC9C,MAAMQ,WAAWV,eAAuB;IAExCF,kBAAkB,CAACa;QACjB,MAAMC,SAASH,QAAQI,OAAO,EAAEC;QAChC,IAAIF,QAAQ;YACV,MAAMG,mBAAmBH,SAASP;YAClCK,SAASM,GAAG,CAAC,AAACL,OAAOI,mBAAoBH;QAC3C;IACF;IAEA,MAAMK,IAAIhB,aAAaS,UAAU,CAACQ,MAAgBT,QAAQI,OAAO,EAAEM,iBAAiBD,MAAMD,KAAK;IAC/F,MAAMG,IAAInB,aAAaS,UAAU,CAACQ,MAAgBT,QAAQI,OAAO,EAAEM,iBAAiBD,MAAME,KAAK;IAE/F,MAAMC,YAAYtB,iBAAiB,CAAC,WAAW,EAAEkB,EAAE,eAAe,EAAEG,EAAE,qCAAqC,CAAC;IAE5G,qBACE;;0BACE,MAACE;gBACCC,OAAM;gBACNC,qBAAoB;gBACpBC,WAAU;gBACVC,OAAM;gBACNC,QAAO;gBACN,GAAGnB,UAAU;;kCAEd,KAACoB;kCAAM;;kCACP,KAACC;wBAAKC,MAAK;wBAAOJ,OAAM;wBAAOC,QAAO;wBAAOrB,IAAIA;wBAAIC,IAAIA;wBAAIwB,KAAKtB;;;;0BAEpE,KAACZ,OAAOmC,GAAG;gBACTC,OAAO;oBACLC,UAAU;oBACVC,KAAK;oBACLC,MAAM;oBACNC,SAAS;oBACThB;gBACF;0BAECjB;;;;AAIT"}
@@ -20,7 +20,7 @@ export const textareaVariants = cva('', {
20
20
  export function Textarea({ className, variant, size, ...props }) {
21
21
  return /*#__PURE__*/ _jsx("textarea", {
22
22
  "data-slot": "textarea",
23
- className: cn('textarea-resize-custom placeholder:text-foreground-neutral-muted w-full min-w-0 rounded-6 px-8 pr-24 text-sm leading-20 text-foreground-neutral-base shadow-border-base transition-[color,box-shadow] outline-none', 'hover:bg-background-field-hover', 'selection:bg-background-accent-neutral-soft selection:text-foreground-neutral-on-inverted', 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-background-neutral-disabled disabled:shadow-none disabled:text-foreground-neutral-disabled', 'focus-visible:shadow-border-interactive-with-active', 'aria-invalid:shadow-border-error', textareaVariants({
23
+ className: cn('textarea-resize-custom placeholder:text-foreground-neutral-muted w-full min-w-0 rounded-6 px-8 pr-24 text-sm leading-20 text-foreground-neutral-base shadow-button-neutral transition-[color,box-shadow] outline-none', 'hover:bg-background-field-hover', 'selection:bg-background-accent-neutral-soft selection:text-foreground-neutral-on-inverted', 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-background-neutral-disabled disabled:shadow-none disabled:text-foreground-neutral-disabled', 'focus-visible:shadow-border-interactive-with-active', 'aria-invalid:shadow-border-error', textareaVariants({
24
24
  variant,
25
25
  size
26
26
  }), className),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/textarea/textarea.tsx"],"sourcesContent":["import {cva, type VariantProps} from 'class-variance-authority';\nimport type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\n\nexport const textareaVariants = cva('', {\n variants: {\n variant: {\n base: 'bg-background-field-base',\n component: 'bg-background-field-component',\n },\n size: {\n base: 'py-6',\n small: 'py-4',\n },\n },\n defaultVariants: {\n variant: 'base',\n size: 'base',\n },\n});\n\ntype TextareaProps = Omit<ComponentProps<'textarea'>, 'size'> &\n VariantProps<typeof textareaVariants>;\n\nexport function Textarea({className, variant, size, ...props}: TextareaProps) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'textarea-resize-custom placeholder:text-foreground-neutral-muted w-full min-w-0 rounded-6 px-8 pr-24 text-sm leading-20 text-foreground-neutral-base shadow-border-base transition-[color,box-shadow] outline-none',\n 'hover:bg-background-field-hover',\n 'selection:bg-background-accent-neutral-soft selection:text-foreground-neutral-on-inverted',\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-background-neutral-disabled disabled:shadow-none disabled:text-foreground-neutral-disabled',\n 'focus-visible:shadow-border-interactive-with-active',\n 'aria-invalid:shadow-border-error',\n textareaVariants({variant, size}),\n className,\n )}\n {...props}\n />\n );\n}\n"],"names":["cva","cn","textareaVariants","variants","variant","base","component","size","small","defaultVariants","Textarea","className","props","textarea","data-slot"],"mappings":";AAAA,SAAQA,GAAG,QAA0B,2BAA2B;AAEhE,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,MAAMC,mBAAmBF,IAAI,IAAI;IACtCG,UAAU;QACRC,SAAS;YACPC,MAAM;YACNC,WAAW;QACb;QACAC,MAAM;YACJF,MAAM;YACNG,OAAO;QACT;IACF;IACAC,iBAAiB;QACfL,SAAS;QACTG,MAAM;IACR;AACF,GAAG;AAKH,OAAO,SAASG,SAAS,EAACC,SAAS,EAAEP,OAAO,EAAEG,IAAI,EAAE,GAAGK,OAAqB;IAC1E,qBACE,KAACC;QACCC,aAAU;QACVH,WAAWV,GACT,sNACA,mCACA,6FACA,mKACA,uDACA,oCACAC,iBAAiB;YAACE;YAASG;QAAI,IAC/BI;QAED,GAAGC,KAAK;;AAGf"}
1
+ {"version":3,"sources":["../../../src/components/textarea/textarea.tsx"],"sourcesContent":["import {cva, type VariantProps} from 'class-variance-authority';\nimport type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\n\nexport const textareaVariants = cva('', {\n variants: {\n variant: {\n base: 'bg-background-field-base',\n component: 'bg-background-field-component',\n },\n size: {\n base: 'py-6',\n small: 'py-4',\n },\n },\n defaultVariants: {\n variant: 'base',\n size: 'base',\n },\n});\n\ntype TextareaProps = Omit<ComponentProps<'textarea'>, 'size'> &\n VariantProps<typeof textareaVariants>;\n\nexport function Textarea({className, variant, size, ...props}: TextareaProps) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'textarea-resize-custom placeholder:text-foreground-neutral-muted w-full min-w-0 rounded-6 px-8 pr-24 text-sm leading-20 text-foreground-neutral-base shadow-button-neutral transition-[color,box-shadow] outline-none',\n 'hover:bg-background-field-hover',\n 'selection:bg-background-accent-neutral-soft selection:text-foreground-neutral-on-inverted',\n 'disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-background-neutral-disabled disabled:shadow-none disabled:text-foreground-neutral-disabled',\n 'focus-visible:shadow-border-interactive-with-active',\n 'aria-invalid:shadow-border-error',\n textareaVariants({variant, size}),\n className,\n )}\n {...props}\n />\n );\n}\n"],"names":["cva","cn","textareaVariants","variants","variant","base","component","size","small","defaultVariants","Textarea","className","props","textarea","data-slot"],"mappings":";AAAA,SAAQA,GAAG,QAA0B,2BAA2B;AAEhE,SAAQC,EAAE,QAAO,WAAW;AAE5B,OAAO,MAAMC,mBAAmBF,IAAI,IAAI;IACtCG,UAAU;QACRC,SAAS;YACPC,MAAM;YACNC,WAAW;QACb;QACAC,MAAM;YACJF,MAAM;YACNG,OAAO;QACT;IACF;IACAC,iBAAiB;QACfL,SAAS;QACTG,MAAM;IACR;AACF,GAAG;AAKH,OAAO,SAASG,SAAS,EAACC,SAAS,EAAEP,OAAO,EAAEG,IAAI,EAAE,GAAGK,OAAqB;IAC1E,qBACE,KAACC;QACCC,aAAU;QACVH,WAAWV,GACT,yNACA,mCACA,6FACA,mKACA,uDACA,oCACAC,iBAAiB;YAACE;YAASG;QAAI,IAC/BI;QAED,GAAGC,KAAK;;AAGf"}
@@ -0,0 +1,2 @@
1
+ export * from './theme-provider';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/theme/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './theme-provider.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/theme/index.ts"],"sourcesContent":["export * from './theme-provider';\n"],"names":[],"mappings":"AAAA,cAAc,mBAAmB"}
@@ -1,5 +1,5 @@
1
1
  import { type ReactNode } from 'react';
2
- import { type Theme } from '../state/theme';
2
+ import { type Theme } from '../../state/theme';
3
3
  type ThemeProviderProps = {
4
4
  children: ReactNode;
5
5
  defaultTheme?: Theme;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-provider.d.ts","sourceRoot":"","sources":["../../../src/components/theme/theme-provider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,SAAS,EAAsB,MAAM,OAAO,CAAC;AAC1D,OAAO,EAAC,KAAK,KAAK,EAAuB,MAAM,aAAa,CAAC;AAE7D,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,YAAuB,EACvB,UAA4B,EAC5B,GAAG,KAAK,EACT,EAAE,kBAAkB,2CAmCpB"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
- import { ThemeProviderContext } from '../state/theme.js';
3
+ import { ThemeProviderContext } from '../../state/theme.js';
4
4
  export function ThemeProvider({ children, defaultTheme = 'system', storageKey = 'shipfox-theme', ...props }) {
5
5
  const [theme, setTheme] = useState(()=>localStorage.getItem(storageKey) || defaultTheme);
6
6
  useEffect(()=>{
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/theme/theme-provider.tsx"],"sourcesContent":["import {type ReactNode, useEffect, useState} from 'react';\nimport {type Theme, ThemeProviderContext} from 'state/theme';\n\ntype ThemeProviderProps = {\n children: ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n};\n\nexport function ThemeProvider({\n children,\n defaultTheme = 'system',\n storageKey = 'shipfox-theme',\n ...props\n}: ThemeProviderProps) {\n const [theme, setTheme] = useState<Theme>(\n () => (localStorage.getItem(storageKey) as Theme) || defaultTheme,\n );\n\n useEffect(() => {\n const root = window.document.documentElement;\n\n root.classList.remove('light', 'dark');\n\n if (theme === 'system') {\n const systemTheme = window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light';\n\n root.classList.add(systemTheme);\n return;\n }\n\n root.classList.add(theme);\n }, [theme]);\n\n const value = {\n theme,\n setTheme: (theme: Theme) => {\n localStorage.setItem(storageKey, theme);\n setTheme(theme);\n },\n };\n\n return (\n <ThemeProviderContext.Provider {...props} value={value}>\n {children}\n </ThemeProviderContext.Provider>\n );\n}\n"],"names":["useEffect","useState","ThemeProviderContext","ThemeProvider","children","defaultTheme","storageKey","props","theme","setTheme","localStorage","getItem","root","window","document","documentElement","classList","remove","systemTheme","matchMedia","matches","add","value","setItem","Provider"],"mappings":";AAAA,SAAwBA,SAAS,EAAEC,QAAQ,QAAO,QAAQ;AAC1D,SAAoBC,oBAAoB,QAAO,cAAc;AAQ7D,OAAO,SAASC,cAAc,EAC5BC,QAAQ,EACRC,eAAe,QAAQ,EACvBC,aAAa,eAAe,EAC5B,GAAGC,OACgB;IACnB,MAAM,CAACC,OAAOC,SAAS,GAAGR,SACxB,IAAM,AAACS,aAAaC,OAAO,CAACL,eAAyBD;IAGvDL,UAAU;QACR,MAAMY,OAAOC,OAAOC,QAAQ,CAACC,eAAe;QAE5CH,KAAKI,SAAS,CAACC,MAAM,CAAC,SAAS;QAE/B,IAAIT,UAAU,UAAU;YACtB,MAAMU,cAAcL,OAAOM,UAAU,CAAC,gCAAgCC,OAAO,GACzE,SACA;YAEJR,KAAKI,SAAS,CAACK,GAAG,CAACH;YACnB;QACF;QAEAN,KAAKI,SAAS,CAACK,GAAG,CAACb;IACrB,GAAG;QAACA;KAAM;IAEV,MAAMc,QAAQ;QACZd;QACAC,UAAU,CAACD;YACTE,aAAaa,OAAO,CAACjB,YAAYE;YACjCC,SAASD;QACX;IACF;IAEA,qBACE,KAACN,qBAAqBsB,QAAQ;QAAE,GAAGjB,KAAK;QAAEe,OAAOA;kBAC9ClB;;AAGP"}
@@ -0,0 +1,3 @@
1
+ export { Toaster, type ToasterProps, toast } from './toast';
2
+ export { ToastCustom, type ToastCustomProps } from './toast-custom';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/toast/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,EAAC,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAC,WAAW,EAAE,KAAK,gBAAgB,EAAC,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { Toaster, toast } from './toast.js';
2
+ export { ToastCustom } from './toast-custom.js';
3
+
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/toast/index.ts"],"sourcesContent":["export {Toaster, type ToasterProps, toast} from './toast';\nexport {ToastCustom, type ToastCustomProps} from './toast-custom';\n"],"names":["Toaster","toast","ToastCustom"],"mappings":"AAAA,SAAQA,OAAO,EAAqBC,KAAK,QAAO,UAAU;AAC1D,SAAQC,WAAW,QAA8B,iBAAiB"}