@shipfox/react-ui 0.14.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 (232) 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 +10 -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 +4 -2
  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/dashboard/components/analytics-content.d.ts +2 -0
  32. package/dist/components/dashboard/components/analytics-content.d.ts.map +1 -0
  33. package/dist/components/dashboard/components/analytics-content.js +180 -0
  34. package/dist/components/dashboard/components/analytics-content.js.map +1 -0
  35. package/dist/components/dashboard/components/animated-logo.d.ts +4 -0
  36. package/dist/components/dashboard/components/animated-logo.d.ts.map +1 -0
  37. package/dist/components/dashboard/components/animated-logo.js +23 -0
  38. package/dist/components/dashboard/components/animated-logo.js.map +1 -0
  39. package/dist/components/dashboard/components/complete-setup-button.d.ts +4 -0
  40. package/dist/components/dashboard/components/complete-setup-button.d.ts.map +1 -0
  41. package/dist/components/dashboard/components/complete-setup-button.js +28 -0
  42. package/dist/components/dashboard/components/complete-setup-button.js.map +1 -0
  43. package/dist/components/dashboard/components/jobs-content.d.ts +2 -0
  44. package/dist/components/dashboard/components/jobs-content.d.ts.map +1 -0
  45. package/dist/components/dashboard/components/jobs-content.js +69 -0
  46. package/dist/components/dashboard/components/jobs-content.js.map +1 -0
  47. package/dist/components/dashboard/components/mobile-menu.d.ts +2 -0
  48. package/dist/components/dashboard/components/mobile-menu.d.ts.map +1 -0
  49. package/dist/components/dashboard/components/mobile-menu.js +65 -0
  50. package/dist/components/dashboard/components/mobile-menu.js.map +1 -0
  51. package/dist/components/dashboard/components/organization-selector.d.ts +2 -0
  52. package/dist/components/dashboard/components/organization-selector.d.ts.map +1 -0
  53. package/dist/components/dashboard/components/organization-selector.js +92 -0
  54. package/dist/components/dashboard/components/organization-selector.js.map +1 -0
  55. package/dist/components/dashboard/components/top-menu.d.ts +5 -0
  56. package/dist/components/dashboard/components/top-menu.d.ts.map +1 -0
  57. package/dist/components/dashboard/components/top-menu.js +31 -0
  58. package/dist/components/dashboard/components/top-menu.js.map +1 -0
  59. package/dist/components/dashboard/components/topbar-button.d.ts +7 -0
  60. package/dist/components/dashboard/components/topbar-button.d.ts.map +1 -0
  61. package/dist/components/dashboard/components/topbar-button.js +18 -0
  62. package/dist/components/dashboard/components/topbar-button.js.map +1 -0
  63. package/dist/components/dashboard/components/topbar.d.ts +4 -0
  64. package/dist/components/dashboard/components/topbar.d.ts.map +1 -0
  65. package/dist/components/dashboard/components/topbar.js +62 -0
  66. package/dist/components/dashboard/components/topbar.js.map +1 -0
  67. package/dist/components/dashboard/components/user-profile.d.ts +2 -0
  68. package/dist/components/dashboard/components/user-profile.d.ts.map +1 -0
  69. package/dist/components/dashboard/components/user-profile.js +146 -0
  70. package/dist/components/dashboard/components/user-profile.js.map +1 -0
  71. package/dist/components/dashboard/dashboard.d.ts +2 -0
  72. package/dist/components/dashboard/dashboard.d.ts.map +1 -0
  73. package/dist/components/dashboard/dashboard.js +70 -0
  74. package/dist/components/dashboard/dashboard.js.map +1 -0
  75. package/dist/components/dashboard/dashboard.stories.js +23 -0
  76. package/dist/components/dashboard/dashboard.stories.js.map +1 -0
  77. package/dist/components/dashboard/index.d.ts +2 -0
  78. package/dist/components/dashboard/index.d.ts.map +1 -0
  79. package/dist/components/dashboard/index.js +3 -0
  80. package/dist/components/dashboard/index.js.map +1 -0
  81. package/dist/components/form/form.stories.js +6 -1
  82. package/dist/components/form/form.stories.js.map +1 -1
  83. package/dist/components/index.d.ts +7 -0
  84. package/dist/components/index.d.ts.map +1 -1
  85. package/dist/components/index.js +7 -0
  86. package/dist/components/index.js.map +1 -1
  87. package/dist/components/kbd/index.d.ts +2 -0
  88. package/dist/components/kbd/index.d.ts.map +1 -0
  89. package/dist/components/kbd/index.js +3 -0
  90. package/dist/components/kbd/index.js.map +1 -0
  91. package/dist/components/kbd/kbd.d.ts +7 -0
  92. package/dist/components/kbd/kbd.d.ts.map +1 -0
  93. package/dist/components/kbd/kbd.js +18 -0
  94. package/dist/components/kbd/kbd.js.map +1 -0
  95. package/dist/components/kbd/kbd.stories.js +119 -0
  96. package/dist/components/kbd/kbd.stories.js.map +1 -0
  97. package/dist/components/search/index.d.ts +7 -0
  98. package/dist/components/search/index.d.ts.map +1 -0
  99. package/dist/components/search/index.js +8 -0
  100. package/dist/components/search/index.js.map +1 -0
  101. package/dist/components/search/search-context.d.ts +11 -0
  102. package/dist/components/search/search-context.d.ts.map +1 -0
  103. package/dist/components/search/search-context.js +56 -0
  104. package/dist/components/search/search-context.js.map +1 -0
  105. package/dist/components/search/search-inline.d.ts +9 -0
  106. package/dist/components/search/search-inline.d.ts.map +1 -0
  107. package/dist/components/search/search-inline.js +85 -0
  108. package/dist/components/search/search-inline.js.map +1 -0
  109. package/dist/components/search/search-modal.d.ts +25 -0
  110. package/dist/components/search/search-modal.d.ts.map +1 -0
  111. package/dist/components/search/search-modal.js +162 -0
  112. package/dist/components/search/search-modal.js.map +1 -0
  113. package/dist/components/search/search-trigger.d.ts +9 -0
  114. package/dist/components/search/search-trigger.d.ts.map +1 -0
  115. package/dist/components/search/search-trigger.js +37 -0
  116. package/dist/components/search/search-trigger.js.map +1 -0
  117. package/dist/components/search/search-variants.d.ts +14 -0
  118. package/dist/components/search/search-variants.d.ts.map +1 -0
  119. package/dist/components/search/search-variants.js +90 -0
  120. package/dist/components/search/search-variants.js.map +1 -0
  121. package/dist/components/search/search.d.ts +11 -0
  122. package/dist/components/search/search.d.ts.map +1 -0
  123. package/dist/components/search/search.js +35 -0
  124. package/dist/components/search/search.js.map +1 -0
  125. package/dist/components/search/search.stories.js +630 -0
  126. package/dist/components/search/search.stories.js.map +1 -0
  127. package/dist/components/select/index.d.ts +2 -0
  128. package/dist/components/select/index.d.ts.map +1 -0
  129. package/dist/components/select/index.js +3 -0
  130. package/dist/components/select/index.js.map +1 -0
  131. package/dist/components/select/select.d.ts +25 -0
  132. package/dist/components/select/select.d.ts.map +1 -0
  133. package/dist/components/select/select.js +153 -0
  134. package/dist/components/select/select.js.map +1 -0
  135. package/dist/components/select/select.stories.js +393 -0
  136. package/dist/components/select/select.stories.js.map +1 -0
  137. package/dist/components/skeleton/index.d.ts +2 -0
  138. package/dist/components/skeleton/index.d.ts.map +1 -0
  139. package/dist/components/skeleton/index.js +3 -0
  140. package/dist/components/skeleton/index.js.map +1 -0
  141. package/dist/components/skeleton/skeleton.d.ts +5 -0
  142. package/dist/components/skeleton/skeleton.d.ts.map +1 -0
  143. package/dist/components/skeleton/skeleton.js +11 -0
  144. package/dist/components/skeleton/skeleton.js.map +1 -0
  145. package/dist/components/skeleton/skeleton.stories.js +345 -0
  146. package/dist/components/skeleton/skeleton.stories.js.map +1 -0
  147. package/dist/components/table/data-table.d.ts +70 -0
  148. package/dist/components/table/data-table.d.ts.map +1 -0
  149. package/dist/components/table/data-table.js +159 -0
  150. package/dist/components/table/data-table.js.map +1 -0
  151. package/dist/components/table/index.d.ts +6 -0
  152. package/dist/components/table/index.d.ts.map +1 -0
  153. package/dist/components/table/index.js +6 -0
  154. package/dist/components/table/index.js.map +1 -0
  155. package/dist/components/table/table-column-header.d.ts +79 -0
  156. package/dist/components/table/table-column-header.d.ts.map +1 -0
  157. package/dist/components/table/table-column-header.js +99 -0
  158. package/dist/components/table/table-column-header.js.map +1 -0
  159. package/dist/components/table/table-pagination.d.ts +53 -0
  160. package/dist/components/table/table-pagination.d.ts.map +1 -0
  161. package/dist/components/table/table-pagination.js +139 -0
  162. package/dist/components/table/table-pagination.js.map +1 -0
  163. package/dist/components/table/table.d.ts +11 -0
  164. package/dist/components/table/table.d.ts.map +1 -0
  165. package/dist/components/table/table.js +64 -0
  166. package/dist/components/table/table.js.map +1 -0
  167. package/dist/components/table/table.stories.columns.d.ts +24 -0
  168. package/dist/components/table/table.stories.columns.d.ts.map +1 -0
  169. package/dist/components/table/table.stories.columns.js +310 -0
  170. package/dist/components/table/table.stories.columns.js.map +1 -0
  171. package/dist/components/table/table.stories.components.d.ts +14 -0
  172. package/dist/components/table/table.stories.components.d.ts.map +1 -0
  173. package/dist/components/table/table.stories.components.js +107 -0
  174. package/dist/components/table/table.stories.components.js.map +1 -0
  175. package/dist/components/table/table.stories.data.d.ts +54 -0
  176. package/dist/components/table/table.stories.data.d.ts.map +1 -0
  177. package/dist/components/table/table.stories.data.js +122 -0
  178. package/dist/components/table/table.stories.data.js.map +1 -0
  179. package/dist/components/table/table.stories.js +302 -0
  180. package/dist/components/table/table.stories.js.map +1 -0
  181. package/dist/styles.css +1 -1
  182. package/index.css +48 -0
  183. package/package.json +3 -2
  184. package/src/components/avatar/avatar.tsx +1 -1
  185. package/src/components/button-group/button-group.stories.tsx +361 -0
  186. package/src/components/button-group/button-group.tsx +111 -0
  187. package/src/components/button-group/index.ts +1 -0
  188. package/src/components/code-block/code-block-footer.tsx +8 -1
  189. package/src/components/command/command.stories.tsx +133 -0
  190. package/src/components/command/command.tsx +265 -0
  191. package/src/components/command/index.ts +1 -0
  192. package/src/components/dashboard/components/analytics-content.tsx +102 -0
  193. package/src/components/dashboard/components/animated-logo.tsx +25 -0
  194. package/src/components/dashboard/components/complete-setup-button.tsx +30 -0
  195. package/src/components/dashboard/components/jobs-content.tsx +51 -0
  196. package/src/components/dashboard/components/mobile-menu.tsx +50 -0
  197. package/src/components/dashboard/components/organization-selector.tsx +51 -0
  198. package/src/components/dashboard/components/top-menu.tsx +26 -0
  199. package/src/components/dashboard/components/topbar-button.tsx +27 -0
  200. package/src/components/dashboard/components/topbar.tsx +40 -0
  201. package/src/components/dashboard/components/user-profile.tsx +90 -0
  202. package/src/components/dashboard/dashboard.stories.tsx +25 -0
  203. package/src/components/dashboard/dashboard.tsx +61 -0
  204. package/src/components/dashboard/index.ts +1 -0
  205. package/src/components/form/form.stories.tsx +5 -0
  206. package/src/components/index.ts +7 -0
  207. package/src/components/kbd/index.ts +1 -0
  208. package/src/components/kbd/kbd.stories.tsx +64 -0
  209. package/src/components/kbd/kbd.tsx +32 -0
  210. package/src/components/search/index.ts +28 -0
  211. package/src/components/search/search-context.tsx +78 -0
  212. package/src/components/search/search-inline.tsx +107 -0
  213. package/src/components/search/search-modal.tsx +198 -0
  214. package/src/components/search/search-trigger.tsx +47 -0
  215. package/src/components/search/search-variants.ts +88 -0
  216. package/src/components/search/search.stories.tsx +392 -0
  217. package/src/components/search/search.tsx +47 -0
  218. package/src/components/select/index.ts +1 -0
  219. package/src/components/select/select.stories.tsx +207 -0
  220. package/src/components/select/select.tsx +220 -0
  221. package/src/components/skeleton/index.ts +1 -0
  222. package/src/components/skeleton/skeleton.stories.tsx +178 -0
  223. package/src/components/skeleton/skeleton.tsx +14 -0
  224. package/src/components/table/data-table.tsx +254 -0
  225. package/src/components/table/index.ts +5 -0
  226. package/src/components/table/table-column-header.tsx +141 -0
  227. package/src/components/table/table-pagination.tsx +161 -0
  228. package/src/components/table/table.stories.columns.tsx +198 -0
  229. package/src/components/table/table.stories.components.tsx +104 -0
  230. package/src/components/table/table.stories.data.ts +117 -0
  231. package/src/components/table/table.stories.tsx +256 -0
  232. package/src/components/table/table.tsx +95 -0
@@ -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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"}
@@ -2,9 +2,11 @@ export * from './alert';
2
2
  export * from './avatar';
3
3
  export * from './badge';
4
4
  export * from './button';
5
+ export * from './button-group';
5
6
  export * from './calendar';
6
7
  export * from './checkbox';
7
8
  export * from './code-block';
9
+ export * from './command';
8
10
  export * from './confetti';
9
11
  export * from './date-picker';
10
12
  export * from './date-time-range-picker';
@@ -16,11 +18,16 @@ export * from './icon';
16
18
  export * from './inline-tips';
17
19
  export * from './input';
18
20
  export * from './item';
21
+ export * from './kbd';
19
22
  export * from './label';
20
23
  export * from './modal';
21
24
  export * from './moving-border';
22
25
  export * from './popover';
26
+ export * from './search';
27
+ export * from './select';
23
28
  export * from './shiny-text';
29
+ export * from './skeleton';
30
+ export * from './table';
24
31
  export * from './tabs';
25
32
  export * from './textarea';
26
33
  export * from './theme';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC"}
@@ -2,9 +2,11 @@ export * from './alert/index.js';
2
2
  export * from './avatar/index.js';
3
3
  export * from './badge/index.js';
4
4
  export * from './button/index.js';
5
+ export * from './button-group/index.js';
5
6
  export * from './calendar/index.js';
6
7
  export * from './checkbox/index.js';
7
8
  export * from './code-block/index.js';
9
+ export * from './command/index.js';
8
10
  export * from './confetti/index.js';
9
11
  export * from './date-picker/index.js';
10
12
  export * from './date-time-range-picker/index.js';
@@ -16,11 +18,16 @@ export * from './icon/index.js';
16
18
  export * from './inline-tips/index.js';
17
19
  export * from './input/index.js';
18
20
  export * from './item/index.js';
21
+ export * from './kbd/index.js';
19
22
  export * from './label/index.js';
20
23
  export * from './modal/index.js';
21
24
  export * from './moving-border/index.js';
22
25
  export * from './popover/index.js';
26
+ export * from './search/index.js';
27
+ export * from './select/index.js';
23
28
  export * from './shiny-text/index.js';
29
+ export * from './skeleton/index.js';
30
+ export * from './table/index.js';
24
31
  export * from './tabs/index.js';
25
32
  export * from './textarea/index.js';
26
33
  export * from './theme/index.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/index.ts"],"sourcesContent":["export * from './alert';\nexport * from './avatar';\nexport * from './badge';\nexport * from './button';\nexport * from './calendar';\nexport * from './checkbox';\nexport * from './code-block';\nexport * from './confetti';\nexport * from './date-picker';\nexport * from './date-time-range-picker';\nexport * from './dot-grid';\nexport * from './dropdown-menu';\nexport * from './dynamic-item';\nexport * from './form';\nexport * from './icon';\nexport * from './inline-tips';\nexport * from './input';\nexport * from './item';\nexport * from './label';\nexport * from './modal';\nexport * from './moving-border';\nexport * from './popover';\nexport * from './shiny-text';\nexport * from './tabs';\nexport * from './textarea';\nexport * from './theme';\nexport * from './toast';\nexport * from './tooltip';\nexport * from './typography';\n"],"names":[],"mappings":"AAAA,cAAc,UAAU;AACxB,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,cAAc,WAAW;AACzB,cAAc,aAAa;AAC3B,cAAc,aAAa;AAC3B,cAAc,eAAe;AAC7B,cAAc,aAAa;AAC3B,cAAc,gBAAgB;AAC9B,cAAc,2BAA2B;AACzC,cAAc,aAAa;AAC3B,cAAc,kBAAkB;AAChC,cAAc,iBAAiB;AAC/B,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,gBAAgB;AAC9B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,kBAAkB;AAChC,cAAc,YAAY;AAC1B,cAAc,eAAe;AAC7B,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,YAAY;AAC1B,cAAc,eAAe"}
1
+ {"version":3,"sources":["../../src/components/index.ts"],"sourcesContent":["export * from './alert';\nexport * from './avatar';\nexport * from './badge';\nexport * from './button';\nexport * from './button-group';\nexport * from './calendar';\nexport * from './checkbox';\nexport * from './code-block';\nexport * from './command';\nexport * from './confetti';\nexport * from './date-picker';\nexport * from './date-time-range-picker';\nexport * from './dot-grid';\nexport * from './dropdown-menu';\nexport * from './dynamic-item';\nexport * from './form';\nexport * from './icon';\nexport * from './inline-tips';\nexport * from './input';\nexport * from './item';\nexport * from './kbd';\nexport * from './label';\nexport * from './modal';\nexport * from './moving-border';\nexport * from './popover';\nexport * from './search';\nexport * from './select';\nexport * from './shiny-text';\nexport * from './skeleton';\nexport * from './table';\nexport * from './tabs';\nexport * from './textarea';\nexport * from './theme';\nexport * from './toast';\nexport * from './tooltip';\nexport * from './typography';\n"],"names":[],"mappings":"AAAA,cAAc,UAAU;AACxB,cAAc,WAAW;AACzB,cAAc,UAAU;AACxB,cAAc,WAAW;AACzB,cAAc,iBAAiB;AAC/B,cAAc,aAAa;AAC3B,cAAc,aAAa;AAC3B,cAAc,eAAe;AAC7B,cAAc,YAAY;AAC1B,cAAc,aAAa;AAC3B,cAAc,gBAAgB;AAC9B,cAAc,2BAA2B;AACzC,cAAc,aAAa;AAC3B,cAAc,kBAAkB;AAChC,cAAc,iBAAiB;AAC/B,cAAc,SAAS;AACvB,cAAc,SAAS;AACvB,cAAc,gBAAgB;AAC9B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,kBAAkB;AAChC,cAAc,YAAY;AAC1B,cAAc,WAAW;AACzB,cAAc,WAAW;AACzB,cAAc,eAAe;AAC7B,cAAc,aAAa;AAC3B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,aAAa;AAC3B,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,YAAY;AAC1B,cAAc,eAAe"}
@@ -0,0 +1,2 @@
1
+ export * from './kbd';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/kbd/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './kbd.js';
2
+
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/kbd/index.ts"],"sourcesContent":["export * from './kbd';\n"],"names":[],"mappings":"AAAA,cAAc,QAAQ"}
@@ -0,0 +1,7 @@
1
+ import type { ComponentProps } from 'react';
2
+ type KbdProps = ComponentProps<'kbd'>;
3
+ export declare function Kbd({ className, ...props }: KbdProps): import("react/jsx-runtime").JSX.Element;
4
+ type KbdGroupProps = ComponentProps<'div'>;
5
+ export declare function KbdGroup({ className, ...props }: KbdGroupProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=kbd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kbd.d.ts","sourceRoot":"","sources":["../../../src/components/kbd/kbd.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAG1C,KAAK,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAEtC,wBAAgB,GAAG,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,QAAQ,2CAclD;AAED,KAAK,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAE3C,wBAAgB,QAAQ,CAAC,EAAC,SAAS,EAAE,GAAG,KAAK,EAAC,EAAE,aAAa,2CAQ5D"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from '../../utils/cn.js';
3
+ export function Kbd({ className, ...props }) {
4
+ return /*#__PURE__*/ _jsx("kbd", {
5
+ "data-slot": "kbd",
6
+ className: cn('pointer-events-none inline-flex h-20 w-fit min-w-20 items-center justify-center gap-1 rounded-4 px-4 font-display text-xs font-medium select-none', 'bg-background-components-base text-foreground-neutral-subtle border border-border-neutral-base shadow-button-neutral', '[&_svg:not([class*="size-"])]:size-12', 'in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10', className),
7
+ ...props
8
+ });
9
+ }
10
+ export function KbdGroup({ className, ...props }) {
11
+ return /*#__PURE__*/ _jsx("div", {
12
+ "data-slot": "kbd-group",
13
+ className: cn('inline-flex items-center gap-4', className),
14
+ ...props
15
+ });
16
+ }
17
+
18
+ //# sourceMappingURL=kbd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/kbd/kbd.tsx"],"sourcesContent":["import type {ComponentProps} from 'react';\nimport {cn} from 'utils/cn';\n\ntype KbdProps = ComponentProps<'kbd'>;\n\nexport function Kbd({className, ...props}: KbdProps) {\n return (\n <kbd\n data-slot=\"kbd\"\n className={cn(\n 'pointer-events-none inline-flex h-20 w-fit min-w-20 items-center justify-center gap-1 rounded-4 px-4 font-display text-xs font-medium select-none',\n 'bg-background-components-base text-foreground-neutral-subtle border border-border-neutral-base shadow-button-neutral',\n '[&_svg:not([class*=\"size-\"])]:size-12',\n 'in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10',\n className,\n )}\n {...props}\n />\n );\n}\n\ntype KbdGroupProps = ComponentProps<'div'>;\n\nexport function KbdGroup({className, ...props}: KbdGroupProps) {\n return (\n <div\n data-slot=\"kbd-group\"\n className={cn('inline-flex items-center gap-4', className)}\n {...props}\n />\n );\n}\n"],"names":["cn","Kbd","className","props","kbd","data-slot","KbdGroup","div"],"mappings":";AACA,SAAQA,EAAE,QAAO,WAAW;AAI5B,OAAO,SAASC,IAAI,EAACC,SAAS,EAAE,GAAGC,OAAgB;IACjD,qBACE,KAACC;QACCC,aAAU;QACVH,WAAWF,GACT,qJACA,wHACA,yCACA,uJACAE;QAED,GAAGC,KAAK;;AAGf;AAIA,OAAO,SAASG,SAAS,EAACJ,SAAS,EAAE,GAAGC,OAAqB;IAC3D,qBACE,KAACI;QACCF,aAAU;QACVH,WAAWF,GAAG,kCAAkCE;QAC/C,GAAGC,KAAK;;AAGf"}
@@ -0,0 +1,119 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Kbd, KbdGroup } from './kbd.js';
3
+ const meta = {
4
+ title: 'Components/Kbd',
5
+ component: Kbd,
6
+ tags: [
7
+ 'autodocs'
8
+ ]
9
+ };
10
+ export default meta;
11
+ export const Default = {
12
+ render: ()=>/*#__PURE__*/ _jsxs("div", {
13
+ className: "flex flex-wrap gap-8",
14
+ children: [
15
+ /*#__PURE__*/ _jsx(Kbd, {
16
+ children: "Ctrl"
17
+ }),
18
+ /*#__PURE__*/ _jsx(Kbd, {
19
+ children: "Alt"
20
+ }),
21
+ /*#__PURE__*/ _jsx(Kbd, {
22
+ children: "Shift"
23
+ }),
24
+ /*#__PURE__*/ _jsx(Kbd, {
25
+ children: "⌘"
26
+ }),
27
+ /*#__PURE__*/ _jsx(Kbd, {
28
+ children: "⌥"
29
+ }),
30
+ /*#__PURE__*/ _jsx(Kbd, {
31
+ children: "⇧"
32
+ })
33
+ ]
34
+ })
35
+ };
36
+ export const KeyCombination = {
37
+ render: ()=>/*#__PURE__*/ _jsxs("div", {
38
+ className: "flex flex-wrap items-center gap-12",
39
+ children: [
40
+ /*#__PURE__*/ _jsx(Kbd, {
41
+ children: "⌘K"
42
+ }),
43
+ /*#__PURE__*/ _jsxs(KbdGroup, {
44
+ children: [
45
+ /*#__PURE__*/ _jsx(Kbd, {
46
+ children: "Ctrl"
47
+ }),
48
+ /*#__PURE__*/ _jsx(Kbd, {
49
+ children: "Shift"
50
+ }),
51
+ /*#__PURE__*/ _jsx(Kbd, {
52
+ children: "P"
53
+ })
54
+ ]
55
+ }),
56
+ /*#__PURE__*/ _jsxs(KbdGroup, {
57
+ children: [
58
+ /*#__PURE__*/ _jsx(Kbd, {
59
+ children: "Alt"
60
+ }),
61
+ /*#__PURE__*/ _jsx(Kbd, {
62
+ children: "Enter"
63
+ })
64
+ ]
65
+ })
66
+ ]
67
+ })
68
+ };
69
+ export const InMenu = {
70
+ render: ()=>/*#__PURE__*/ _jsx("div", {
71
+ className: "max-w-400 rounded-10 border border-border-neutral-base p-8",
72
+ children: /*#__PURE__*/ _jsxs("div", {
73
+ className: "flex flex-col gap-4",
74
+ children: [
75
+ /*#__PURE__*/ _jsxs("div", {
76
+ className: "flex items-center justify-between p-8 rounded-6 hover:bg-background-components-hover transition-colors",
77
+ children: [
78
+ /*#__PURE__*/ _jsx("span", {
79
+ className: "text-sm text-foreground-neutral-subtle",
80
+ children: "Copy"
81
+ }),
82
+ /*#__PURE__*/ _jsx(Kbd, {
83
+ children: "⌘C"
84
+ })
85
+ ]
86
+ }),
87
+ /*#__PURE__*/ _jsxs("div", {
88
+ className: "flex items-center justify-between p-8 rounded-6 hover:bg-background-components-hover transition-colors",
89
+ children: [
90
+ /*#__PURE__*/ _jsx("span", {
91
+ className: "text-sm text-foreground-neutral-subtle",
92
+ children: "Paste"
93
+ }),
94
+ /*#__PURE__*/ _jsx(Kbd, {
95
+ children: "⌘V"
96
+ })
97
+ ]
98
+ }),
99
+ /*#__PURE__*/ _jsx("div", {
100
+ className: "h-px bg-border-neutral-base my-4"
101
+ }),
102
+ /*#__PURE__*/ _jsxs("div", {
103
+ className: "flex items-center justify-between p-8 rounded-6 hover:bg-background-components-hover transition-colors",
104
+ children: [
105
+ /*#__PURE__*/ _jsx("span", {
106
+ className: "text-sm text-foreground-neutral-subtle",
107
+ children: "Command Palette"
108
+ }),
109
+ /*#__PURE__*/ _jsx(Kbd, {
110
+ children: "⌘K"
111
+ })
112
+ ]
113
+ })
114
+ ]
115
+ })
116
+ })
117
+ };
118
+
119
+ //# sourceMappingURL=kbd.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/kbd/kbd.stories.tsx"],"sourcesContent":["import type {Meta, StoryObj} from '@storybook/react';\nimport {Kbd, KbdGroup} from './kbd';\n\nconst meta = {\n title: 'Components/Kbd',\n component: Kbd,\n tags: ['autodocs'],\n} satisfies Meta<typeof Kbd>;\n\nexport default meta;\n\ntype Story = StoryObj<typeof meta>;\n\nexport const Default: Story = {\n render: () => (\n <div className=\"flex flex-wrap gap-8\">\n <Kbd>Ctrl</Kbd>\n <Kbd>Alt</Kbd>\n <Kbd>Shift</Kbd>\n <Kbd>⌘</Kbd>\n <Kbd>⌥</Kbd>\n <Kbd>⇧</Kbd>\n </div>\n ),\n};\n\nexport const KeyCombination: Story = {\n render: () => (\n <div className=\"flex flex-wrap items-center gap-12\">\n <Kbd>⌘K</Kbd>\n <KbdGroup>\n <Kbd>Ctrl</Kbd>\n <Kbd>Shift</Kbd>\n <Kbd>P</Kbd>\n </KbdGroup>\n <KbdGroup>\n <Kbd>Alt</Kbd>\n <Kbd>Enter</Kbd>\n </KbdGroup>\n </div>\n ),\n};\n\nexport const InMenu: Story = {\n render: () => (\n <div className=\"max-w-400 rounded-10 border border-border-neutral-base p-8\">\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex items-center justify-between p-8 rounded-6 hover:bg-background-components-hover transition-colors\">\n <span className=\"text-sm text-foreground-neutral-subtle\">Copy</span>\n <Kbd>⌘C</Kbd>\n </div>\n <div className=\"flex items-center justify-between p-8 rounded-6 hover:bg-background-components-hover transition-colors\">\n <span className=\"text-sm text-foreground-neutral-subtle\">Paste</span>\n <Kbd>⌘V</Kbd>\n </div>\n <div className=\"h-px bg-border-neutral-base my-4\" />\n <div className=\"flex items-center justify-between p-8 rounded-6 hover:bg-background-components-hover transition-colors\">\n <span className=\"text-sm text-foreground-neutral-subtle\">Command Palette</span>\n <Kbd>⌘K</Kbd>\n </div>\n </div>\n </div>\n ),\n};\n"],"names":["Kbd","KbdGroup","meta","title","component","tags","Default","render","div","className","KeyCombination","InMenu","span"],"mappings":";AACA,SAAQA,GAAG,EAAEC,QAAQ,QAAO,QAAQ;AAEpC,MAAMC,OAAO;IACXC,OAAO;IACPC,WAAWJ;IACXK,MAAM;QAAC;KAAW;AACpB;AAEA,eAAeH,KAAK;AAIpB,OAAO,MAAMI,UAAiB;IAC5BC,QAAQ,kBACN,MAACC;YAAIC,WAAU;;8BACb,KAACT;8BAAI;;8BACL,KAACA;8BAAI;;8BACL,KAACA;8BAAI;;8BACL,KAACA;8BAAI;;8BACL,KAACA;8BAAI;;8BACL,KAACA;8BAAI;;;;AAGX,EAAE;AAEF,OAAO,MAAMU,iBAAwB;IACnCH,QAAQ,kBACN,MAACC;YAAIC,WAAU;;8BACb,KAACT;8BAAI;;8BACL,MAACC;;sCACC,KAACD;sCAAI;;sCACL,KAACA;sCAAI;;sCACL,KAACA;sCAAI;;;;8BAEP,MAACC;;sCACC,KAACD;sCAAI;;sCACL,KAACA;sCAAI;;;;;;AAIb,EAAE;AAEF,OAAO,MAAMW,SAAgB;IAC3BJ,QAAQ,kBACN,KAACC;YAAIC,WAAU;sBACb,cAAA,MAACD;gBAAIC,WAAU;;kCACb,MAACD;wBAAIC,WAAU;;0CACb,KAACG;gCAAKH,WAAU;0CAAyC;;0CACzD,KAACT;0CAAI;;;;kCAEP,MAACQ;wBAAIC,WAAU;;0CACb,KAACG;gCAAKH,WAAU;0CAAyC;;0CACzD,KAACT;0CAAI;;;;kCAEP,KAACQ;wBAAIC,WAAU;;kCACf,MAACD;wBAAIC,WAAU;;0CACb,KAACG;gCAAKH,WAAU;0CAAyC;;0CACzD,KAACT;0CAAI;;;;;;;AAKf,EAAE"}
@@ -0,0 +1,7 @@
1
+ export { Search, type SearchProps } from './search';
2
+ export { useSearchContext } from './search-context';
3
+ export { SearchInline, type SearchInlineProps } from './search-inline';
4
+ export { SearchContent, type SearchContentProps, SearchEmpty, type SearchEmptyProps, SearchFooter, type SearchFooterProps, SearchGroup, type SearchGroupProps, SearchInput, type SearchInputProps, SearchItem, type SearchItemProps, SearchList, type SearchListProps, SearchSeparator, type SearchSeparatorProps, } from './search-modal';
5
+ export { SearchTrigger, type SearchTriggerProps } from './search-trigger';
6
+ export { searchDefaultTransition, searchInputVariants, searchTriggerVariants, } from './search-variants';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/search/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAE,KAAK,WAAW,EAAC,MAAM,UAAU,CAAC;AAClD,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAC,YAAY,EAAE,KAAK,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,WAAW,EACX,KAAK,gBAAgB,EACrB,YAAY,EACZ,KAAK,iBAAiB,EACtB,WAAW,EACX,KAAK,gBAAgB,EACrB,WAAW,EACX,KAAK,gBAAgB,EACrB,UAAU,EACV,KAAK,eAAe,EACpB,UAAU,EACV,KAAK,eAAe,EACpB,eAAe,EACf,KAAK,oBAAoB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAC,aAAa,EAAE,KAAK,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAExE,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export { Search } from './search.js';
2
+ export { useSearchContext } from './search-context.js';
3
+ export { SearchInline } from './search-inline.js';
4
+ export { SearchContent, SearchEmpty, SearchFooter, SearchGroup, SearchInput, SearchItem, SearchList, SearchSeparator } from './search-modal.js';
5
+ export { SearchTrigger } from './search-trigger.js';
6
+ export { searchDefaultTransition, searchInputVariants, searchTriggerVariants } from './search-variants.js';
7
+
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/search/index.ts"],"sourcesContent":["export {Search, type SearchProps} from './search';\nexport {useSearchContext} from './search-context';\nexport {SearchInline, type SearchInlineProps} from './search-inline';\nexport {\n SearchContent,\n type SearchContentProps,\n SearchEmpty,\n type SearchEmptyProps,\n SearchFooter,\n type SearchFooterProps,\n SearchGroup,\n type SearchGroupProps,\n SearchInput,\n type SearchInputProps,\n SearchItem,\n type SearchItemProps,\n SearchList,\n type SearchListProps,\n SearchSeparator,\n type SearchSeparatorProps,\n} from './search-modal';\nexport {SearchTrigger, type SearchTriggerProps} from './search-trigger';\n\nexport {\n searchDefaultTransition,\n searchInputVariants,\n searchTriggerVariants,\n} from './search-variants';\n"],"names":["Search","useSearchContext","SearchInline","SearchContent","SearchEmpty","SearchFooter","SearchGroup","SearchInput","SearchItem","SearchList","SearchSeparator","SearchTrigger","searchDefaultTransition","searchInputVariants","searchTriggerVariants"],"mappings":"AAAA,SAAQA,MAAM,QAAyB,WAAW;AAClD,SAAQC,gBAAgB,QAAO,mBAAmB;AAClD,SAAQC,YAAY,QAA+B,kBAAkB;AACrE,SACEC,aAAa,EAEbC,WAAW,EAEXC,YAAY,EAEZC,WAAW,EAEXC,WAAW,EAEXC,UAAU,EAEVC,UAAU,EAEVC,eAAe,QAEV,iBAAiB;AACxB,SAAQC,aAAa,QAAgC,mBAAmB;AAExE,SACEC,uBAAuB,EACvBC,mBAAmB,EACnBC,qBAAqB,QAChB,oBAAoB"}
@@ -0,0 +1,11 @@
1
+ export type SearchContextValue = {
2
+ open: boolean;
3
+ setOpen: (open: boolean) => void;
4
+ searchValue: string;
5
+ setSearchValue: (value: string) => void;
6
+ };
7
+ export declare const SearchContext: import("react").Context<SearchContextValue | null>;
8
+ export declare function useSearchContext(): SearchContextValue;
9
+ export declare function useControllableState<T>(controlledValue: T | undefined, defaultValue: T, onChange?: (value: T) => void): [T, (value: T) => void];
10
+ export declare function useKeyboardShortcut(shortcutKey: string | undefined, onTrigger: () => void): void;
11
+ //# sourceMappingURL=search-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-context.d.ts","sourceRoot":"","sources":["../../../src/components/search/search-context.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,CAAC;AAEF,eAAO,MAAM,aAAa,oDAAiD,CAAC;AAE5E,wBAAgB,gBAAgB,uBAM/B;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EACpC,eAAe,EAAE,CAAC,GAAG,SAAS,EAC9B,YAAY,EAAE,CAAC,EACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAC5B,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,CAgBzB;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,IAAI,QAmCzF"}
@@ -0,0 +1,56 @@
1
+ import { createContext, useCallback, useContext, useEffect, useState } from 'react';
2
+ import { SHORTCUT_KEY_REGEX } from './search-variants.js';
3
+ export const SearchContext = /*#__PURE__*/ createContext(null);
4
+ export function useSearchContext() {
5
+ const context = useContext(SearchContext);
6
+ if (!context) {
7
+ throw new Error('Search components must be used within a Search component');
8
+ }
9
+ return context;
10
+ }
11
+ export function useControllableState(controlledValue, defaultValue, onChange) {
12
+ const [internalValue, setInternalValue] = useState(defaultValue);
13
+ const isControlled = controlledValue !== undefined;
14
+ const value = isControlled ? controlledValue : internalValue;
15
+ const setValue = useCallback((newValue)=>{
16
+ if (!isControlled) {
17
+ setInternalValue(newValue);
18
+ }
19
+ onChange?.(newValue);
20
+ }, [
21
+ isControlled,
22
+ onChange
23
+ ]);
24
+ return [
25
+ value,
26
+ setValue
27
+ ];
28
+ }
29
+ export function useKeyboardShortcut(shortcutKey, onTrigger) {
30
+ useEffect(()=>{
31
+ if (!shortcutKey) return;
32
+ const handleKeyDown = (e)=>{
33
+ const key = shortcutKey.toLowerCase();
34
+ const isMetaKey = key.startsWith('meta+') || key.startsWith('cmd+') || key.startsWith('⌘');
35
+ const isCtrlKey = key.startsWith('ctrl+');
36
+ const targetKey = key.replace(SHORTCUT_KEY_REGEX, '');
37
+ const shouldTrigger = isMetaKey && e.metaKey && e.key.toLowerCase() === targetKey || isCtrlKey && e.ctrlKey && e.key.toLowerCase() === targetKey || !isMetaKey && !isCtrlKey && e.key.toLowerCase() === targetKey && !e.metaKey && !e.ctrlKey;
38
+ if (!shouldTrigger) return;
39
+ if (!isMetaKey && !isCtrlKey) {
40
+ const target = e.target;
41
+ if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {
42
+ return;
43
+ }
44
+ }
45
+ e.preventDefault();
46
+ onTrigger();
47
+ };
48
+ document.addEventListener('keydown', handleKeyDown);
49
+ return ()=>document.removeEventListener('keydown', handleKeyDown);
50
+ }, [
51
+ shortcutKey,
52
+ onTrigger
53
+ ]);
54
+ }
55
+
56
+ //# sourceMappingURL=search-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/search/search-context.tsx"],"sourcesContent":["import {createContext, useCallback, useContext, useEffect, useState} from 'react';\nimport {SHORTCUT_KEY_REGEX} from './search-variants';\n\nexport type SearchContextValue = {\n open: boolean;\n setOpen: (open: boolean) => void;\n searchValue: string;\n setSearchValue: (value: string) => void;\n};\n\nexport const SearchContext = createContext<SearchContextValue | null>(null);\n\nexport function useSearchContext() {\n const context = useContext(SearchContext);\n if (!context) {\n throw new Error('Search components must be used within a Search component');\n }\n return context;\n}\n\nexport function useControllableState<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void,\n): [T, (value: T) => void] {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : internalValue;\n\n const setValue = useCallback(\n (newValue: T) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n },\n [isControlled, onChange],\n );\n\n return [value, setValue];\n}\n\nexport function useKeyboardShortcut(shortcutKey: string | undefined, onTrigger: () => void) {\n useEffect(() => {\n if (!shortcutKey) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n const key = shortcutKey.toLowerCase();\n const isMetaKey = key.startsWith('meta+') || key.startsWith('cmd+') || key.startsWith('⌘');\n const isCtrlKey = key.startsWith('ctrl+');\n const targetKey = key.replace(SHORTCUT_KEY_REGEX, '');\n\n const shouldTrigger =\n (isMetaKey && e.metaKey && e.key.toLowerCase() === targetKey) ||\n (isCtrlKey && e.ctrlKey && e.key.toLowerCase() === targetKey) ||\n (!isMetaKey && !isCtrlKey && e.key.toLowerCase() === targetKey && !e.metaKey && !e.ctrlKey);\n\n if (!shouldTrigger) return;\n\n if (!isMetaKey && !isCtrlKey) {\n const target = e.target as HTMLElement;\n if (\n target.tagName === 'INPUT' ||\n target.tagName === 'TEXTAREA' ||\n target.isContentEditable\n ) {\n return;\n }\n }\n\n e.preventDefault();\n onTrigger();\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [shortcutKey, onTrigger]);\n}\n"],"names":["createContext","useCallback","useContext","useEffect","useState","SHORTCUT_KEY_REGEX","SearchContext","useSearchContext","context","Error","useControllableState","controlledValue","defaultValue","onChange","internalValue","setInternalValue","isControlled","undefined","value","setValue","newValue","useKeyboardShortcut","shortcutKey","onTrigger","handleKeyDown","e","key","toLowerCase","isMetaKey","startsWith","isCtrlKey","targetKey","replace","shouldTrigger","metaKey","ctrlKey","target","tagName","isContentEditable","preventDefault","document","addEventListener","removeEventListener"],"mappings":"AAAA,SAAQA,aAAa,EAAEC,WAAW,EAAEC,UAAU,EAAEC,SAAS,EAAEC,QAAQ,QAAO,QAAQ;AAClF,SAAQC,kBAAkB,QAAO,oBAAoB;AASrD,OAAO,MAAMC,8BAAgBN,cAAyC,MAAM;AAE5E,OAAO,SAASO;IACd,MAAMC,UAAUN,WAAWI;IAC3B,IAAI,CAACE,SAAS;QACZ,MAAM,IAAIC,MAAM;IAClB;IACA,OAAOD;AACT;AAEA,OAAO,SAASE,qBACdC,eAA8B,EAC9BC,YAAe,EACfC,QAA6B;IAE7B,MAAM,CAACC,eAAeC,iBAAiB,GAAGX,SAASQ;IACnD,MAAMI,eAAeL,oBAAoBM;IACzC,MAAMC,QAAQF,eAAeL,kBAAkBG;IAE/C,MAAMK,WAAWlB,YACf,CAACmB;QACC,IAAI,CAACJ,cAAc;YACjBD,iBAAiBK;QACnB;QACAP,WAAWO;IACb,GACA;QAACJ;QAAcH;KAAS;IAG1B,OAAO;QAACK;QAAOC;KAAS;AAC1B;AAEA,OAAO,SAASE,oBAAoBC,WAA+B,EAAEC,SAAqB;IACxFpB,UAAU;QACR,IAAI,CAACmB,aAAa;QAElB,MAAME,gBAAgB,CAACC;YACrB,MAAMC,MAAMJ,YAAYK,WAAW;YACnC,MAAMC,YAAYF,IAAIG,UAAU,CAAC,YAAYH,IAAIG,UAAU,CAAC,WAAWH,IAAIG,UAAU,CAAC;YACtF,MAAMC,YAAYJ,IAAIG,UAAU,CAAC;YACjC,MAAME,YAAYL,IAAIM,OAAO,CAAC3B,oBAAoB;YAElD,MAAM4B,gBACJ,AAACL,aAAaH,EAAES,OAAO,IAAIT,EAAEC,GAAG,CAACC,WAAW,OAAOI,aAClDD,aAAaL,EAAEU,OAAO,IAAIV,EAAEC,GAAG,CAACC,WAAW,OAAOI,aAClD,CAACH,aAAa,CAACE,aAAaL,EAAEC,GAAG,CAACC,WAAW,OAAOI,aAAa,CAACN,EAAES,OAAO,IAAI,CAACT,EAAEU,OAAO;YAE5F,IAAI,CAACF,eAAe;YAEpB,IAAI,CAACL,aAAa,CAACE,WAAW;gBAC5B,MAAMM,SAASX,EAAEW,MAAM;gBACvB,IACEA,OAAOC,OAAO,KAAK,WACnBD,OAAOC,OAAO,KAAK,cACnBD,OAAOE,iBAAiB,EACxB;oBACA;gBACF;YACF;YAEAb,EAAEc,cAAc;YAChBhB;QACF;QAEAiB,SAASC,gBAAgB,CAAC,WAAWjB;QACrC,OAAO,IAAMgB,SAASE,mBAAmB,CAAC,WAAWlB;IACvD,GAAG;QAACF;QAAaC;KAAU;AAC7B"}
@@ -0,0 +1,9 @@
1
+ import type { VariantProps } from 'class-variance-authority';
2
+ import type { ComponentProps } from 'react';
3
+ import { searchInputVariants } from './search-variants';
4
+ export type SearchInlineProps = Omit<ComponentProps<'input'>, 'size'> & VariantProps<typeof searchInputVariants> & {
5
+ showClearButton?: boolean;
6
+ onClear?: () => void;
7
+ };
8
+ export declare function SearchInline({ className, variant, size, radius, value, onChange, onClear, showClearButton, ...props }: SearchInlineProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=search-inline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-inline.d.ts","sourceRoot":"","sources":["../../../src/components/search/search-inline.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,OAAO,CAAC;AAI1C,OAAO,EAAC,mBAAmB,EAAC,MAAM,mBAAmB,CAAC;AAEtD,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,GACnE,YAAY,CAAC,OAAO,mBAAmB,CAAC,GAAG;IACzC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,CAAC;AAEJ,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,OAAO,EACP,IAAI,EACJ,MAAM,EACN,KAAK,EACL,QAAQ,EACR,OAAO,EACP,eAAsB,EACtB,GAAG,KAAK,EACT,EAAE,iBAAiB,2CAmFnB"}