@tribepad/themis 1.0.1 → 1.0.2

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 (301) hide show
  1. package/dist/elements/Accordion/index.js +1 -335
  2. package/dist/elements/Accordion/index.js.map +1 -1
  3. package/dist/elements/Accordion/index.mjs +1 -317
  4. package/dist/elements/Accordion/index.mjs.map +1 -1
  5. package/dist/elements/AlertDialog/AlertDialog.d.ts +43 -0
  6. package/dist/elements/AlertDialog/AlertDialog.d.ts.map +1 -0
  7. package/dist/elements/AlertDialog/AlertDialog.styles.d.ts +15 -0
  8. package/dist/elements/AlertDialog/AlertDialog.styles.d.ts.map +1 -0
  9. package/dist/elements/AlertDialog/AlertDialog.types.d.ts +72 -0
  10. package/dist/elements/AlertDialog/AlertDialog.types.d.ts.map +1 -0
  11. package/dist/elements/AlertDialog/index.d.ts +25 -0
  12. package/dist/elements/AlertDialog/index.d.ts.map +1 -0
  13. package/dist/elements/AlertDialog/index.js +3 -0
  14. package/dist/elements/AlertDialog/index.js.map +1 -0
  15. package/dist/elements/AlertDialog/index.mjs +3 -0
  16. package/dist/elements/AlertDialog/index.mjs.map +1 -0
  17. package/dist/elements/Avatar/index.js +1 -468
  18. package/dist/elements/Avatar/index.js.map +1 -1
  19. package/dist/elements/Avatar/index.mjs +1 -456
  20. package/dist/elements/Avatar/index.mjs.map +1 -1
  21. package/dist/elements/Badge/index.js +1 -243
  22. package/dist/elements/Badge/index.js.map +1 -1
  23. package/dist/elements/Badge/index.mjs +1 -234
  24. package/dist/elements/Badge/index.mjs.map +1 -1
  25. package/dist/elements/Breadcrumbs/index.js +1 -821
  26. package/dist/elements/Breadcrumbs/index.js.map +1 -1
  27. package/dist/elements/Breadcrumbs/index.mjs +1 -810
  28. package/dist/elements/Breadcrumbs/index.mjs.map +1 -1
  29. package/dist/elements/Button/Button.d.ts +26 -81
  30. package/dist/elements/Button/Button.d.ts.map +1 -1
  31. package/dist/elements/Button/Button.styles.d.ts +35 -0
  32. package/dist/elements/Button/Button.styles.d.ts.map +1 -0
  33. package/dist/elements/Button/Button.types.d.ts +20 -8
  34. package/dist/elements/Button/Button.types.d.ts.map +1 -1
  35. package/dist/elements/Button/index.js +1 -288
  36. package/dist/elements/Button/index.js.map +1 -1
  37. package/dist/elements/Button/index.mjs +1 -283
  38. package/dist/elements/Button/index.mjs.map +1 -1
  39. package/dist/elements/ButtonGroup/index.js +1 -237
  40. package/dist/elements/ButtonGroup/index.js.map +1 -1
  41. package/dist/elements/ButtonGroup/index.mjs +1 -222
  42. package/dist/elements/ButtonGroup/index.mjs.map +1 -1
  43. package/dist/elements/Card/index.js +1 -579
  44. package/dist/elements/Card/index.js.map +1 -1
  45. package/dist/elements/Card/index.mjs +1 -560
  46. package/dist/elements/Card/index.mjs.map +1 -1
  47. package/dist/elements/Carousel/Carousel.d.ts +1 -11
  48. package/dist/elements/Carousel/Carousel.d.ts.map +1 -1
  49. package/dist/elements/Carousel/LazyCarousel.d.ts +1 -1
  50. package/dist/elements/Carousel/LazyCarousel.d.ts.map +1 -1
  51. package/dist/elements/Carousel/index.js +1 -789
  52. package/dist/elements/Carousel/index.js.map +1 -1
  53. package/dist/elements/Carousel/index.mjs +1 -786
  54. package/dist/elements/Carousel/index.mjs.map +1 -1
  55. package/dist/elements/Chart/ChartContext.d.ts.map +1 -1
  56. package/dist/elements/Chart/index.js +1 -1842
  57. package/dist/elements/Chart/index.js.map +1 -1
  58. package/dist/elements/Chart/index.mjs +1 -1832
  59. package/dist/elements/Chart/index.mjs.map +1 -1
  60. package/dist/elements/Checkbox/index.js +1 -316
  61. package/dist/elements/Checkbox/index.js.map +1 -1
  62. package/dist/elements/Checkbox/index.mjs +1 -306
  63. package/dist/elements/Checkbox/index.mjs.map +1 -1
  64. package/dist/elements/CheckboxGroup/index.js +1 -455
  65. package/dist/elements/CheckboxGroup/index.js.map +1 -1
  66. package/dist/elements/CheckboxGroup/index.mjs +1 -439
  67. package/dist/elements/CheckboxGroup/index.mjs.map +1 -1
  68. package/dist/elements/Combobox/Combobox.d.ts +56 -0
  69. package/dist/elements/Combobox/Combobox.d.ts.map +1 -0
  70. package/dist/elements/Combobox/Combobox.styles.d.ts +29 -0
  71. package/dist/elements/Combobox/Combobox.styles.d.ts.map +1 -0
  72. package/dist/elements/Combobox/Combobox.types.d.ts +67 -0
  73. package/dist/elements/Combobox/Combobox.types.d.ts.map +1 -0
  74. package/dist/elements/Combobox/index.d.ts +20 -0
  75. package/dist/elements/Combobox/index.d.ts.map +1 -0
  76. package/dist/elements/Combobox/index.js +3 -0
  77. package/dist/elements/Combobox/index.js.map +1 -0
  78. package/dist/elements/Combobox/index.mjs +3 -0
  79. package/dist/elements/Combobox/index.mjs.map +1 -0
  80. package/dist/elements/DatePicker/DatePicker.d.ts +1 -1
  81. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  82. package/dist/elements/DatePicker/index.js +1 -903
  83. package/dist/elements/DatePicker/index.js.map +1 -1
  84. package/dist/elements/DatePicker/index.mjs +1 -853
  85. package/dist/elements/DatePicker/index.mjs.map +1 -1
  86. package/dist/elements/Dropdown/Dropdown.d.ts +7 -15
  87. package/dist/elements/Dropdown/Dropdown.d.ts.map +1 -1
  88. package/dist/elements/Dropdown/Dropdown.styles.d.ts +22 -0
  89. package/dist/elements/Dropdown/Dropdown.styles.d.ts.map +1 -0
  90. package/dist/elements/Dropdown/index.d.ts +1 -0
  91. package/dist/elements/Dropdown/index.d.ts.map +1 -1
  92. package/dist/elements/Dropdown/index.js +1 -193
  93. package/dist/elements/Dropdown/index.js.map +1 -1
  94. package/dist/elements/Dropdown/index.mjs +1 -184
  95. package/dist/elements/Dropdown/index.mjs.map +1 -1
  96. package/dist/elements/FileField/index.js +1 -1539
  97. package/dist/elements/FileField/index.js.map +1 -1
  98. package/dist/elements/FileField/index.mjs +1 -1507
  99. package/dist/elements/FileField/index.mjs.map +1 -1
  100. package/dist/elements/FormLayout/index.js +1 -170
  101. package/dist/elements/FormLayout/index.js.map +1 -1
  102. package/dist/elements/FormLayout/index.mjs +1 -167
  103. package/dist/elements/FormLayout/index.mjs.map +1 -1
  104. package/dist/elements/Modal/Modal.d.ts +9 -14
  105. package/dist/elements/Modal/Modal.d.ts.map +1 -1
  106. package/dist/elements/Modal/Modal.styles.d.ts +29 -0
  107. package/dist/elements/Modal/Modal.styles.d.ts.map +1 -0
  108. package/dist/elements/Modal/index.d.ts +1 -0
  109. package/dist/elements/Modal/index.d.ts.map +1 -1
  110. package/dist/elements/Modal/index.js +1 -232
  111. package/dist/elements/Modal/index.js.map +1 -1
  112. package/dist/elements/Modal/index.mjs +1 -220
  113. package/dist/elements/Modal/index.mjs.map +1 -1
  114. package/dist/elements/NumberField/index.js +1 -666
  115. package/dist/elements/NumberField/index.js.map +1 -1
  116. package/dist/elements/NumberField/index.mjs +1 -654
  117. package/dist/elements/NumberField/index.mjs.map +1 -1
  118. package/dist/elements/OTPInput/OTPInput.d.ts.map +1 -1
  119. package/dist/elements/OTPInput/index.js +1 -734
  120. package/dist/elements/OTPInput/index.js.map +1 -1
  121. package/dist/elements/OTPInput/index.mjs +1 -732
  122. package/dist/elements/OTPInput/index.mjs.map +1 -1
  123. package/dist/elements/Pagination/Pagination.d.ts +45 -0
  124. package/dist/elements/Pagination/Pagination.d.ts.map +1 -0
  125. package/dist/elements/Pagination/Pagination.styles.d.ts +10 -0
  126. package/dist/elements/Pagination/Pagination.styles.d.ts.map +1 -0
  127. package/dist/elements/Pagination/Pagination.types.d.ts +55 -0
  128. package/dist/elements/Pagination/Pagination.types.d.ts.map +1 -0
  129. package/dist/elements/Pagination/index.d.ts +21 -0
  130. package/dist/elements/Pagination/index.d.ts.map +1 -0
  131. package/dist/elements/Pagination/index.js +3 -0
  132. package/dist/elements/Pagination/index.js.map +1 -0
  133. package/dist/elements/Pagination/index.mjs +3 -0
  134. package/dist/elements/Pagination/index.mjs.map +1 -0
  135. package/dist/elements/Panel/index.js +1 -330
  136. package/dist/elements/Panel/index.js.map +1 -1
  137. package/dist/elements/Panel/index.mjs +1 -323
  138. package/dist/elements/Panel/index.mjs.map +1 -1
  139. package/dist/elements/PasswordField/PasswordField.d.ts +27 -0
  140. package/dist/elements/PasswordField/PasswordField.d.ts.map +1 -0
  141. package/dist/elements/PasswordField/PasswordField.styles.d.ts +32 -0
  142. package/dist/elements/PasswordField/PasswordField.styles.d.ts.map +1 -0
  143. package/dist/elements/PasswordField/PasswordField.types.d.ts +100 -0
  144. package/dist/elements/PasswordField/PasswordField.types.d.ts.map +1 -0
  145. package/dist/elements/PasswordField/index.css +2 -0
  146. package/dist/elements/PasswordField/index.css.map +1 -0
  147. package/dist/elements/PasswordField/index.d.ts +20 -0
  148. package/dist/elements/PasswordField/index.d.ts.map +1 -0
  149. package/dist/elements/PasswordField/index.js +3 -0
  150. package/dist/elements/PasswordField/index.js.map +1 -0
  151. package/dist/elements/PasswordField/index.mjs +3 -0
  152. package/dist/elements/PasswordField/index.mjs.map +1 -0
  153. package/dist/elements/Progress/index.js +1 -187
  154. package/dist/elements/Progress/index.js.map +1 -1
  155. package/dist/elements/Progress/index.mjs +1 -181
  156. package/dist/elements/Progress/index.mjs.map +1 -1
  157. package/dist/elements/RadioGroup/index.js +1 -369
  158. package/dist/elements/RadioGroup/index.js.map +1 -1
  159. package/dist/elements/RadioGroup/index.mjs +1 -359
  160. package/dist/elements/RadioGroup/index.mjs.map +1 -1
  161. package/dist/elements/Resizable/index.js +1 -1580
  162. package/dist/elements/Resizable/index.js.map +1 -1
  163. package/dist/elements/Resizable/index.mjs +1 -1566
  164. package/dist/elements/Resizable/index.mjs.map +1 -1
  165. package/dist/elements/SearchField/SearchField.d.ts +27 -0
  166. package/dist/elements/SearchField/SearchField.d.ts.map +1 -0
  167. package/dist/elements/SearchField/SearchField.styles.d.ts +32 -0
  168. package/dist/elements/SearchField/SearchField.styles.d.ts.map +1 -0
  169. package/dist/elements/SearchField/SearchField.types.d.ts +45 -0
  170. package/dist/elements/SearchField/SearchField.types.d.ts.map +1 -0
  171. package/dist/elements/SearchField/index.css +2 -0
  172. package/dist/elements/SearchField/index.css.map +1 -0
  173. package/dist/elements/SearchField/index.d.ts +21 -0
  174. package/dist/elements/SearchField/index.d.ts.map +1 -0
  175. package/dist/elements/SearchField/index.js +3 -0
  176. package/dist/elements/SearchField/index.js.map +1 -0
  177. package/dist/elements/SearchField/index.mjs +3 -0
  178. package/dist/elements/SearchField/index.mjs.map +1 -0
  179. package/dist/elements/Select/Select.d.ts +19 -48
  180. package/dist/elements/Select/Select.d.ts.map +1 -1
  181. package/dist/elements/Select/Select.styles.d.ts +55 -0
  182. package/dist/elements/Select/Select.styles.d.ts.map +1 -0
  183. package/dist/elements/Select/index.js +1 -589
  184. package/dist/elements/Select/index.js.map +1 -1
  185. package/dist/elements/Select/index.mjs +1 -582
  186. package/dist/elements/Select/index.mjs.map +1 -1
  187. package/dist/elements/Skeleton/index.js +1 -82
  188. package/dist/elements/Skeleton/index.js.map +1 -1
  189. package/dist/elements/Skeleton/index.mjs +1 -78
  190. package/dist/elements/Skeleton/index.mjs.map +1 -1
  191. package/dist/elements/Switch/index.js +1 -179
  192. package/dist/elements/Switch/index.js.map +1 -1
  193. package/dist/elements/Switch/index.mjs +1 -173
  194. package/dist/elements/Switch/index.mjs.map +1 -1
  195. package/dist/elements/Table/Table.d.ts +3 -24
  196. package/dist/elements/Table/Table.d.ts.map +1 -1
  197. package/dist/elements/Table/Table.styles.d.ts +24 -0
  198. package/dist/elements/Table/Table.styles.d.ts.map +1 -0
  199. package/dist/elements/Table/index.js +1 -595
  200. package/dist/elements/Table/index.js.map +1 -1
  201. package/dist/elements/Table/index.mjs +1 -578
  202. package/dist/elements/Table/index.mjs.map +1 -1
  203. package/dist/elements/Tabs/index.js +1 -337
  204. package/dist/elements/Tabs/index.js.map +1 -1
  205. package/dist/elements/Tabs/index.mjs +1 -320
  206. package/dist/elements/Tabs/index.mjs.map +1 -1
  207. package/dist/elements/TextField/TextField.d.ts +6 -42
  208. package/dist/elements/TextField/TextField.d.ts.map +1 -1
  209. package/dist/elements/TextField/TextField.hooks.d.ts +63 -0
  210. package/dist/elements/TextField/TextField.hooks.d.ts.map +1 -0
  211. package/dist/elements/TextField/TextField.icons.d.ts +19 -0
  212. package/dist/elements/TextField/TextField.icons.d.ts.map +1 -0
  213. package/dist/elements/TextField/TextField.styles.d.ts +37 -0
  214. package/dist/elements/TextField/TextField.styles.d.ts.map +1 -0
  215. package/dist/elements/TextField/TextField.types.d.ts +3 -0
  216. package/dist/elements/TextField/TextField.types.d.ts.map +1 -1
  217. package/dist/elements/TextField/index.css +1 -22
  218. package/dist/elements/TextField/index.css.map +1 -1
  219. package/dist/elements/TextField/index.js +1 -902
  220. package/dist/elements/TextField/index.js.map +1 -1
  221. package/dist/elements/TextField/index.mjs +1 -882
  222. package/dist/elements/TextField/index.mjs.map +1 -1
  223. package/dist/elements/TimeField/index.js +1 -254
  224. package/dist/elements/TimeField/index.js.map +1 -1
  225. package/dist/elements/TimeField/index.mjs +1 -238
  226. package/dist/elements/TimeField/index.mjs.map +1 -1
  227. package/dist/elements/Toast/Toast.d.ts +0 -22
  228. package/dist/elements/Toast/Toast.d.ts.map +1 -1
  229. package/dist/elements/Toast/index.js +1 -737
  230. package/dist/elements/Toast/index.js.map +1 -1
  231. package/dist/elements/Toast/index.mjs +1 -724
  232. package/dist/elements/Toast/index.mjs.map +1 -1
  233. package/dist/elements/Tooltip/index.js +1 -323
  234. package/dist/elements/Tooltip/index.js.map +1 -1
  235. package/dist/elements/Tooltip/index.mjs +1 -310
  236. package/dist/elements/Tooltip/index.mjs.map +1 -1
  237. package/dist/elements/index.css +1 -22
  238. package/dist/elements/index.css.map +1 -1
  239. package/dist/elements/index.d.ts +13 -1
  240. package/dist/elements/index.d.ts.map +1 -1
  241. package/dist/elements/index.js +1 -12455
  242. package/dist/elements/index.js.map +1 -1
  243. package/dist/elements/index.mjs +1 -12233
  244. package/dist/elements/index.mjs.map +1 -1
  245. package/dist/index.css +1 -22
  246. package/dist/index.css.map +1 -1
  247. package/dist/index.js +2 -12490
  248. package/dist/index.js.map +1 -1
  249. package/dist/index.mjs +2 -12262
  250. package/dist/index.mjs.map +1 -1
  251. package/dist/schemas/index.js +2 -54
  252. package/dist/schemas/index.js.map +1 -1
  253. package/dist/schemas/index.mjs +2 -48
  254. package/dist/schemas/index.mjs.map +1 -1
  255. package/dist/styles/defaults.css +151 -0
  256. package/dist/styles/index.js +1 -166
  257. package/dist/styles/index.js.map +1 -1
  258. package/dist/styles/index.mjs +1 -129
  259. package/dist/styles/index.mjs.map +1 -1
  260. package/dist/utils/index.js +1 -12
  261. package/dist/utils/index.js.map +1 -1
  262. package/dist/utils/index.mjs +1 -10
  263. package/dist/utils/index.mjs.map +1 -1
  264. package/package.json +9 -7
  265. package/src/elements/Accordion/Accordion.stories.tsx +1 -1
  266. package/src/elements/AlertDialog/AlertDialog.stories.tsx +124 -0
  267. package/src/elements/Avatar/Avatar.stories.tsx +1 -1
  268. package/src/elements/Badge/Badge.stories.tsx +1 -1
  269. package/src/elements/Breadcrumbs/Breadcrumbs.stories.tsx +1 -1
  270. package/src/elements/Button/Button.stories.tsx +1 -1
  271. package/src/elements/ButtonGroup/ButtonGroup.stories.tsx +1 -1
  272. package/src/elements/Card/Card.stories.tsx +1 -1
  273. package/src/elements/Carousel/Carousel.stories.tsx +1 -1
  274. package/src/elements/Chart/Chart.stories.tsx +1 -1
  275. package/src/elements/Checkbox/Checkbox.stories.tsx +1 -1
  276. package/src/elements/CheckboxGroup/CheckboxGroup.stories.tsx +1 -1
  277. package/src/elements/Combobox/Combobox.stories.tsx +133 -0
  278. package/src/elements/DatePicker/DatePicker.stories.tsx +1 -1
  279. package/src/elements/Dropdown/Dropdown.stories.tsx +1 -1
  280. package/src/elements/FileField/FileField.stories.tsx +1 -1
  281. package/src/elements/FileField/FileProgress.stories.tsx +1 -1
  282. package/src/elements/FormLayout/FormLayout.stories.tsx +1 -1
  283. package/src/elements/Modal/Modal.stories.tsx +1 -1
  284. package/src/elements/NumberField/NumberField.stories.tsx +1 -1
  285. package/src/elements/OTPInput/OTPInput.stories.tsx +1 -1
  286. package/src/elements/Pagination/Pagination.stories.tsx +203 -0
  287. package/src/elements/Panel/Panel.stories.tsx +1 -1
  288. package/src/elements/PasswordField/PasswordField.stories.tsx +167 -0
  289. package/src/elements/Progress/Progress.stories.tsx +1 -1
  290. package/src/elements/RadioGroup/RadioGroup.stories.tsx +1 -1
  291. package/src/elements/Resizable/Resizable.stories.tsx +1 -1
  292. package/src/elements/SearchField/SearchField.stories.tsx +146 -0
  293. package/src/elements/Select/Select.stories.tsx +1 -1
  294. package/src/elements/Skeleton/Skeleton.stories.tsx +1 -1
  295. package/src/elements/Switch/Switch.stories.tsx +1 -1
  296. package/src/elements/Table/Table.stories.tsx +1 -1
  297. package/src/elements/Tabs/Tabs.stories.tsx +1 -1
  298. package/src/elements/TextField/TextField.stories.tsx +1 -1
  299. package/src/elements/TimeField/TimeField.stories.tsx +1 -1
  300. package/src/elements/Toast/Toast.stories.tsx +1 -1
  301. package/src/elements/Tooltip/Tooltip.stories.tsx +1 -1
@@ -0,0 +1,133 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { fn } from '@storybook/test';
3
+ import { Combobox, ComboboxItem, ComboboxSection } from './Combobox';
4
+
5
+ const meta = {
6
+ title: 'Elements/Combobox',
7
+ component: Combobox,
8
+ parameters: {
9
+ layout: 'centered',
10
+ docs: {
11
+ description: {
12
+ component: 'A filterable select/autocomplete input. Type to filter options, navigate with keyboard, or enter custom values. Built on React Aria ComboBox.',
13
+ },
14
+ },
15
+ },
16
+ tags: ['autodocs'],
17
+ argTypes: {
18
+ size: {
19
+ control: { type: 'select' },
20
+ options: ['sm', 'default', 'lg'],
21
+ },
22
+ },
23
+ args: {
24
+ onSelectionChange: fn(),
25
+ onInputChange: fn(),
26
+ },
27
+ } satisfies Meta<typeof Combobox>;
28
+
29
+ export default meta;
30
+ type Story = StoryObj<typeof meta>;
31
+
32
+ export const Default: Story = {
33
+ render: (args) => (
34
+ <Combobox label="Framework" placeholder="Select a framework..." {...args}>
35
+ <ComboboxItem id="react">React</ComboboxItem>
36
+ <ComboboxItem id="vue">Vue</ComboboxItem>
37
+ <ComboboxItem id="angular">Angular</ComboboxItem>
38
+ <ComboboxItem id="svelte">Svelte</ComboboxItem>
39
+ <ComboboxItem id="solid">SolidJS</ComboboxItem>
40
+ </Combobox>
41
+ ),
42
+ };
43
+
44
+ export const WithSections: Story = {
45
+ render: (args) => (
46
+ <Combobox label="Technology" placeholder="Choose..." {...args}>
47
+ <ComboboxSection header="Frontend">
48
+ <ComboboxItem id="react">React</ComboboxItem>
49
+ <ComboboxItem id="vue">Vue</ComboboxItem>
50
+ <ComboboxItem id="angular">Angular</ComboboxItem>
51
+ </ComboboxSection>
52
+ <ComboboxSection header="Backend">
53
+ <ComboboxItem id="express">Express</ComboboxItem>
54
+ <ComboboxItem id="fastify">Fastify</ComboboxItem>
55
+ <ComboboxItem id="nest">NestJS</ComboboxItem>
56
+ </ComboboxSection>
57
+ </Combobox>
58
+ ),
59
+ };
60
+
61
+ export const AllowsCustomValue: Story = {
62
+ render: (args) => (
63
+ <Combobox label="Color" placeholder="Type a color..." allowsCustomValue {...args}>
64
+ <ComboboxItem id="red">Red</ComboboxItem>
65
+ <ComboboxItem id="blue">Blue</ComboboxItem>
66
+ <ComboboxItem id="green">Green</ComboboxItem>
67
+ </Combobox>
68
+ ),
69
+ };
70
+
71
+ export const WithDescription: Story = {
72
+ render: (args) => (
73
+ <Combobox label="Language" description="Choose your preferred language" placeholder="Select..." {...args}>
74
+ <ComboboxItem id="en">English</ComboboxItem>
75
+ <ComboboxItem id="fr">French</ComboboxItem>
76
+ <ComboboxItem id="de">German</ComboboxItem>
77
+ </Combobox>
78
+ ),
79
+ };
80
+
81
+ export const WithError: Story = {
82
+ render: (args) => (
83
+ <Combobox label="Country" errorMessage="Selection is required" placeholder="Select..." {...args}>
84
+ <ComboboxItem id="us">United States</ComboboxItem>
85
+ <ComboboxItem id="uk">United Kingdom</ComboboxItem>
86
+ </Combobox>
87
+ ),
88
+ };
89
+
90
+ export const Disabled: Story = {
91
+ render: (args) => (
92
+ <Combobox label="Disabled" placeholder="Cannot interact" isDisabled {...args}>
93
+ <ComboboxItem id="a">Option A</ComboboxItem>
94
+ </Combobox>
95
+ ),
96
+ };
97
+
98
+ export const Small: Story = {
99
+ render: (args) => (
100
+ <Combobox label="Small" size="sm" placeholder="Small size..." {...args}>
101
+ <ComboboxItem id="a">Option A</ComboboxItem>
102
+ <ComboboxItem id="b">Option B</ComboboxItem>
103
+ </Combobox>
104
+ ),
105
+ };
106
+
107
+ export const Large: Story = {
108
+ render: (args) => (
109
+ <Combobox label="Large" size="lg" placeholder="Large size..." {...args}>
110
+ <ComboboxItem id="a">Option A</ComboboxItem>
111
+ <ComboboxItem id="b">Option B</ComboboxItem>
112
+ </Combobox>
113
+ ),
114
+ };
115
+
116
+ export const AllSizes: Story = {
117
+ render: () => (
118
+ <div className="flex flex-col gap-4 w-[400px]">
119
+ <Combobox label="Small" size="sm" placeholder="Small...">
120
+ <ComboboxItem id="a">Option A</ComboboxItem>
121
+ <ComboboxItem id="b">Option B</ComboboxItem>
122
+ </Combobox>
123
+ <Combobox label="Default" placeholder="Default...">
124
+ <ComboboxItem id="a">Option A</ComboboxItem>
125
+ <ComboboxItem id="b">Option B</ComboboxItem>
126
+ </Combobox>
127
+ <Combobox label="Large" size="lg" placeholder="Large...">
128
+ <ComboboxItem id="a">Option A</ComboboxItem>
129
+ <ComboboxItem id="b">Option B</ComboboxItem>
130
+ </Combobox>
131
+ </div>
132
+ ),
133
+ };
@@ -5,7 +5,7 @@
5
5
  * DateField, and Calendar variants and use cases.
6
6
  */
7
7
 
8
- import type { Meta, StoryObj } from '@storybook/nextjs';
8
+ import type { Meta, StoryObj } from '@storybook/react-vite';
9
9
  import { useState } from 'react';
10
10
  import { DatePicker, DateRangePicker, DateField, Calendar } from './index';
11
11
  import { parseDate, today, getLocalTimeZone, isWeekend } from '@internationalized/date';
@@ -5,7 +5,7 @@
5
5
  * @see tasks.md T027 (Storybook stories with 7+ examples)
6
6
  */
7
7
 
8
- import type { Meta, StoryObj } from '@storybook/nextjs';
8
+ import type { Meta, StoryObj } from '@storybook/react-vite';
9
9
  import { Dropdown } from './Dropdown';
10
10
  import { Button } from '../Button';
11
11
  import {
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import { useState, type FormEvent } from 'react';
10
- import type { Meta, StoryObj } from '@storybook/nextjs';
10
+ import type { Meta, StoryObj } from '@storybook/react-vite';
11
11
  import { FileField } from './FileField';
12
12
  import { formatFileSize, formatAcceptedTypes } from './utils';
13
13
 
@@ -5,7 +5,7 @@
5
5
  * @see future-plan.md Section 2: Upload Progress Indication
6
6
  */
7
7
 
8
- import type { Meta, StoryObj } from '@storybook/nextjs';
8
+ import type { Meta, StoryObj } from '@storybook/react-vite';
9
9
  import { FileProgress } from './FileProgress';
10
10
 
11
11
  // Create mock file helper
@@ -6,7 +6,7 @@
6
6
  * @see FormLayout-design-decisions.md (Visual specifications)
7
7
  */
8
8
 
9
- import type { Meta, StoryObj } from '@storybook/nextjs';
9
+ import type { Meta, StoryObj } from '@storybook/react-vite';
10
10
  import { FormLayout } from './FormLayout';
11
11
  import { Button } from '../Button/Button';
12
12
  import { TextField } from '../TextField/TextField';
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import { useState } from 'react';
11
- import type { Meta, StoryObj } from '@storybook/nextjs';
11
+ import type { Meta, StoryObj } from '@storybook/react-vite';
12
12
  import { Modal } from './Modal';
13
13
  import { Button } from '../Button';
14
14
 
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import { useState, type FormEventHandler } from 'react';
9
- import type { Meta, StoryObj } from '@storybook/nextjs';
9
+ import type { Meta, StoryObj } from '@storybook/react-vite';
10
10
  import { NumberField } from './index';
11
11
 
12
12
  const meta = {
@@ -6,7 +6,7 @@
6
6
  * @see ACCESSIBILITY.md (WCAG 2.2 AAA Compliance Documentation)
7
7
  */
8
8
 
9
- import type { Meta, StoryObj } from '@storybook/nextjs';
9
+ import type { Meta, StoryObj } from '@storybook/react-vite';
10
10
  import { OTPInput } from './OTPInput';
11
11
  import { useState } from 'react';
12
12
 
@@ -0,0 +1,203 @@
1
+ import { useState } from 'react';
2
+ import type { Meta, StoryObj } from '@storybook/react-vite';
3
+ import { Pagination } from './Pagination';
4
+
5
+ const meta = {
6
+ title: 'Elements/Pagination',
7
+ component: Pagination,
8
+ parameters: {
9
+ layout: 'centered',
10
+ docs: {
11
+ description: {
12
+ component: 'Navigation component for paginated content. Supports page numbers, prev/next, first/last buttons, and multiple visual variants.',
13
+ },
14
+ },
15
+ },
16
+ tags: ['autodocs'],
17
+ argTypes: {
18
+ size: {
19
+ control: { type: 'select' },
20
+ options: ['sm', 'default', 'lg'],
21
+ },
22
+ variant: {
23
+ control: { type: 'select' },
24
+ options: ['default', 'outline', 'ghost'],
25
+ },
26
+ },
27
+ } satisfies Meta<typeof Pagination>;
28
+
29
+ export default meta;
30
+ type Story = StoryObj<typeof meta>;
31
+
32
+ export const Default: Story = {
33
+ args: {
34
+ page: 1,
35
+ totalPages: 10,
36
+ onPageChange: () => {},
37
+ },
38
+ };
39
+
40
+ export const Interactive: Story = {
41
+ render: () => {
42
+ const [page, setPage] = useState(1);
43
+ return (
44
+ <div className="flex flex-col items-center gap-4">
45
+ <Pagination page={page} totalPages={20} onPageChange={setPage} />
46
+ <p className="text-sm text-[var(--muted-foreground)]">
47
+ Page {page} of 20
48
+ </p>
49
+ </div>
50
+ );
51
+ },
52
+ };
53
+
54
+ export const MiddlePage: Story = {
55
+ args: {
56
+ page: 5,
57
+ totalPages: 10,
58
+ onPageChange: () => {},
59
+ },
60
+ };
61
+
62
+ export const LastPage: Story = {
63
+ args: {
64
+ page: 10,
65
+ totalPages: 10,
66
+ onPageChange: () => {},
67
+ },
68
+ };
69
+
70
+ export const FewPages: Story = {
71
+ args: {
72
+ page: 2,
73
+ totalPages: 3,
74
+ onPageChange: () => {},
75
+ },
76
+ };
77
+
78
+ export const SinglePage: Story = {
79
+ args: {
80
+ page: 1,
81
+ totalPages: 1,
82
+ onPageChange: () => {},
83
+ },
84
+ };
85
+
86
+ export const ManyPages: Story = {
87
+ args: {
88
+ page: 50,
89
+ totalPages: 100,
90
+ onPageChange: () => {},
91
+ },
92
+ };
93
+
94
+ export const OutlineVariant: Story = {
95
+ args: {
96
+ page: 3,
97
+ totalPages: 10,
98
+ variant: 'outline',
99
+ onPageChange: () => {},
100
+ },
101
+ };
102
+
103
+ export const GhostVariant: Story = {
104
+ args: {
105
+ page: 3,
106
+ totalPages: 10,
107
+ variant: 'ghost',
108
+ onPageChange: () => {},
109
+ },
110
+ };
111
+
112
+ export const SmallSize: Story = {
113
+ args: {
114
+ page: 3,
115
+ totalPages: 10,
116
+ size: 'sm',
117
+ onPageChange: () => {},
118
+ },
119
+ };
120
+
121
+ export const LargeSize: Story = {
122
+ args: {
123
+ page: 3,
124
+ totalPages: 10,
125
+ size: 'lg',
126
+ onPageChange: () => {},
127
+ },
128
+ };
129
+
130
+ export const Disabled: Story = {
131
+ args: {
132
+ page: 5,
133
+ totalPages: 10,
134
+ isDisabled: true,
135
+ onPageChange: () => {},
136
+ },
137
+ };
138
+
139
+ export const NoFirstLast: Story = {
140
+ args: {
141
+ page: 5,
142
+ totalPages: 10,
143
+ showFirstLast: false,
144
+ onPageChange: () => {},
145
+ },
146
+ };
147
+
148
+ export const NoPrevNext: Story = {
149
+ args: {
150
+ page: 5,
151
+ totalPages: 10,
152
+ showPrevNext: false,
153
+ onPageChange: () => {},
154
+ },
155
+ };
156
+
157
+ export const PageNumbersOnly: Story = {
158
+ args: {
159
+ page: 5,
160
+ totalPages: 10,
161
+ showFirstLast: false,
162
+ showPrevNext: false,
163
+ onPageChange: () => {},
164
+ },
165
+ };
166
+
167
+ export const AllVariants: Story = {
168
+ render: () => (
169
+ <div className="flex flex-col gap-6">
170
+ <div>
171
+ <p className="text-sm text-[var(--muted-foreground)] mb-2">Default</p>
172
+ <Pagination page={5} totalPages={10} variant="default" onPageChange={() => {}} />
173
+ </div>
174
+ <div>
175
+ <p className="text-sm text-[var(--muted-foreground)] mb-2">Outline</p>
176
+ <Pagination page={5} totalPages={10} variant="outline" onPageChange={() => {}} />
177
+ </div>
178
+ <div>
179
+ <p className="text-sm text-[var(--muted-foreground)] mb-2">Ghost</p>
180
+ <Pagination page={5} totalPages={10} variant="ghost" onPageChange={() => {}} />
181
+ </div>
182
+ </div>
183
+ ),
184
+ };
185
+
186
+ export const AllSizes: Story = {
187
+ render: () => (
188
+ <div className="flex flex-col gap-6">
189
+ <div>
190
+ <p className="text-sm text-[var(--muted-foreground)] mb-2">Small</p>
191
+ <Pagination page={5} totalPages={10} size="sm" onPageChange={() => {}} />
192
+ </div>
193
+ <div>
194
+ <p className="text-sm text-[var(--muted-foreground)] mb-2">Default</p>
195
+ <Pagination page={5} totalPages={10} size="default" onPageChange={() => {}} />
196
+ </div>
197
+ <div>
198
+ <p className="text-sm text-[var(--muted-foreground)] mb-2">Large</p>
199
+ <Pagination page={5} totalPages={10} size="lg" onPageChange={() => {}} />
200
+ </div>
201
+ </div>
202
+ ),
203
+ };
@@ -13,7 +13,7 @@
13
13
  */
14
14
 
15
15
  import { useState, type ReactElement } from 'react';
16
- import type { Meta, StoryObj } from '@storybook/nextjs';
16
+ import type { Meta, StoryObj } from '@storybook/react-vite';
17
17
  import { Panel } from './Panel';
18
18
  import { Button } from '../Button';
19
19
 
@@ -0,0 +1,167 @@
1
+ /**
2
+ * PasswordField Component Stories
3
+ * Storybook stories for PasswordField component demonstrating all variants, sizes, and states
4
+ */
5
+
6
+ import type { Meta, StoryObj } from '@storybook/react-vite';
7
+ import { PasswordField } from './PasswordField';
8
+
9
+ const meta = {
10
+ title: 'Elements/PasswordField',
11
+ component: PasswordField,
12
+ parameters: {
13
+ layout: 'centered',
14
+ docs: {
15
+ description: {
16
+ component:
17
+ 'A specialized password input with show/hide toggle. Built on Themis TextField for WCAG 2.2 AAA compliance.',
18
+ },
19
+ },
20
+ },
21
+ tags: ['autodocs'],
22
+ argTypes: {
23
+ size: {
24
+ control: { type: 'select' },
25
+ options: ['sm', 'default', 'lg'],
26
+ description: 'The size variant of the password field',
27
+ },
28
+ isDisabled: {
29
+ control: 'boolean',
30
+ description: 'Whether the password field is disabled',
31
+ },
32
+ isReadOnly: {
33
+ control: 'boolean',
34
+ description: 'Whether the password field is read-only',
35
+ },
36
+ isRequired: {
37
+ control: 'boolean',
38
+ description: 'Whether the password field is required',
39
+ },
40
+ hasToggle: {
41
+ control: 'boolean',
42
+ description: 'Whether to show the password visibility toggle',
43
+ },
44
+ },
45
+ } satisfies Meta<typeof PasswordField>;
46
+
47
+ export default meta;
48
+ type Story = StoryObj<typeof meta>;
49
+
50
+ export const Default: Story = {
51
+ args: {
52
+ label: 'Password',
53
+ placeholder: 'Enter your password',
54
+ },
55
+ };
56
+
57
+ export const WithDescription: Story = {
58
+ args: {
59
+ label: 'Password',
60
+ placeholder: 'Enter your password',
61
+ description: 'Must be at least 8 characters',
62
+ },
63
+ };
64
+
65
+ export const WithError: Story = {
66
+ args: {
67
+ label: 'Password',
68
+ placeholder: 'Enter your password',
69
+ errorMessage: 'Password must be at least 8 characters',
70
+ },
71
+ };
72
+
73
+ export const WithSuccess: Story = {
74
+ args: {
75
+ label: 'Password',
76
+ placeholder: 'Enter your password',
77
+ successMessage: 'Strong password!',
78
+ defaultValue: 'SecureP@ss123',
79
+ },
80
+ };
81
+
82
+ export const NoToggle: Story = {
83
+ args: {
84
+ label: 'Password',
85
+ placeholder: 'Enter your password',
86
+ hasToggle: false,
87
+ },
88
+ };
89
+
90
+ export const NewPassword: Story = {
91
+ args: {
92
+ label: 'New Password',
93
+ placeholder: 'Create a password',
94
+ autoComplete: 'new-password',
95
+ description: 'Use at least 8 characters with a mix of letters, numbers, and symbols',
96
+ },
97
+ };
98
+
99
+ export const Required: Story = {
100
+ args: {
101
+ label: 'Password',
102
+ placeholder: 'Required',
103
+ isRequired: true,
104
+ },
105
+ };
106
+
107
+ export const Disabled: Story = {
108
+ args: {
109
+ label: 'Password',
110
+ placeholder: 'Disabled',
111
+ isDisabled: true,
112
+ },
113
+ };
114
+
115
+ export const ReadOnly: Story = {
116
+ args: {
117
+ label: 'Password',
118
+ defaultValue: 'readonly-value',
119
+ isReadOnly: true,
120
+ },
121
+ };
122
+
123
+ export const Small: Story = {
124
+ args: {
125
+ label: 'Password',
126
+ placeholder: 'Small',
127
+ size: 'sm',
128
+ },
129
+ };
130
+
131
+ export const Large: Story = {
132
+ args: {
133
+ label: 'Password',
134
+ placeholder: 'Large',
135
+ size: 'lg',
136
+ },
137
+ };
138
+
139
+ export const AllSizes: Story = {
140
+ render: () => (
141
+ <div className="flex flex-col gap-4 w-[400px]">
142
+ <PasswordField label="Small" size="sm" placeholder="Small password..." />
143
+ <PasswordField label="Default" size="default" placeholder="Default password..." />
144
+ <PasswordField label="Large" size="lg" placeholder="Large password..." />
145
+ </div>
146
+ ),
147
+ };
148
+
149
+ export const LoginForm: Story = {
150
+ render: () => (
151
+ <div className="flex flex-col gap-4 w-[400px]">
152
+ <PasswordField
153
+ label="Current Password"
154
+ placeholder="Enter current password"
155
+ autoComplete="current-password"
156
+ isRequired
157
+ />
158
+ <PasswordField
159
+ label="New Password"
160
+ placeholder="Create new password"
161
+ autoComplete="new-password"
162
+ description="Must be at least 8 characters"
163
+ isRequired
164
+ />
165
+ </div>
166
+ ),
167
+ };
@@ -7,7 +7,7 @@
7
7
  */
8
8
 
9
9
  import { useState, useEffect } from 'react';
10
- import type { Meta, StoryObj } from '@storybook/nextjs';
10
+ import type { Meta, StoryObj } from '@storybook/react-vite';
11
11
  import { Progress } from './Progress';
12
12
 
13
13
  const meta = {
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import { useState } from 'react';
11
- import type { Meta, StoryObj } from '@storybook/nextjs';
11
+ import type { Meta, StoryObj } from '@storybook/react-vite';
12
12
  import { RadioGroup, Radio } from './RadioGroup';
13
13
 
14
14
  const meta = {
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import { useState, type ReactElement } from 'react';
11
- import type { Meta, StoryObj } from '@storybook/nextjs';
11
+ import type { Meta, StoryObj } from '@storybook/react-vite';
12
12
  import {
13
13
  ResizablePanelGroup,
14
14
  ResizablePanel,