@tribepad/themis 1.0.1 → 1.0.3

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 (308) 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/NumberField.variants.d.ts +1 -1
  115. package/dist/elements/NumberField/index.js +1 -666
  116. package/dist/elements/NumberField/index.js.map +1 -1
  117. package/dist/elements/NumberField/index.mjs +1 -654
  118. package/dist/elements/NumberField/index.mjs.map +1 -1
  119. package/dist/elements/OTPInput/OTPInput.d.ts.map +1 -1
  120. package/dist/elements/OTPInput/index.js +1 -734
  121. package/dist/elements/OTPInput/index.js.map +1 -1
  122. package/dist/elements/OTPInput/index.mjs +1 -732
  123. package/dist/elements/OTPInput/index.mjs.map +1 -1
  124. package/dist/elements/Pagination/Pagination.d.ts +45 -0
  125. package/dist/elements/Pagination/Pagination.d.ts.map +1 -0
  126. package/dist/elements/Pagination/Pagination.styles.d.ts +10 -0
  127. package/dist/elements/Pagination/Pagination.styles.d.ts.map +1 -0
  128. package/dist/elements/Pagination/Pagination.types.d.ts +55 -0
  129. package/dist/elements/Pagination/Pagination.types.d.ts.map +1 -0
  130. package/dist/elements/Pagination/index.d.ts +21 -0
  131. package/dist/elements/Pagination/index.d.ts.map +1 -0
  132. package/dist/elements/Pagination/index.js +3 -0
  133. package/dist/elements/Pagination/index.js.map +1 -0
  134. package/dist/elements/Pagination/index.mjs +3 -0
  135. package/dist/elements/Pagination/index.mjs.map +1 -0
  136. package/dist/elements/Panel/index.js +1 -330
  137. package/dist/elements/Panel/index.js.map +1 -1
  138. package/dist/elements/Panel/index.mjs +1 -323
  139. package/dist/elements/Panel/index.mjs.map +1 -1
  140. package/dist/elements/PasswordField/PasswordField.d.ts +27 -0
  141. package/dist/elements/PasswordField/PasswordField.d.ts.map +1 -0
  142. package/dist/elements/PasswordField/PasswordField.styles.d.ts +32 -0
  143. package/dist/elements/PasswordField/PasswordField.styles.d.ts.map +1 -0
  144. package/dist/elements/PasswordField/PasswordField.types.d.ts +100 -0
  145. package/dist/elements/PasswordField/PasswordField.types.d.ts.map +1 -0
  146. package/dist/elements/PasswordField/index.css +2 -0
  147. package/dist/elements/PasswordField/index.css.map +1 -0
  148. package/dist/elements/PasswordField/index.d.ts +20 -0
  149. package/dist/elements/PasswordField/index.d.ts.map +1 -0
  150. package/dist/elements/PasswordField/index.js +3 -0
  151. package/dist/elements/PasswordField/index.js.map +1 -0
  152. package/dist/elements/PasswordField/index.mjs +3 -0
  153. package/dist/elements/PasswordField/index.mjs.map +1 -0
  154. package/dist/elements/Progress/index.js +1 -187
  155. package/dist/elements/Progress/index.js.map +1 -1
  156. package/dist/elements/Progress/index.mjs +1 -181
  157. package/dist/elements/Progress/index.mjs.map +1 -1
  158. package/dist/elements/RadioGroup/index.js +1 -369
  159. package/dist/elements/RadioGroup/index.js.map +1 -1
  160. package/dist/elements/RadioGroup/index.mjs +1 -359
  161. package/dist/elements/RadioGroup/index.mjs.map +1 -1
  162. package/dist/elements/Resizable/index.js +1 -1580
  163. package/dist/elements/Resizable/index.js.map +1 -1
  164. package/dist/elements/Resizable/index.mjs +1 -1566
  165. package/dist/elements/Resizable/index.mjs.map +1 -1
  166. package/dist/elements/SearchField/SearchField.d.ts +27 -0
  167. package/dist/elements/SearchField/SearchField.d.ts.map +1 -0
  168. package/dist/elements/SearchField/SearchField.styles.d.ts +32 -0
  169. package/dist/elements/SearchField/SearchField.styles.d.ts.map +1 -0
  170. package/dist/elements/SearchField/SearchField.types.d.ts +45 -0
  171. package/dist/elements/SearchField/SearchField.types.d.ts.map +1 -0
  172. package/dist/elements/SearchField/index.css +2 -0
  173. package/dist/elements/SearchField/index.css.map +1 -0
  174. package/dist/elements/SearchField/index.d.ts +21 -0
  175. package/dist/elements/SearchField/index.d.ts.map +1 -0
  176. package/dist/elements/SearchField/index.js +3 -0
  177. package/dist/elements/SearchField/index.js.map +1 -0
  178. package/dist/elements/SearchField/index.mjs +3 -0
  179. package/dist/elements/SearchField/index.mjs.map +1 -0
  180. package/dist/elements/Select/Select.d.ts +19 -48
  181. package/dist/elements/Select/Select.d.ts.map +1 -1
  182. package/dist/elements/Select/Select.styles.d.ts +55 -0
  183. package/dist/elements/Select/Select.styles.d.ts.map +1 -0
  184. package/dist/elements/Select/index.js +1 -589
  185. package/dist/elements/Select/index.js.map +1 -1
  186. package/dist/elements/Select/index.mjs +1 -582
  187. package/dist/elements/Select/index.mjs.map +1 -1
  188. package/dist/elements/Skeleton/index.js +1 -82
  189. package/dist/elements/Skeleton/index.js.map +1 -1
  190. package/dist/elements/Skeleton/index.mjs +1 -78
  191. package/dist/elements/Skeleton/index.mjs.map +1 -1
  192. package/dist/elements/Switch/index.js +1 -179
  193. package/dist/elements/Switch/index.js.map +1 -1
  194. package/dist/elements/Switch/index.mjs +1 -173
  195. package/dist/elements/Switch/index.mjs.map +1 -1
  196. package/dist/elements/Table/Table.d.ts +3 -24
  197. package/dist/elements/Table/Table.d.ts.map +1 -1
  198. package/dist/elements/Table/Table.styles.d.ts +24 -0
  199. package/dist/elements/Table/Table.styles.d.ts.map +1 -0
  200. package/dist/elements/Table/index.js +1 -595
  201. package/dist/elements/Table/index.js.map +1 -1
  202. package/dist/elements/Table/index.mjs +1 -578
  203. package/dist/elements/Table/index.mjs.map +1 -1
  204. package/dist/elements/Tabs/Tabs.d.ts +5 -3
  205. package/dist/elements/Tabs/Tabs.d.ts.map +1 -1
  206. package/dist/elements/Tabs/Tabs.types.d.ts +15 -0
  207. package/dist/elements/Tabs/Tabs.types.d.ts.map +1 -1
  208. package/dist/elements/Tabs/index.js +1 -337
  209. package/dist/elements/Tabs/index.js.map +1 -1
  210. package/dist/elements/Tabs/index.mjs +1 -320
  211. package/dist/elements/Tabs/index.mjs.map +1 -1
  212. package/dist/elements/TextField/TextField.d.ts +6 -42
  213. package/dist/elements/TextField/TextField.d.ts.map +1 -1
  214. package/dist/elements/TextField/TextField.hooks.d.ts +63 -0
  215. package/dist/elements/TextField/TextField.hooks.d.ts.map +1 -0
  216. package/dist/elements/TextField/TextField.icons.d.ts +19 -0
  217. package/dist/elements/TextField/TextField.icons.d.ts.map +1 -0
  218. package/dist/elements/TextField/TextField.styles.d.ts +37 -0
  219. package/dist/elements/TextField/TextField.styles.d.ts.map +1 -0
  220. package/dist/elements/TextField/TextField.types.d.ts +3 -0
  221. package/dist/elements/TextField/TextField.types.d.ts.map +1 -1
  222. package/dist/elements/TextField/index.css +1 -22
  223. package/dist/elements/TextField/index.css.map +1 -1
  224. package/dist/elements/TextField/index.js +1 -902
  225. package/dist/elements/TextField/index.js.map +1 -1
  226. package/dist/elements/TextField/index.mjs +1 -882
  227. package/dist/elements/TextField/index.mjs.map +1 -1
  228. package/dist/elements/TimeField/index.js +1 -254
  229. package/dist/elements/TimeField/index.js.map +1 -1
  230. package/dist/elements/TimeField/index.mjs +1 -238
  231. package/dist/elements/TimeField/index.mjs.map +1 -1
  232. package/dist/elements/Toast/Toast.d.ts +0 -22
  233. package/dist/elements/Toast/Toast.d.ts.map +1 -1
  234. package/dist/elements/Toast/index.js +1 -737
  235. package/dist/elements/Toast/index.js.map +1 -1
  236. package/dist/elements/Toast/index.mjs +1 -724
  237. package/dist/elements/Toast/index.mjs.map +1 -1
  238. package/dist/elements/Tooltip/index.js +1 -323
  239. package/dist/elements/Tooltip/index.js.map +1 -1
  240. package/dist/elements/Tooltip/index.mjs +1 -310
  241. package/dist/elements/Tooltip/index.mjs.map +1 -1
  242. package/dist/elements/index.css +1 -22
  243. package/dist/elements/index.css.map +1 -1
  244. package/dist/elements/index.d.ts +13 -1
  245. package/dist/elements/index.d.ts.map +1 -1
  246. package/dist/elements/index.js +1 -12455
  247. package/dist/elements/index.js.map +1 -1
  248. package/dist/elements/index.mjs +1 -12233
  249. package/dist/elements/index.mjs.map +1 -1
  250. package/dist/index.css +1 -22
  251. package/dist/index.css.map +1 -1
  252. package/dist/index.js +2 -12490
  253. package/dist/index.js.map +1 -1
  254. package/dist/index.mjs +2 -12262
  255. package/dist/index.mjs.map +1 -1
  256. package/dist/schemas/index.js +2 -54
  257. package/dist/schemas/index.js.map +1 -1
  258. package/dist/schemas/index.mjs +2 -48
  259. package/dist/schemas/index.mjs.map +1 -1
  260. package/dist/styles/defaults.css +151 -0
  261. package/dist/styles/index.js +1 -166
  262. package/dist/styles/index.js.map +1 -1
  263. package/dist/styles/index.mjs +1 -129
  264. package/dist/styles/index.mjs.map +1 -1
  265. package/dist/styles/shared-variants.d.ts +3 -3
  266. package/dist/styles/shared-variants.d.ts.map +1 -1
  267. package/dist/utils/index.js +1 -12
  268. package/dist/utils/index.js.map +1 -1
  269. package/dist/utils/index.mjs +1 -10
  270. package/dist/utils/index.mjs.map +1 -1
  271. package/package.json +9 -7
  272. package/src/elements/Accordion/Accordion.stories.tsx +1 -1
  273. package/src/elements/AlertDialog/AlertDialog.stories.tsx +124 -0
  274. package/src/elements/Avatar/Avatar.stories.tsx +1 -1
  275. package/src/elements/Badge/Badge.stories.tsx +1 -1
  276. package/src/elements/Breadcrumbs/Breadcrumbs.stories.tsx +1 -1
  277. package/src/elements/Button/Button.stories.tsx +1 -1
  278. package/src/elements/ButtonGroup/ButtonGroup.stories.tsx +1 -1
  279. package/src/elements/Card/Card.stories.tsx +1 -1
  280. package/src/elements/Carousel/Carousel.stories.tsx +1 -1
  281. package/src/elements/Chart/Chart.stories.tsx +1 -1
  282. package/src/elements/Checkbox/Checkbox.stories.tsx +1 -1
  283. package/src/elements/CheckboxGroup/CheckboxGroup.stories.tsx +4 -4
  284. package/src/elements/Combobox/Combobox.stories.tsx +133 -0
  285. package/src/elements/DatePicker/DatePicker.stories.tsx +1 -1
  286. package/src/elements/Dropdown/Dropdown.stories.tsx +1 -1
  287. package/src/elements/FileField/FileField.stories.tsx +2 -2
  288. package/src/elements/FileField/FileProgress.stories.tsx +1 -1
  289. package/src/elements/FormLayout/FormLayout.stories.tsx +1 -1
  290. package/src/elements/Modal/Modal.stories.tsx +1 -1
  291. package/src/elements/NumberField/NumberField.stories.tsx +1 -1
  292. package/src/elements/OTPInput/OTPInput.stories.tsx +1 -1
  293. package/src/elements/Pagination/Pagination.stories.tsx +203 -0
  294. package/src/elements/Panel/Panel.stories.tsx +1 -1
  295. package/src/elements/PasswordField/PasswordField.stories.tsx +167 -0
  296. package/src/elements/Progress/Progress.stories.tsx +7 -2
  297. package/src/elements/RadioGroup/RadioGroup.stories.tsx +3 -3
  298. package/src/elements/Resizable/Resizable.stories.tsx +1 -1
  299. package/src/elements/SearchField/SearchField.stories.tsx +146 -0
  300. package/src/elements/Select/Select.stories.tsx +1 -1
  301. package/src/elements/Skeleton/Skeleton.stories.tsx +1 -1
  302. package/src/elements/Switch/Switch.stories.tsx +1 -1
  303. package/src/elements/Table/Table.stories.tsx +1 -1
  304. package/src/elements/Tabs/Tabs.stories.tsx +46 -2
  305. package/src/elements/TextField/TextField.stories.tsx +1 -1
  306. package/src/elements/TimeField/TimeField.stories.tsx +1 -1
  307. package/src/elements/Toast/Toast.stories.tsx +1 -1
  308. 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
 
@@ -610,7 +610,7 @@ export const FormWithFileField: Story = {
610
610
  <label className="block text-sm font-medium mb-1">Name</label>
611
611
  <input
612
612
  type="text"
613
- className="w-full rounded-md border border-[var(--input)] px-3 py-2"
613
+ className="w-full rounded-md border border-[var(--input-border)] px-3 py-2"
614
614
  placeholder="Your name"
615
615
  />
616
616
  </div>
@@ -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 = {
@@ -612,6 +612,10 @@ export const StorageUsage: Story = {
612
612
  };
613
613
 
614
614
  export const MultipleProgress: Story = {
615
+ args: {
616
+ size: "lg"
617
+ },
618
+
615
619
  render: () => (
616
620
  <div className="w-[400px] space-y-4">
617
621
  <Progress
@@ -637,13 +641,14 @@ export const MultipleProgress: Story = {
637
641
  />
638
642
  </div>
639
643
  ),
644
+
640
645
  parameters: {
641
646
  docs: {
642
647
  description: {
643
648
  story: 'Multiple progress bars showing task list with different states.',
644
649
  },
645
650
  },
646
- },
651
+ }
647
652
  };
648
653
 
649
654
  export const LoadingData: Story = {
@@ -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 = {
@@ -654,8 +654,8 @@ export const SurveyQuestion: Story = {
654
654
 
655
655
  export const DangerZone: Story = {
656
656
  render: () => (
657
- <div className="w-96 rounded-lg border border-[var(--destructive)] bg-[var(--background)] p-6">
658
- <h3 className="mb-4 text-lg font-semibold text-[var(--destructive)]">Danger Zone</h3>
657
+ <div className="w-96 rounded-lg border border-[var(--destructive-background)] bg-[var(--background)] p-6">
658
+ <h3 className="mb-4 text-lg font-semibold text-[var(--destructive-background)]">Danger Zone</h3>
659
659
  <RadioGroup
660
660
  variant="destructive"
661
661
  label="Delete your account?"
@@ -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,