siesa-ui-kit 1.0.4 → 1.0.5
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.
- package/README.md +89 -115
- package/bin/install.cjs +502 -502
- package/bin/prepare-publish.cjs +28 -28
- package/bin/restore-folders.cjs +28 -28
- package/claude/agents/siesa-ui-kit-specialist.md +2401 -2445
- package/claude/prompts/component-template.md +121 -121
- package/claude/settings.local.json +61 -72
- package/docs/border-radius.md +1261 -1261
- package/docs/colors.md +832 -832
- package/docs/dark-mode-guide.md +1426 -1426
- package/docs/filters.md +1243 -1243
- package/docs/icons.md +1283 -1264
- package/docs/shadows.md +1377 -1377
- package/docs/spacing.md +1684 -1684
- package/docs/typography.md +1268 -1268
- package/package.json +83 -111
- package/postcss.config.cjs +6 -6
- package/src/App.css +42 -42
- package/src/App.tsx +8 -8
- package/src/ButtonTest.tsx +147 -147
- package/src/assets/fonts/README.md +261 -261
- package/src/components/Alert/Alert.stories.tsx +332 -332
- package/src/components/Alert/Alert.tsx +106 -106
- package/src/components/Alert/Alert.types.ts +54 -54
- package/src/components/Avatar/Avatar.stories.tsx +494 -494
- package/src/components/Avatar/Avatar.tsx +143 -143
- package/src/components/Avatar/Avatar.types.ts +53 -53
- package/src/components/Badge/Badge.stories.tsx +339 -339
- package/src/components/Badge/Badge.tsx +278 -278
- package/src/components/Badge/Badge.types.ts +58 -58
- package/src/components/Button/Button.stories.tsx +950 -950
- package/src/components/Button/Button.tsx +337 -337
- package/src/components/Button/Button.types.ts +180 -180
- package/src/components/Button/icons.tsx +87 -48
- package/src/components/Button/index.ts +3 -3
- package/src/components/Checkbox/Checkbox.stories.tsx +453 -453
- package/src/components/Checkbox/Checkbox.tsx +208 -208
- package/src/components/Checkbox/Checkbox.types.ts +61 -61
- package/src/components/DescriptionList/DescriptionList.stories.tsx +250 -250
- package/src/components/DescriptionList/DescriptionList.tsx +96 -96
- package/src/components/DescriptionList/DescriptionList.types.ts +29 -29
- package/src/components/Divider/Divider.stories.tsx +263 -263
- package/src/components/Divider/Divider.tsx +80 -80
- package/src/components/Divider/Divider.types.ts +24 -24
- package/src/components/Dropdown/Dropdown.stories.tsx +552 -552
- package/src/components/Dropdown/Dropdown.tsx +422 -422
- package/src/components/Dropdown/Dropdown.types.ts +146 -146
- package/src/components/Dropdown/README.md +266 -266
- package/src/components/Dropdown/icons.tsx +72 -72
- package/src/components/Dropdown/index.ts +8 -8
- package/src/components/Input/Input.stories.tsx +583 -583
- package/src/components/Input/Input.tsx +204 -204
- package/src/components/Input/Input.types.ts +80 -80
- package/src/components/Input/icons.tsx +145 -145
- package/src/components/Input/index.ts +2 -2
- package/src/components/LoginView/LoginView.stories.tsx +148 -148
- package/src/components/LoginView/LoginView.tsx +426 -426
- package/src/components/LoginView/LoginView.types.ts +52 -52
- package/src/components/LoginView/README.md +396 -396
- package/src/components/LoginView/icons.tsx +85 -85
- package/src/components/LoginView/index.ts +3 -3
- package/src/components/Navbar/Navbar.stories.tsx +810 -810
- package/src/components/Navbar/Navbar.tsx +755 -755
- package/src/components/Navbar/Navbar.types.ts +219 -219
- package/src/components/Navbar/README.md +279 -279
- package/src/components/Navbar/icons.tsx +102 -102
- package/src/components/Navbar/index.ts +8 -8
- package/src/components/NavigationBar/NavigationBar.stories.tsx +406 -406
- package/src/components/NavigationBar/NavigationBar.tsx +246 -246
- package/src/components/NavigationBar/NavigationBar.types.ts +74 -74
- package/src/components/NavigationBar/README.md +469 -469
- package/src/components/NavigationBar/index.ts +2 -2
- package/src/components/NavigationRail/NavigationRail.stories.tsx +417 -417
- package/src/components/NavigationRail/NavigationRail.tsx +418 -418
- package/src/components/NavigationRail/NavigationRail.types.ts +109 -109
- package/src/components/NavigationRail/README.md +224 -224
- package/src/components/NavigationRail/index.ts +2 -2
- package/src/components/Notification/Notification.stories.tsx +513 -513
- package/src/components/Notification/Notification.tsx +145 -145
- package/src/components/Notification/Notification.types.ts +142 -142
- package/src/components/Notification/README.md +409 -409
- package/src/components/Notification/index.ts +3 -3
- package/src/components/POSConvention/POSConvention.stories.tsx +235 -235
- package/src/components/POSConvention/POSConvention.tsx +129 -129
- package/src/components/POSConvention/POSConvention.types.ts +38 -38
- package/src/components/POSConvention/README.md +123 -123
- package/src/components/POSConvention/icons.tsx +45 -45
- package/src/components/POSConvention/index.ts +3 -3
- package/src/components/POSLocationButton/POSLocationButton.stories.tsx +531 -531
- package/src/components/POSLocationButton/POSLocationButton.tsx +247 -247
- package/src/components/POSLocationButton/POSLocationButton.types.ts +87 -87
- package/src/components/POSLocationButton/README.md +253 -253
- package/src/components/POSLocationButton/icons.tsx +120 -120
- package/src/components/POSLocationButton/index.ts +14 -14
- package/src/components/POSNumberButton/POSNumberButton.stories.tsx +415 -415
- package/src/components/POSNumberButton/POSNumberButton.tsx +179 -179
- package/src/components/POSNumberButton/POSNumberButton.types.ts +51 -51
- package/src/components/POSNumberButton/README.md +321 -321
- package/src/components/POSNumberButton/index.ts +3 -3
- package/src/components/POSProductButton/POSProductButton.stories.tsx +318 -318
- package/src/components/POSProductButton/POSProductButton.tsx +152 -152
- package/src/components/POSProductButton/POSProductButton.types.ts +46 -46
- package/src/components/POSProductButton/README.md +269 -269
- package/src/components/POSProductButton/index.ts +2 -2
- package/src/components/POSProductCard/POSProductCard.stories.tsx +642 -642
- package/src/components/POSProductCard/POSProductCard.tsx +208 -208
- package/src/components/POSProductCard/POSProductCard.types.ts +76 -76
- package/src/components/POSProductCard/README.md +179 -179
- package/src/components/POSProductCard/icons.tsx +26 -26
- package/src/components/POSProductCard/index.ts +2 -2
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +753 -753
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +332 -332
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +119 -119
- package/src/components/POSProductSidebarItems/README.md +198 -198
- package/src/components/POSProductSidebarItems/icons.tsx +21 -21
- package/src/components/POSProductSidebarItems/index.ts +3 -3
- package/src/components/POSTable/POSTable.stories.tsx +737 -737
- package/src/components/POSTable/POSTable.tsx +401 -401
- package/src/components/POSTable/POSTable.types.ts +83 -83
- package/src/components/POSTable/README.md +286 -286
- package/src/components/POSTable/index.ts +7 -7
- package/src/components/Pagination/Pagination.stories.tsx +555 -555
- package/src/components/Pagination/Pagination.tsx +286 -286
- package/src/components/Pagination/Pagination.types.ts +93 -93
- package/src/components/Pagination/README.md +298 -298
- package/src/components/Pagination/icons.tsx +47 -47
- package/src/components/Pagination/index.ts +3 -3
- package/src/components/Quantity/Quantity.stories.tsx +457 -457
- package/src/components/Quantity/Quantity.tsx +289 -289
- package/src/components/Quantity/Quantity.types.ts +70 -70
- package/src/components/Radio/Radio.stories.tsx +523 -523
- package/src/components/Radio/Radio.tsx +170 -170
- package/src/components/Radio/Radio.types.ts +122 -122
- package/src/components/Select/README.md +299 -299
- package/src/components/Select/Select.stories.tsx +673 -705
- package/src/components/Select/Select.tsx +454 -457
- package/src/components/Select/Select.types.ts +148 -148
- package/src/components/Select/icons.tsx +50 -25
- package/src/components/Select/index.ts +3 -3
- package/src/components/SignUpView/SignUpView.stories.tsx +129 -129
- package/src/components/SignUpView/SignUpView.tsx +503 -503
- package/src/components/SignUpView/SignUpView.types.ts +58 -58
- package/src/components/SignUpView/icons.tsx +71 -71
- package/src/components/SignUpView/index.ts +3 -3
- package/src/components/Switch/README.md +112 -112
- package/src/components/Switch/Switch.stories.tsx +550 -550
- package/src/components/Switch/Switch.tsx +246 -246
- package/src/components/Switch/Switch.types.ts +67 -67
- package/src/components/Table/README.md +369 -369
- package/src/components/Table/Table.stories.tsx +805 -805
- package/src/components/Table/Table.tsx +688 -688
- package/src/components/Table/Table.types.ts +204 -204
- package/src/components/Table/index.ts +9 -9
- package/src/components/Tabs/README.md +201 -201
- package/src/components/Tabs/Tabs.stories.tsx +580 -580
- package/src/components/Tabs/Tabs.tsx +356 -356
- package/src/components/Tabs/Tabs.types.ts +127 -127
- package/src/components/Tabs/icons.tsx +129 -129
- package/src/components/Tabs/index.ts +11 -11
- package/src/components/Textarea/Textarea.stories.tsx +535 -535
- package/src/components/Textarea/Textarea.tsx +188 -188
- package/src/components/Textarea/Textarea.types.ts +54 -54
- package/src/context/ThemeContext.tsx +99 -99
- package/src/context/index.ts +1 -1
- package/src/index.css +29 -29
- package/src/index.ts +39 -133
- package/src/main.tsx +10 -10
- package/src/views/ProductsView/ProductsView.stories.tsx +344 -344
- package/src/views/ProductsView/ProductsView.tsx +480 -480
- package/src/views/ProductsView/ProductsView.types.ts +238 -238
- package/src/views/ProductsView/README.md +312 -312
- package/src/views/ProductsView/icons.tsx +38 -38
- package/src/views/ProductsView/index.ts +8 -8
- package/src/views/RecoverPasswordView/README.md +269 -269
- package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +131 -131
- package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +376 -376
- package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +56 -56
- package/src/views/RecoverPasswordView/icons.tsx +17 -17
- package/src/views/RecoverPasswordView/index.ts +2 -2
- package/src/views/TableLayoutView/README.md +268 -268
- package/src/views/TableLayoutView/TableLayoutView.stories.tsx +235 -235
- package/src/views/TableLayoutView/TableLayoutView.tsx +461 -461
- package/src/views/TableLayoutView/TableLayoutView.types.ts +209 -209
- package/src/views/TableLayoutView/icons.tsx +113 -113
- package/src/views/TableLayoutView/index.ts +6 -6
- package/storybook/main.ts +19 -19
- package/storybook/preview.tsx +84 -84
- package/storybook/vitest.setup.ts +6 -6
- package/tailwind.config.js +128 -128
- package/claude/prompts/siesa-ui-kit.md +0 -28
- package/dist/ButtonTest.d.ts +0 -6
- package/dist/ButtonTest.d.ts.map +0 -1
- package/dist/components/Alert/Alert.d.ts +0 -23
- package/dist/components/Alert/Alert.d.ts.map +0 -1
- package/dist/components/Alert/Alert.types.d.ts +0 -46
- package/dist/components/Alert/Alert.types.d.ts.map +0 -1
- package/dist/components/Avatar/Avatar.d.ts +0 -41
- package/dist/components/Avatar/Avatar.d.ts.map +0 -1
- package/dist/components/Avatar/Avatar.types.d.ts +0 -46
- package/dist/components/Avatar/Avatar.types.d.ts.map +0 -1
- package/dist/components/Badge/Badge.d.ts +0 -42
- package/dist/components/Badge/Badge.d.ts.map +0 -1
- package/dist/components/Badge/Badge.types.d.ts +0 -32
- package/dist/components/Badge/Badge.types.d.ts.map +0 -1
- package/dist/components/Button/Button.d.ts +0 -84
- package/dist/components/Button/Button.d.ts.map +0 -1
- package/dist/components/Button/Button.types.d.ts +0 -162
- package/dist/components/Button/Button.types.d.ts.map +0 -1
- package/dist/components/Button/icons.d.ts +0 -27
- package/dist/components/Button/icons.d.ts.map +0 -1
- package/dist/components/Button/index.d.ts +0 -4
- package/dist/components/Button/index.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.d.ts +0 -31
- package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.types.d.ts +0 -53
- package/dist/components/Checkbox/Checkbox.types.d.ts.map +0 -1
- package/dist/components/DescriptionList/DescriptionList.d.ts +0 -38
- package/dist/components/DescriptionList/DescriptionList.d.ts.map +0 -1
- package/dist/components/DescriptionList/DescriptionList.types.d.ts +0 -27
- package/dist/components/DescriptionList/DescriptionList.types.d.ts.map +0 -1
- package/dist/components/Divider/Divider.d.ts +0 -33
- package/dist/components/Divider/Divider.d.ts.map +0 -1
- package/dist/components/Divider/Divider.types.d.ts +0 -22
- package/dist/components/Divider/Divider.types.d.ts.map +0 -1
- package/dist/components/Dropdown/Dropdown.d.ts +0 -66
- package/dist/components/Dropdown/Dropdown.d.ts.map +0 -1
- package/dist/components/Dropdown/Dropdown.types.d.ts +0 -124
- package/dist/components/Dropdown/Dropdown.types.d.ts.map +0 -1
- package/dist/components/Dropdown/icons.d.ts +0 -10
- package/dist/components/Dropdown/icons.d.ts.map +0 -1
- package/dist/components/Dropdown/index.d.ts +0 -4
- package/dist/components/Dropdown/index.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts +0 -101
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts +0 -116
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/icons.d.ts +0 -19
- package/dist/components/DropdownItemCollapsible/icons.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/index.d.ts +0 -9
- package/dist/components/DropdownItemCollapsible/index.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts +0 -75
- package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts +0 -85
- package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/icons.d.ts +0 -48
- package/dist/components/DropdownItemHeading/icons.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/index.d.ts +0 -4
- package/dist/components/DropdownItemHeading/index.d.ts.map +0 -1
- package/dist/components/Input/Input.d.ts +0 -40
- package/dist/components/Input/Input.d.ts.map +0 -1
- package/dist/components/Input/Input.types.d.ts +0 -71
- package/dist/components/Input/Input.types.d.ts.map +0 -1
- package/dist/components/Input/icons.d.ts +0 -15
- package/dist/components/Input/icons.d.ts.map +0 -1
- package/dist/components/Input/index.d.ts +0 -3
- package/dist/components/Input/index.d.ts.map +0 -1
- package/dist/components/LoginView/LoginView.d.ts +0 -36
- package/dist/components/LoginView/LoginView.d.ts.map +0 -1
- package/dist/components/LoginView/LoginView.types.d.ts +0 -46
- package/dist/components/LoginView/LoginView.types.d.ts.map +0 -1
- package/dist/components/LoginView/icons.d.ts +0 -18
- package/dist/components/LoginView/icons.d.ts.map +0 -1
- package/dist/components/LoginView/index.d.ts +0 -4
- package/dist/components/LoginView/index.d.ts.map +0 -1
- package/dist/components/Navbar/Navbar.d.ts +0 -63
- package/dist/components/Navbar/Navbar.d.ts.map +0 -1
- package/dist/components/Navbar/Navbar.types.d.ts +0 -194
- package/dist/components/Navbar/Navbar.types.d.ts.map +0 -1
- package/dist/components/Navbar/icons.d.ts +0 -12
- package/dist/components/Navbar/icons.d.ts.map +0 -1
- package/dist/components/Navbar/index.d.ts +0 -4
- package/dist/components/Navbar/index.d.ts.map +0 -1
- package/dist/components/NavigationBar/NavigationBar.d.ts +0 -75
- package/dist/components/NavigationBar/NavigationBar.d.ts.map +0 -1
- package/dist/components/NavigationBar/NavigationBar.types.d.ts +0 -63
- package/dist/components/NavigationBar/NavigationBar.types.d.ts.map +0 -1
- package/dist/components/NavigationBar/index.d.ts +0 -3
- package/dist/components/NavigationBar/index.d.ts.map +0 -1
- package/dist/components/NavigationRail/NavigationRail.d.ts +0 -7
- package/dist/components/NavigationRail/NavigationRail.d.ts.map +0 -1
- package/dist/components/NavigationRail/NavigationRail.types.d.ts +0 -92
- package/dist/components/NavigationRail/NavigationRail.types.d.ts.map +0 -1
- package/dist/components/NavigationRail/index.d.ts +0 -3
- package/dist/components/NavigationRail/index.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts +0 -122
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts +0 -139
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/icons.d.ts +0 -33
- package/dist/components/NavigationRailCommercial/icons.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/index.d.ts +0 -4
- package/dist/components/NavigationRailCommercial/index.d.ts.map +0 -1
- package/dist/components/NavigationRailItem/NavigationRailItem.d.ts +0 -90
- package/dist/components/NavigationRailItem/NavigationRailItem.d.ts.map +0 -1
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts +0 -162
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts.map +0 -1
- package/dist/components/NavigationRailItem/index.d.ts +0 -3
- package/dist/components/NavigationRailItem/index.d.ts.map +0 -1
- package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts +0 -124
- package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts.map +0 -1
- package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts +0 -154
- package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts.map +0 -1
- package/dist/components/NavigationRailPanel/index.d.ts +0 -3
- package/dist/components/NavigationRailPanel/index.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts +0 -99
- package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts +0 -152
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/icons.d.ts +0 -44
- package/dist/components/NavigationRailTypes/icons.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/index.d.ts +0 -4
- package/dist/components/NavigationRailTypes/index.d.ts.map +0 -1
- package/dist/components/Notification/Notification.d.ts +0 -52
- package/dist/components/Notification/Notification.d.ts.map +0 -1
- package/dist/components/Notification/Notification.types.d.ts +0 -138
- package/dist/components/Notification/Notification.types.d.ts.map +0 -1
- package/dist/components/Notification/index.d.ts +0 -3
- package/dist/components/Notification/index.d.ts.map +0 -1
- package/dist/components/POSConvention/POSConvention.d.ts +0 -55
- package/dist/components/POSConvention/POSConvention.d.ts.map +0 -1
- package/dist/components/POSConvention/POSConvention.types.d.ts +0 -37
- package/dist/components/POSConvention/POSConvention.types.d.ts.map +0 -1
- package/dist/components/POSConvention/icons.d.ts +0 -21
- package/dist/components/POSConvention/icons.d.ts.map +0 -1
- package/dist/components/POSConvention/index.d.ts +0 -4
- package/dist/components/POSConvention/index.d.ts.map +0 -1
- package/dist/components/POSLocationButton/POSLocationButton.d.ts +0 -73
- package/dist/components/POSLocationButton/POSLocationButton.d.ts.map +0 -1
- package/dist/components/POSLocationButton/POSLocationButton.types.d.ts +0 -75
- package/dist/components/POSLocationButton/POSLocationButton.types.d.ts.map +0 -1
- package/dist/components/POSLocationButton/icons.d.ts +0 -37
- package/dist/components/POSLocationButton/icons.d.ts.map +0 -1
- package/dist/components/POSLocationButton/index.d.ts +0 -4
- package/dist/components/POSLocationButton/index.d.ts.map +0 -1
- package/dist/components/POSNumberButton/POSNumberButton.d.ts +0 -61
- package/dist/components/POSNumberButton/POSNumberButton.d.ts.map +0 -1
- package/dist/components/POSNumberButton/POSNumberButton.types.d.ts +0 -43
- package/dist/components/POSNumberButton/POSNumberButton.types.d.ts.map +0 -1
- package/dist/components/POSNumberButton/index.d.ts +0 -3
- package/dist/components/POSNumberButton/index.d.ts.map +0 -1
- package/dist/components/POSProductButton/POSProductButton.d.ts +0 -59
- package/dist/components/POSProductButton/POSProductButton.d.ts.map +0 -1
- package/dist/components/POSProductButton/POSProductButton.types.d.ts +0 -40
- package/dist/components/POSProductButton/POSProductButton.types.d.ts.map +0 -1
- package/dist/components/POSProductButton/index.d.ts +0 -3
- package/dist/components/POSProductButton/index.d.ts.map +0 -1
- package/dist/components/POSProductCard/POSProductCard.d.ts +0 -68
- package/dist/components/POSProductCard/POSProductCard.d.ts.map +0 -1
- package/dist/components/POSProductCard/POSProductCard.types.d.ts +0 -67
- package/dist/components/POSProductCard/POSProductCard.types.d.ts.map +0 -1
- package/dist/components/POSProductCard/icons.d.ts +0 -10
- package/dist/components/POSProductCard/icons.d.ts.map +0 -1
- package/dist/components/POSProductCard/index.d.ts +0 -3
- package/dist/components/POSProductCard/index.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts +0 -57
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts +0 -85
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/icons.d.ts +0 -9
- package/dist/components/POSProductSidebarItems/icons.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/index.d.ts +0 -4
- package/dist/components/POSProductSidebarItems/index.d.ts.map +0 -1
- package/dist/components/POSTable/POSTable.d.ts +0 -75
- package/dist/components/POSTable/POSTable.d.ts.map +0 -1
- package/dist/components/POSTable/POSTable.types.d.ts +0 -71
- package/dist/components/POSTable/POSTable.types.d.ts.map +0 -1
- package/dist/components/POSTable/index.d.ts +0 -3
- package/dist/components/POSTable/index.d.ts.map +0 -1
- package/dist/components/Pagination/Pagination.d.ts +0 -29
- package/dist/components/Pagination/Pagination.d.ts.map +0 -1
- package/dist/components/Pagination/Pagination.types.d.ts +0 -79
- package/dist/components/Pagination/Pagination.types.d.ts.map +0 -1
- package/dist/components/Pagination/icons.d.ts +0 -18
- package/dist/components/Pagination/icons.d.ts.map +0 -1
- package/dist/components/Pagination/index.d.ts +0 -4
- package/dist/components/Pagination/index.d.ts.map +0 -1
- package/dist/components/Quantity/Quantity.d.ts +0 -38
- package/dist/components/Quantity/Quantity.d.ts.map +0 -1
- package/dist/components/Quantity/Quantity.types.d.ts +0 -59
- package/dist/components/Quantity/Quantity.types.d.ts.map +0 -1
- package/dist/components/Radio/Radio.d.ts +0 -45
- package/dist/components/Radio/Radio.d.ts.map +0 -1
- package/dist/components/Radio/Radio.types.d.ts +0 -115
- package/dist/components/Radio/Radio.types.d.ts.map +0 -1
- package/dist/components/Select/Select.d.ts +0 -37
- package/dist/components/Select/Select.d.ts.map +0 -1
- package/dist/components/Select/Select.types.d.ts +0 -124
- package/dist/components/Select/Select.types.d.ts.map +0 -1
- package/dist/components/Select/icons.d.ts +0 -20
- package/dist/components/Select/icons.d.ts.map +0 -1
- package/dist/components/Select/index.d.ts +0 -4
- package/dist/components/Select/index.d.ts.map +0 -1
- package/dist/components/SignUpView/SignUpView.d.ts +0 -38
- package/dist/components/SignUpView/SignUpView.d.ts.map +0 -1
- package/dist/components/SignUpView/SignUpView.types.d.ts +0 -51
- package/dist/components/SignUpView/SignUpView.types.d.ts.map +0 -1
- package/dist/components/SignUpView/icons.d.ts +0 -18
- package/dist/components/SignUpView/icons.d.ts.map +0 -1
- package/dist/components/SignUpView/index.d.ts +0 -4
- package/dist/components/SignUpView/index.d.ts.map +0 -1
- package/dist/components/Switch/Switch.d.ts +0 -46
- package/dist/components/Switch/Switch.d.ts.map +0 -1
- package/dist/components/Switch/Switch.types.d.ts +0 -58
- package/dist/components/Switch/Switch.types.d.ts.map +0 -1
- package/dist/components/Table/Table.d.ts +0 -64
- package/dist/components/Table/Table.d.ts.map +0 -1
- package/dist/components/Table/Table.types.d.ts +0 -173
- package/dist/components/Table/Table.types.d.ts.map +0 -1
- package/dist/components/Table/index.d.ts +0 -3
- package/dist/components/Table/index.d.ts.map +0 -1
- package/dist/components/Tabs/Tabs.d.ts +0 -76
- package/dist/components/Tabs/Tabs.d.ts.map +0 -1
- package/dist/components/Tabs/Tabs.types.d.ts +0 -107
- package/dist/components/Tabs/Tabs.types.d.ts.map +0 -1
- package/dist/components/Tabs/icons.d.ts +0 -45
- package/dist/components/Tabs/icons.d.ts.map +0 -1
- package/dist/components/Tabs/index.d.ts +0 -4
- package/dist/components/Tabs/index.d.ts.map +0 -1
- package/dist/components/Textarea/Textarea.d.ts +0 -38
- package/dist/components/Textarea/Textarea.d.ts.map +0 -1
- package/dist/components/Textarea/Textarea.types.d.ts +0 -46
- package/dist/components/Textarea/Textarea.types.d.ts.map +0 -1
- package/dist/context/ThemeContext.d.ts +0 -46
- package/dist/context/ThemeContext.d.ts.map +0 -1
- package/dist/context/index.d.ts +0 -2
- package/dist/context/index.d.ts.map +0 -1
- package/dist/index.d.ts +0 -88
- package/dist/index.d.ts.map +0 -1
- package/dist/siesa-ui-kit.cjs +0 -1474
- package/dist/siesa-ui-kit.cjs.map +0 -1
- package/dist/siesa-ui-kit.mjs +0 -9580
- package/dist/siesa-ui-kit.mjs.map +0 -1
- package/dist/views/LayoutCommercial/LayoutCommercial.d.ts +0 -48
- package/dist/views/LayoutCommercial/LayoutCommercial.d.ts.map +0 -1
- package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts +0 -49
- package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts.map +0 -1
- package/dist/views/LayoutCommercial/index.d.ts +0 -3
- package/dist/views/LayoutCommercial/index.d.ts.map +0 -1
- package/dist/views/ListView/ListView.d.ts +0 -47
- package/dist/views/ListView/ListView.d.ts.map +0 -1
- package/dist/views/ListView/ListView.types.d.ts +0 -177
- package/dist/views/ListView/ListView.types.d.ts.map +0 -1
- package/dist/views/ListView/icons.d.ts +0 -60
- package/dist/views/ListView/icons.d.ts.map +0 -1
- package/dist/views/ListView/index.d.ts +0 -3
- package/dist/views/ListView/index.d.ts.map +0 -1
- package/dist/views/LoginView/LoginView.d.ts +0 -36
- package/dist/views/LoginView/LoginView.d.ts.map +0 -1
- package/dist/views/LoginView/LoginView.types.d.ts +0 -46
- package/dist/views/LoginView/LoginView.types.d.ts.map +0 -1
- package/dist/views/LoginView/icons.d.ts +0 -18
- package/dist/views/LoginView/icons.d.ts.map +0 -1
- package/dist/views/LoginView/index.d.ts +0 -4
- package/dist/views/LoginView/index.d.ts.map +0 -1
- package/dist/views/ProductsView/ProductsView.d.ts +0 -56
- package/dist/views/ProductsView/ProductsView.d.ts.map +0 -1
- package/dist/views/ProductsView/ProductsView.types.d.ts +0 -184
- package/dist/views/ProductsView/ProductsView.types.d.ts.map +0 -1
- package/dist/views/ProductsView/icons.d.ts +0 -12
- package/dist/views/ProductsView/icons.d.ts.map +0 -1
- package/dist/views/ProductsView/index.d.ts +0 -3
- package/dist/views/ProductsView/index.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts +0 -34
- package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts +0 -50
- package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/icons.d.ts +0 -9
- package/dist/views/RecoverPasswordView/icons.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/index.d.ts +0 -3
- package/dist/views/RecoverPasswordView/index.d.ts.map +0 -1
- package/dist/views/SignUpView/SignUpView.d.ts +0 -38
- package/dist/views/SignUpView/SignUpView.d.ts.map +0 -1
- package/dist/views/SignUpView/SignUpView.types.d.ts +0 -51
- package/dist/views/SignUpView/SignUpView.types.d.ts.map +0 -1
- package/dist/views/SignUpView/icons.d.ts +0 -18
- package/dist/views/SignUpView/icons.d.ts.map +0 -1
- package/dist/views/SignUpView/index.d.ts +0 -4
- package/dist/views/SignUpView/index.d.ts.map +0 -1
- package/dist/views/TableLayoutView/TableLayoutView.d.ts +0 -46
- package/dist/views/TableLayoutView/TableLayoutView.d.ts.map +0 -1
- package/dist/views/TableLayoutView/TableLayoutView.types.d.ts +0 -170
- package/dist/views/TableLayoutView/TableLayoutView.types.d.ts.map +0 -1
- package/dist/views/TableLayoutView/icons.d.ts +0 -27
- package/dist/views/TableLayoutView/icons.d.ts.map +0 -1
- package/dist/views/TableLayoutView/index.d.ts +0 -3
- package/dist/views/TableLayoutView/index.d.ts.map +0 -1
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +0 -317
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +0 -307
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +0 -136
- package/src/components/DropdownItemCollapsible/README.md +0 -264
- package/src/components/DropdownItemCollapsible/icons.tsx +0 -57
- package/src/components/DropdownItemCollapsible/index.ts +0 -12
- package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +0 -386
- package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +0 -216
- package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +0 -93
- package/src/components/DropdownItemHeading/README.md +0 -573
- package/src/components/DropdownItemHeading/icons.tsx +0 -125
- package/src/components/DropdownItemHeading/index.ts +0 -3
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.stories.tsx +0 -464
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.tsx +0 -301
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.types.ts +0 -162
- package/src/components/NavigationRailCommercial/README.md +0 -251
- package/src/components/NavigationRailCommercial/icons.tsx +0 -54
- package/src/components/NavigationRailCommercial/index.ts +0 -6
- package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +0 -667
- package/src/components/NavigationRailItem/NavigationRailItem.tsx +0 -314
- package/src/components/NavigationRailItem/NavigationRailItem.types.ts +0 -175
- package/src/components/NavigationRailItem/README.md +0 -476
- package/src/components/NavigationRailItem/index.ts +0 -2
- package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +0 -462
- package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +0 -332
- package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +0 -178
- package/src/components/NavigationRailPanel/README.md +0 -461
- package/src/components/NavigationRailPanel/index.ts +0 -6
- package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +0 -682
- package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +0 -363
- package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +0 -178
- package/src/components/NavigationRailTypes/README.md +0 -573
- package/src/components/NavigationRailTypes/icons.tsx +0 -76
- package/src/components/NavigationRailTypes/index.ts +0 -7
- package/src/views/LayoutCommercial/LayoutCommercial.stories.tsx +0 -374
- package/src/views/LayoutCommercial/LayoutCommercial.tsx +0 -125
- package/src/views/LayoutCommercial/LayoutCommercial.types.ts +0 -54
- package/src/views/LayoutCommercial/README.md +0 -286
- package/src/views/LayoutCommercial/index.ts +0 -2
- package/src/views/ListView/ListView.stories.tsx +0 -329
- package/src/views/ListView/ListView.tsx +0 -570
- package/src/views/ListView/ListView.types.ts +0 -211
- package/src/views/ListView/icons.tsx +0 -282
- package/src/views/ListView/index.ts +0 -11
- package/src/views/LoginView/LoginView.stories.tsx +0 -148
- package/src/views/LoginView/LoginView.tsx +0 -426
- package/src/views/LoginView/LoginView.types.ts +0 -52
- package/src/views/LoginView/README.md +0 -396
- package/src/views/LoginView/icons.tsx +0 -85
- package/src/views/LoginView/index.ts +0 -3
- package/src/views/SignUpView/SignUpView.stories.tsx +0 -129
- package/src/views/SignUpView/SignUpView.tsx +0 -503
- package/src/views/SignUpView/SignUpView.types.ts +0 -58
- package/src/views/SignUpView/icons.tsx +0 -71
- package/src/views/SignUpView/index.ts +0 -3
|
@@ -1,457 +1,457 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
-
import { Quantity } from './Quantity';
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Quantity - Componente de cantidad del sistema de diseño Siesa
|
|
7
|
-
*
|
|
8
|
-
* Sistema completo para seleccionar cantidades numéricas con soporte para:
|
|
9
|
-
* - **Botones de incremento/decremento**: Plus y minus icons
|
|
10
|
-
* - **Restricciones**: Valores mínimo y máximo
|
|
11
|
-
* - **Label opcional**: Con link opcional a la derecha
|
|
12
|
-
* - **Helper text**: Texto de ayuda opcional
|
|
13
|
-
* - **Estado de error**: Validación visual
|
|
14
|
-
* - **Estado deshabilitado**: Interacción bloqueada
|
|
15
|
-
* - **Dark mode**: Adaptación completa al tema oscuro
|
|
16
|
-
*
|
|
17
|
-
* @see docs/colors.md - Sistema de colores
|
|
18
|
-
* @see docs/typography.md - Sistema tipográfico
|
|
19
|
-
* @see docs/spacing.md - Sistema de espaciado
|
|
20
|
-
*/
|
|
21
|
-
const meta = {
|
|
22
|
-
title: 'Siesa UI Kit/Quantity',
|
|
23
|
-
component: Quantity,
|
|
24
|
-
parameters: {
|
|
25
|
-
layout: 'centered',
|
|
26
|
-
docs: {
|
|
27
|
-
description: {
|
|
28
|
-
component:
|
|
29
|
-
'Componente para seleccionar cantidades numéricas con botones de incremento y decremento. Ideal para selección de productos, ajuste de parámetros numéricos, etc.',
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
backgrounds: {
|
|
33
|
-
default: 'light',
|
|
34
|
-
values: [
|
|
35
|
-
{ name: 'light', value: '#ffffff' },
|
|
36
|
-
{ name: 'gray', value: '#f3f4f6' },
|
|
37
|
-
{ name: 'dark', value: '#1f2937' },
|
|
38
|
-
],
|
|
39
|
-
},
|
|
40
|
-
},
|
|
41
|
-
tags: ['autodocs'],
|
|
42
|
-
argTypes: {
|
|
43
|
-
value: {
|
|
44
|
-
control: 'number',
|
|
45
|
-
description: 'Valor actual (controlado)',
|
|
46
|
-
table: {
|
|
47
|
-
type: { summary: 'number' },
|
|
48
|
-
category: 'State',
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
defaultValue: {
|
|
52
|
-
control: 'number',
|
|
53
|
-
description: 'Valor por defecto (no controlado)',
|
|
54
|
-
table: {
|
|
55
|
-
type: { summary: 'number' },
|
|
56
|
-
defaultValue: { summary: '0' },
|
|
57
|
-
category: 'State',
|
|
58
|
-
},
|
|
59
|
-
},
|
|
60
|
-
min: {
|
|
61
|
-
control: 'number',
|
|
62
|
-
description: 'Valor mínimo permitido',
|
|
63
|
-
table: {
|
|
64
|
-
type: { summary: 'number' },
|
|
65
|
-
defaultValue: { summary: '0' },
|
|
66
|
-
category: 'Validation',
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
max: {
|
|
70
|
-
control: 'number',
|
|
71
|
-
description: 'Valor máximo permitido',
|
|
72
|
-
table: {
|
|
73
|
-
type: { summary: 'number' },
|
|
74
|
-
category: 'Validation',
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
label: {
|
|
78
|
-
control: 'text',
|
|
79
|
-
description: 'Label opcional',
|
|
80
|
-
table: {
|
|
81
|
-
type: { summary: 'string' },
|
|
82
|
-
category: 'Content',
|
|
83
|
-
},
|
|
84
|
-
},
|
|
85
|
-
linkText: {
|
|
86
|
-
control: 'text',
|
|
87
|
-
description: 'Texto del link opcional (aparece a la derecha del label)',
|
|
88
|
-
table: {
|
|
89
|
-
type: { summary: 'string' },
|
|
90
|
-
category: 'Content',
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
helperText: {
|
|
94
|
-
control: 'text',
|
|
95
|
-
description: 'Texto de ayuda opcional',
|
|
96
|
-
table: {
|
|
97
|
-
type: { summary: 'string' },
|
|
98
|
-
category: 'Content',
|
|
99
|
-
},
|
|
100
|
-
},
|
|
101
|
-
error: {
|
|
102
|
-
control: 'boolean',
|
|
103
|
-
description: 'Estado de error',
|
|
104
|
-
table: {
|
|
105
|
-
type: { summary: 'boolean' },
|
|
106
|
-
defaultValue: { summary: 'false' },
|
|
107
|
-
category: 'State',
|
|
108
|
-
},
|
|
109
|
-
},
|
|
110
|
-
disabled: {
|
|
111
|
-
control: 'boolean',
|
|
112
|
-
description: 'Estado deshabilitado',
|
|
113
|
-
table: {
|
|
114
|
-
type: { summary: 'boolean' },
|
|
115
|
-
defaultValue: { summary: 'false' },
|
|
116
|
-
category: 'State',
|
|
117
|
-
},
|
|
118
|
-
},
|
|
119
|
-
onChange: {
|
|
120
|
-
action: 'changed',
|
|
121
|
-
description: 'Callback cuando el valor cambia',
|
|
122
|
-
table: {
|
|
123
|
-
type: { summary: '(value: number) => void' },
|
|
124
|
-
category: 'Events',
|
|
125
|
-
},
|
|
126
|
-
},
|
|
127
|
-
onLinkClick: {
|
|
128
|
-
action: 'link clicked',
|
|
129
|
-
description: 'Callback cuando se hace click en el link',
|
|
130
|
-
table: {
|
|
131
|
-
type: { summary: '() => void' },
|
|
132
|
-
category: 'Events',
|
|
133
|
-
},
|
|
134
|
-
},
|
|
135
|
-
},
|
|
136
|
-
} satisfies Meta<typeof Quantity>;
|
|
137
|
-
|
|
138
|
-
export default meta;
|
|
139
|
-
type Story = StoryObj<typeof meta>;
|
|
140
|
-
|
|
141
|
-
// ============================================
|
|
142
|
-
// 1. PLAYGROUND INTERACTIVO
|
|
143
|
-
// ============================================
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Playground Interactivo
|
|
147
|
-
*
|
|
148
|
-
* Usa los controles para experimentar con el Quantity en tiempo real.
|
|
149
|
-
*/
|
|
150
|
-
export const Playground: Story = {
|
|
151
|
-
name: 'Playground',
|
|
152
|
-
args: {
|
|
153
|
-
label: 'Cantidad',
|
|
154
|
-
defaultValue: 0,
|
|
155
|
-
min: 0,
|
|
156
|
-
max: 10,
|
|
157
|
-
helperText: 'Selecciona una cantidad entre 0 y 10',
|
|
158
|
-
},
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
// ============================================
|
|
162
|
-
// 2. VARIANTES BÁSICAS
|
|
163
|
-
// ============================================
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Variantes Básicas
|
|
167
|
-
*
|
|
168
|
-
* Vista de las variantes básicas del Quantity según Figma.
|
|
169
|
-
*/
|
|
170
|
-
export const VariantesBasicas: Story = {
|
|
171
|
-
name: 'Variantes Básicas',
|
|
172
|
-
args: {
|
|
173
|
-
label: '',
|
|
174
|
-
},
|
|
175
|
-
render: () => (
|
|
176
|
-
<div className="space-y-6">
|
|
177
|
-
{/* Sin label */}
|
|
178
|
-
<div>
|
|
179
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Sin Label</h3>
|
|
180
|
-
<Quantity defaultValue={0} />
|
|
181
|
-
</div>
|
|
182
|
-
|
|
183
|
-
{/* Con label */}
|
|
184
|
-
<div>
|
|
185
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Con Label</h3>
|
|
186
|
-
<Quantity label="Cantidad" defaultValue={5} />
|
|
187
|
-
</div>
|
|
188
|
-
|
|
189
|
-
{/* Con label y helper text */}
|
|
190
|
-
<div>
|
|
191
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Con Label y Helper Text</h3>
|
|
192
|
-
<Quantity
|
|
193
|
-
label="Cantidad"
|
|
194
|
-
helperText="Selecciona la cantidad deseada"
|
|
195
|
-
defaultValue={3}
|
|
196
|
-
/>
|
|
197
|
-
</div>
|
|
198
|
-
|
|
199
|
-
{/* Con label, helper text y link */}
|
|
200
|
-
<div>
|
|
201
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Con Label, Helper Text y Link</h3>
|
|
202
|
-
<Quantity
|
|
203
|
-
label="Cantidad"
|
|
204
|
-
linkText="Limpiar"
|
|
205
|
-
helperText="Selecciona la cantidad deseada"
|
|
206
|
-
defaultValue={8}
|
|
207
|
-
onLinkClick={() => console.log('Link clicked')}
|
|
208
|
-
/>
|
|
209
|
-
</div>
|
|
210
|
-
</div>
|
|
211
|
-
),
|
|
212
|
-
};
|
|
213
|
-
|
|
214
|
-
// ============================================
|
|
215
|
-
// 3. ESTADOS
|
|
216
|
-
// ============================================
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Estados
|
|
220
|
-
*
|
|
221
|
-
* Vista de todos los estados posibles del Quantity.
|
|
222
|
-
*/
|
|
223
|
-
export const Estados: Story = {
|
|
224
|
-
name: 'Estados',
|
|
225
|
-
args: {
|
|
226
|
-
label: '',
|
|
227
|
-
},
|
|
228
|
-
render: () => (
|
|
229
|
-
<div className="space-y-6">
|
|
230
|
-
{/* Default (vacío) */}
|
|
231
|
-
<div>
|
|
232
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Default (Vacío)</h3>
|
|
233
|
-
<Quantity label="Cantidad" defaultValue={0} helperText="Valor inicial en 0" />
|
|
234
|
-
</div>
|
|
235
|
-
|
|
236
|
-
{/* Filled (con valor) */}
|
|
237
|
-
<div>
|
|
238
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Filled (Con Valor)</h3>
|
|
239
|
-
<Quantity label="Cantidad" defaultValue={5} helperText="Valor actual: 5" />
|
|
240
|
-
</div>
|
|
241
|
-
|
|
242
|
-
{/* Error */}
|
|
243
|
-
<div>
|
|
244
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Error</h3>
|
|
245
|
-
<Quantity
|
|
246
|
-
label="Cantidad"
|
|
247
|
-
defaultValue={15}
|
|
248
|
-
max={10}
|
|
249
|
-
error
|
|
250
|
-
helperText="El valor no puede ser mayor a 10"
|
|
251
|
-
/>
|
|
252
|
-
</div>
|
|
253
|
-
|
|
254
|
-
{/* Disabled */}
|
|
255
|
-
<div>
|
|
256
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Disabled</h3>
|
|
257
|
-
<Quantity
|
|
258
|
-
label="Cantidad"
|
|
259
|
-
defaultValue={3}
|
|
260
|
-
disabled
|
|
261
|
-
helperText="Campo deshabilitado"
|
|
262
|
-
/>
|
|
263
|
-
</div>
|
|
264
|
-
</div>
|
|
265
|
-
),
|
|
266
|
-
};
|
|
267
|
-
|
|
268
|
-
// ============================================
|
|
269
|
-
// 4. CON RESTRICCIONES MIN/MAX
|
|
270
|
-
// ============================================
|
|
271
|
-
|
|
272
|
-
/**
|
|
273
|
-
* Con Restricciones Min/Max
|
|
274
|
-
*
|
|
275
|
-
* Ejemplos de Quantity con valores mínimo y máximo.
|
|
276
|
-
*/
|
|
277
|
-
export const ConMinMax: Story = {
|
|
278
|
-
name: 'Con Min/Max',
|
|
279
|
-
args: {
|
|
280
|
-
label: '',
|
|
281
|
-
},
|
|
282
|
-
render: () => (
|
|
283
|
-
<div className="space-y-6">
|
|
284
|
-
{/* Solo mínimo */}
|
|
285
|
-
<div>
|
|
286
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Solo Mínimo (min=0)</h3>
|
|
287
|
-
<Quantity
|
|
288
|
-
label="Cantidad"
|
|
289
|
-
defaultValue={0}
|
|
290
|
-
min={0}
|
|
291
|
-
helperText="No puede ser menor a 0"
|
|
292
|
-
/>
|
|
293
|
-
</div>
|
|
294
|
-
|
|
295
|
-
{/* Solo máximo */}
|
|
296
|
-
<div>
|
|
297
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Solo Máximo (max=10)</h3>
|
|
298
|
-
<Quantity
|
|
299
|
-
label="Cantidad"
|
|
300
|
-
defaultValue={10}
|
|
301
|
-
max={10}
|
|
302
|
-
helperText="No puede ser mayor a 10"
|
|
303
|
-
/>
|
|
304
|
-
</div>
|
|
305
|
-
|
|
306
|
-
{/* Mínimo y máximo */}
|
|
307
|
-
<div>
|
|
308
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Min y Max (1-5)</h3>
|
|
309
|
-
<Quantity
|
|
310
|
-
label="Cantidad"
|
|
311
|
-
defaultValue={3}
|
|
312
|
-
min={1}
|
|
313
|
-
max={5}
|
|
314
|
-
helperText="Valor entre 1 y 5"
|
|
315
|
-
/>
|
|
316
|
-
</div>
|
|
317
|
-
</div>
|
|
318
|
-
),
|
|
319
|
-
};
|
|
320
|
-
|
|
321
|
-
// ============================================
|
|
322
|
-
// 5. INTERACTIVO (CONTROLADO)
|
|
323
|
-
// ============================================
|
|
324
|
-
|
|
325
|
-
/**
|
|
326
|
-
* Interactivo (Controlado)
|
|
327
|
-
*
|
|
328
|
-
* Ejemplo de Quantity controlado con estado externo.
|
|
329
|
-
*/
|
|
330
|
-
export const Controlado: Story = {
|
|
331
|
-
name: 'Controlado',
|
|
332
|
-
args: {
|
|
333
|
-
label: '',
|
|
334
|
-
},
|
|
335
|
-
render: () => {
|
|
336
|
-
const ControlledQuantity = () => {
|
|
337
|
-
const [value, setValue] = useState(0);
|
|
338
|
-
|
|
339
|
-
return (
|
|
340
|
-
<div className="space-y-4">
|
|
341
|
-
<Quantity
|
|
342
|
-
label="Cantidad de productos"
|
|
343
|
-
value={value}
|
|
344
|
-
onChange={setValue}
|
|
345
|
-
min={0}
|
|
346
|
-
max={10}
|
|
347
|
-
helperText={`Has seleccionado ${value} producto${value !== 1 ? 's' : ''}`}
|
|
348
|
-
/>
|
|
349
|
-
<div className="flex gap-2">
|
|
350
|
-
<button
|
|
351
|
-
onClick={() => setValue(0)}
|
|
352
|
-
className="px-4 py-2 bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-white rounded text-sm hover:bg-gray-300 dark:hover:bg-gray-600 transition-colors"
|
|
353
|
-
>
|
|
354
|
-
Reset
|
|
355
|
-
</button>
|
|
356
|
-
<button
|
|
357
|
-
onClick={() => setValue(5)}
|
|
358
|
-
className="px-4 py-2 bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-white rounded text-sm hover:bg-gray-300 dark:hover:bg-gray-600 transition-colors"
|
|
359
|
-
>
|
|
360
|
-
Set to 5
|
|
361
|
-
</button>
|
|
362
|
-
<button
|
|
363
|
-
onClick={() => setValue(10)}
|
|
364
|
-
className="px-4 py-2 bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-white rounded text-sm hover:bg-gray-300 dark:hover:bg-gray-600 transition-colors"
|
|
365
|
-
>
|
|
366
|
-
Set to Max
|
|
367
|
-
</button>
|
|
368
|
-
</div>
|
|
369
|
-
</div>
|
|
370
|
-
);
|
|
371
|
-
};
|
|
372
|
-
|
|
373
|
-
return <ControlledQuantity />;
|
|
374
|
-
},
|
|
375
|
-
};
|
|
376
|
-
|
|
377
|
-
// ============================================
|
|
378
|
-
// 6. CASOS DE USO REALES
|
|
379
|
-
// ============================================
|
|
380
|
-
|
|
381
|
-
/**
|
|
382
|
-
* Casos de Uso Reales
|
|
383
|
-
*
|
|
384
|
-
* Ejemplos prácticos de cómo usar Quantity en situaciones reales.
|
|
385
|
-
*/
|
|
386
|
-
export const UseCases: Story = {
|
|
387
|
-
name: 'Casos de Uso Reales',
|
|
388
|
-
args: {
|
|
389
|
-
label: '',
|
|
390
|
-
},
|
|
391
|
-
render: () => (
|
|
392
|
-
<div className="space-y-6">
|
|
393
|
-
{/* Carrito de compras */}
|
|
394
|
-
<div>
|
|
395
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Carrito de Compras</h3>
|
|
396
|
-
<Quantity
|
|
397
|
-
label="Cantidad"
|
|
398
|
-
linkText="Eliminar"
|
|
399
|
-
defaultValue={1}
|
|
400
|
-
min={1}
|
|
401
|
-
max={99}
|
|
402
|
-
helperText="Máximo 99 unidades por producto"
|
|
403
|
-
onLinkClick={() => console.log('Remove from cart')}
|
|
404
|
-
/>
|
|
405
|
-
</div>
|
|
406
|
-
|
|
407
|
-
{/* Selector de personas */}
|
|
408
|
-
<div>
|
|
409
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Selector de Personas</h3>
|
|
410
|
-
<Quantity
|
|
411
|
-
label="Número de personas"
|
|
412
|
-
defaultValue={2}
|
|
413
|
-
min={1}
|
|
414
|
-
max={10}
|
|
415
|
-
helperText="Selecciona cuántas personas asistirán"
|
|
416
|
-
/>
|
|
417
|
-
</div>
|
|
418
|
-
|
|
419
|
-
{/* Ajuste de parámetros */}
|
|
420
|
-
<div>
|
|
421
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Ajuste de Parámetros</h3>
|
|
422
|
-
<Quantity
|
|
423
|
-
label="Tiempo de espera (minutos)"
|
|
424
|
-
linkText="Restablecer"
|
|
425
|
-
defaultValue={5}
|
|
426
|
-
min={0}
|
|
427
|
-
max={60}
|
|
428
|
-
helperText="Configura el tiempo de espera en minutos"
|
|
429
|
-
onLinkClick={() => console.log('Reset to default')}
|
|
430
|
-
/>
|
|
431
|
-
</div>
|
|
432
|
-
|
|
433
|
-
{/* Stock disponible */}
|
|
434
|
-
<div>
|
|
435
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Stock Disponible</h3>
|
|
436
|
-
<Quantity
|
|
437
|
-
label="Cantidad"
|
|
438
|
-
defaultValue={3}
|
|
439
|
-
min={1}
|
|
440
|
-
max={5}
|
|
441
|
-
helperText="Solo quedan 5 unidades disponibles"
|
|
442
|
-
/>
|
|
443
|
-
</div>
|
|
444
|
-
|
|
445
|
-
{/* Producto agotado */}
|
|
446
|
-
<div>
|
|
447
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Producto Agotado</h3>
|
|
448
|
-
<Quantity
|
|
449
|
-
label="Cantidad"
|
|
450
|
-
defaultValue={0}
|
|
451
|
-
disabled
|
|
452
|
-
helperText="Producto temporalmente agotado"
|
|
453
|
-
/>
|
|
454
|
-
</div>
|
|
455
|
-
</div>
|
|
456
|
-
),
|
|
457
|
-
};
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { Quantity } from './Quantity';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Quantity - Componente de cantidad del sistema de diseño Siesa
|
|
7
|
+
*
|
|
8
|
+
* Sistema completo para seleccionar cantidades numéricas con soporte para:
|
|
9
|
+
* - **Botones de incremento/decremento**: Plus y minus icons
|
|
10
|
+
* - **Restricciones**: Valores mínimo y máximo
|
|
11
|
+
* - **Label opcional**: Con link opcional a la derecha
|
|
12
|
+
* - **Helper text**: Texto de ayuda opcional
|
|
13
|
+
* - **Estado de error**: Validación visual
|
|
14
|
+
* - **Estado deshabilitado**: Interacción bloqueada
|
|
15
|
+
* - **Dark mode**: Adaptación completa al tema oscuro
|
|
16
|
+
*
|
|
17
|
+
* @see docs/colors.md - Sistema de colores
|
|
18
|
+
* @see docs/typography.md - Sistema tipográfico
|
|
19
|
+
* @see docs/spacing.md - Sistema de espaciado
|
|
20
|
+
*/
|
|
21
|
+
const meta = {
|
|
22
|
+
title: 'Siesa UI Kit/Quantity',
|
|
23
|
+
component: Quantity,
|
|
24
|
+
parameters: {
|
|
25
|
+
layout: 'centered',
|
|
26
|
+
docs: {
|
|
27
|
+
description: {
|
|
28
|
+
component:
|
|
29
|
+
'Componente para seleccionar cantidades numéricas con botones de incremento y decremento. Ideal para selección de productos, ajuste de parámetros numéricos, etc.',
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
backgrounds: {
|
|
33
|
+
default: 'light',
|
|
34
|
+
values: [
|
|
35
|
+
{ name: 'light', value: '#ffffff' },
|
|
36
|
+
{ name: 'gray', value: '#f3f4f6' },
|
|
37
|
+
{ name: 'dark', value: '#1f2937' },
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
tags: ['autodocs'],
|
|
42
|
+
argTypes: {
|
|
43
|
+
value: {
|
|
44
|
+
control: 'number',
|
|
45
|
+
description: 'Valor actual (controlado)',
|
|
46
|
+
table: {
|
|
47
|
+
type: { summary: 'number' },
|
|
48
|
+
category: 'State',
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
defaultValue: {
|
|
52
|
+
control: 'number',
|
|
53
|
+
description: 'Valor por defecto (no controlado)',
|
|
54
|
+
table: {
|
|
55
|
+
type: { summary: 'number' },
|
|
56
|
+
defaultValue: { summary: '0' },
|
|
57
|
+
category: 'State',
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
min: {
|
|
61
|
+
control: 'number',
|
|
62
|
+
description: 'Valor mínimo permitido',
|
|
63
|
+
table: {
|
|
64
|
+
type: { summary: 'number' },
|
|
65
|
+
defaultValue: { summary: '0' },
|
|
66
|
+
category: 'Validation',
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
max: {
|
|
70
|
+
control: 'number',
|
|
71
|
+
description: 'Valor máximo permitido',
|
|
72
|
+
table: {
|
|
73
|
+
type: { summary: 'number' },
|
|
74
|
+
category: 'Validation',
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
label: {
|
|
78
|
+
control: 'text',
|
|
79
|
+
description: 'Label opcional',
|
|
80
|
+
table: {
|
|
81
|
+
type: { summary: 'string' },
|
|
82
|
+
category: 'Content',
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
linkText: {
|
|
86
|
+
control: 'text',
|
|
87
|
+
description: 'Texto del link opcional (aparece a la derecha del label)',
|
|
88
|
+
table: {
|
|
89
|
+
type: { summary: 'string' },
|
|
90
|
+
category: 'Content',
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
helperText: {
|
|
94
|
+
control: 'text',
|
|
95
|
+
description: 'Texto de ayuda opcional',
|
|
96
|
+
table: {
|
|
97
|
+
type: { summary: 'string' },
|
|
98
|
+
category: 'Content',
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
error: {
|
|
102
|
+
control: 'boolean',
|
|
103
|
+
description: 'Estado de error',
|
|
104
|
+
table: {
|
|
105
|
+
type: { summary: 'boolean' },
|
|
106
|
+
defaultValue: { summary: 'false' },
|
|
107
|
+
category: 'State',
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
disabled: {
|
|
111
|
+
control: 'boolean',
|
|
112
|
+
description: 'Estado deshabilitado',
|
|
113
|
+
table: {
|
|
114
|
+
type: { summary: 'boolean' },
|
|
115
|
+
defaultValue: { summary: 'false' },
|
|
116
|
+
category: 'State',
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
onChange: {
|
|
120
|
+
action: 'changed',
|
|
121
|
+
description: 'Callback cuando el valor cambia',
|
|
122
|
+
table: {
|
|
123
|
+
type: { summary: '(value: number) => void' },
|
|
124
|
+
category: 'Events',
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
onLinkClick: {
|
|
128
|
+
action: 'link clicked',
|
|
129
|
+
description: 'Callback cuando se hace click en el link',
|
|
130
|
+
table: {
|
|
131
|
+
type: { summary: '() => void' },
|
|
132
|
+
category: 'Events',
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
} satisfies Meta<typeof Quantity>;
|
|
137
|
+
|
|
138
|
+
export default meta;
|
|
139
|
+
type Story = StoryObj<typeof meta>;
|
|
140
|
+
|
|
141
|
+
// ============================================
|
|
142
|
+
// 1. PLAYGROUND INTERACTIVO
|
|
143
|
+
// ============================================
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Playground Interactivo
|
|
147
|
+
*
|
|
148
|
+
* Usa los controles para experimentar con el Quantity en tiempo real.
|
|
149
|
+
*/
|
|
150
|
+
export const Playground: Story = {
|
|
151
|
+
name: 'Playground',
|
|
152
|
+
args: {
|
|
153
|
+
label: 'Cantidad',
|
|
154
|
+
defaultValue: 0,
|
|
155
|
+
min: 0,
|
|
156
|
+
max: 10,
|
|
157
|
+
helperText: 'Selecciona una cantidad entre 0 y 10',
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
// ============================================
|
|
162
|
+
// 2. VARIANTES BÁSICAS
|
|
163
|
+
// ============================================
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Variantes Básicas
|
|
167
|
+
*
|
|
168
|
+
* Vista de las variantes básicas del Quantity según Figma.
|
|
169
|
+
*/
|
|
170
|
+
export const VariantesBasicas: Story = {
|
|
171
|
+
name: 'Variantes Básicas',
|
|
172
|
+
args: {
|
|
173
|
+
label: '',
|
|
174
|
+
},
|
|
175
|
+
render: () => (
|
|
176
|
+
<div className="space-y-6">
|
|
177
|
+
{/* Sin label */}
|
|
178
|
+
<div>
|
|
179
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Sin Label</h3>
|
|
180
|
+
<Quantity defaultValue={0} />
|
|
181
|
+
</div>
|
|
182
|
+
|
|
183
|
+
{/* Con label */}
|
|
184
|
+
<div>
|
|
185
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Con Label</h3>
|
|
186
|
+
<Quantity label="Cantidad" defaultValue={5} />
|
|
187
|
+
</div>
|
|
188
|
+
|
|
189
|
+
{/* Con label y helper text */}
|
|
190
|
+
<div>
|
|
191
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Con Label y Helper Text</h3>
|
|
192
|
+
<Quantity
|
|
193
|
+
label="Cantidad"
|
|
194
|
+
helperText="Selecciona la cantidad deseada"
|
|
195
|
+
defaultValue={3}
|
|
196
|
+
/>
|
|
197
|
+
</div>
|
|
198
|
+
|
|
199
|
+
{/* Con label, helper text y link */}
|
|
200
|
+
<div>
|
|
201
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Con Label, Helper Text y Link</h3>
|
|
202
|
+
<Quantity
|
|
203
|
+
label="Cantidad"
|
|
204
|
+
linkText="Limpiar"
|
|
205
|
+
helperText="Selecciona la cantidad deseada"
|
|
206
|
+
defaultValue={8}
|
|
207
|
+
onLinkClick={() => console.log('Link clicked')}
|
|
208
|
+
/>
|
|
209
|
+
</div>
|
|
210
|
+
</div>
|
|
211
|
+
),
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
// ============================================
|
|
215
|
+
// 3. ESTADOS
|
|
216
|
+
// ============================================
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Estados
|
|
220
|
+
*
|
|
221
|
+
* Vista de todos los estados posibles del Quantity.
|
|
222
|
+
*/
|
|
223
|
+
export const Estados: Story = {
|
|
224
|
+
name: 'Estados',
|
|
225
|
+
args: {
|
|
226
|
+
label: '',
|
|
227
|
+
},
|
|
228
|
+
render: () => (
|
|
229
|
+
<div className="space-y-6">
|
|
230
|
+
{/* Default (vacío) */}
|
|
231
|
+
<div>
|
|
232
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Default (Vacío)</h3>
|
|
233
|
+
<Quantity label="Cantidad" defaultValue={0} helperText="Valor inicial en 0" />
|
|
234
|
+
</div>
|
|
235
|
+
|
|
236
|
+
{/* Filled (con valor) */}
|
|
237
|
+
<div>
|
|
238
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Filled (Con Valor)</h3>
|
|
239
|
+
<Quantity label="Cantidad" defaultValue={5} helperText="Valor actual: 5" />
|
|
240
|
+
</div>
|
|
241
|
+
|
|
242
|
+
{/* Error */}
|
|
243
|
+
<div>
|
|
244
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Error</h3>
|
|
245
|
+
<Quantity
|
|
246
|
+
label="Cantidad"
|
|
247
|
+
defaultValue={15}
|
|
248
|
+
max={10}
|
|
249
|
+
error
|
|
250
|
+
helperText="El valor no puede ser mayor a 10"
|
|
251
|
+
/>
|
|
252
|
+
</div>
|
|
253
|
+
|
|
254
|
+
{/* Disabled */}
|
|
255
|
+
<div>
|
|
256
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Disabled</h3>
|
|
257
|
+
<Quantity
|
|
258
|
+
label="Cantidad"
|
|
259
|
+
defaultValue={3}
|
|
260
|
+
disabled
|
|
261
|
+
helperText="Campo deshabilitado"
|
|
262
|
+
/>
|
|
263
|
+
</div>
|
|
264
|
+
</div>
|
|
265
|
+
),
|
|
266
|
+
};
|
|
267
|
+
|
|
268
|
+
// ============================================
|
|
269
|
+
// 4. CON RESTRICCIONES MIN/MAX
|
|
270
|
+
// ============================================
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Con Restricciones Min/Max
|
|
274
|
+
*
|
|
275
|
+
* Ejemplos de Quantity con valores mínimo y máximo.
|
|
276
|
+
*/
|
|
277
|
+
export const ConMinMax: Story = {
|
|
278
|
+
name: 'Con Min/Max',
|
|
279
|
+
args: {
|
|
280
|
+
label: '',
|
|
281
|
+
},
|
|
282
|
+
render: () => (
|
|
283
|
+
<div className="space-y-6">
|
|
284
|
+
{/* Solo mínimo */}
|
|
285
|
+
<div>
|
|
286
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Solo Mínimo (min=0)</h3>
|
|
287
|
+
<Quantity
|
|
288
|
+
label="Cantidad"
|
|
289
|
+
defaultValue={0}
|
|
290
|
+
min={0}
|
|
291
|
+
helperText="No puede ser menor a 0"
|
|
292
|
+
/>
|
|
293
|
+
</div>
|
|
294
|
+
|
|
295
|
+
{/* Solo máximo */}
|
|
296
|
+
<div>
|
|
297
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Solo Máximo (max=10)</h3>
|
|
298
|
+
<Quantity
|
|
299
|
+
label="Cantidad"
|
|
300
|
+
defaultValue={10}
|
|
301
|
+
max={10}
|
|
302
|
+
helperText="No puede ser mayor a 10"
|
|
303
|
+
/>
|
|
304
|
+
</div>
|
|
305
|
+
|
|
306
|
+
{/* Mínimo y máximo */}
|
|
307
|
+
<div>
|
|
308
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Min y Max (1-5)</h3>
|
|
309
|
+
<Quantity
|
|
310
|
+
label="Cantidad"
|
|
311
|
+
defaultValue={3}
|
|
312
|
+
min={1}
|
|
313
|
+
max={5}
|
|
314
|
+
helperText="Valor entre 1 y 5"
|
|
315
|
+
/>
|
|
316
|
+
</div>
|
|
317
|
+
</div>
|
|
318
|
+
),
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
// ============================================
|
|
322
|
+
// 5. INTERACTIVO (CONTROLADO)
|
|
323
|
+
// ============================================
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* Interactivo (Controlado)
|
|
327
|
+
*
|
|
328
|
+
* Ejemplo de Quantity controlado con estado externo.
|
|
329
|
+
*/
|
|
330
|
+
export const Controlado: Story = {
|
|
331
|
+
name: 'Controlado',
|
|
332
|
+
args: {
|
|
333
|
+
label: '',
|
|
334
|
+
},
|
|
335
|
+
render: () => {
|
|
336
|
+
const ControlledQuantity = () => {
|
|
337
|
+
const [value, setValue] = useState(0);
|
|
338
|
+
|
|
339
|
+
return (
|
|
340
|
+
<div className="space-y-4">
|
|
341
|
+
<Quantity
|
|
342
|
+
label="Cantidad de productos"
|
|
343
|
+
value={value}
|
|
344
|
+
onChange={setValue}
|
|
345
|
+
min={0}
|
|
346
|
+
max={10}
|
|
347
|
+
helperText={`Has seleccionado ${value} producto${value !== 1 ? 's' : ''}`}
|
|
348
|
+
/>
|
|
349
|
+
<div className="flex gap-2">
|
|
350
|
+
<button
|
|
351
|
+
onClick={() => setValue(0)}
|
|
352
|
+
className="px-4 py-2 bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-white rounded text-sm hover:bg-gray-300 dark:hover:bg-gray-600 transition-colors"
|
|
353
|
+
>
|
|
354
|
+
Reset
|
|
355
|
+
</button>
|
|
356
|
+
<button
|
|
357
|
+
onClick={() => setValue(5)}
|
|
358
|
+
className="px-4 py-2 bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-white rounded text-sm hover:bg-gray-300 dark:hover:bg-gray-600 transition-colors"
|
|
359
|
+
>
|
|
360
|
+
Set to 5
|
|
361
|
+
</button>
|
|
362
|
+
<button
|
|
363
|
+
onClick={() => setValue(10)}
|
|
364
|
+
className="px-4 py-2 bg-gray-200 dark:bg-gray-700 text-gray-700 dark:text-white rounded text-sm hover:bg-gray-300 dark:hover:bg-gray-600 transition-colors"
|
|
365
|
+
>
|
|
366
|
+
Set to Max
|
|
367
|
+
</button>
|
|
368
|
+
</div>
|
|
369
|
+
</div>
|
|
370
|
+
);
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
return <ControlledQuantity />;
|
|
374
|
+
},
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
// ============================================
|
|
378
|
+
// 6. CASOS DE USO REALES
|
|
379
|
+
// ============================================
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* Casos de Uso Reales
|
|
383
|
+
*
|
|
384
|
+
* Ejemplos prácticos de cómo usar Quantity en situaciones reales.
|
|
385
|
+
*/
|
|
386
|
+
export const UseCases: Story = {
|
|
387
|
+
name: 'Casos de Uso Reales',
|
|
388
|
+
args: {
|
|
389
|
+
label: '',
|
|
390
|
+
},
|
|
391
|
+
render: () => (
|
|
392
|
+
<div className="space-y-6">
|
|
393
|
+
{/* Carrito de compras */}
|
|
394
|
+
<div>
|
|
395
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Carrito de Compras</h3>
|
|
396
|
+
<Quantity
|
|
397
|
+
label="Cantidad"
|
|
398
|
+
linkText="Eliminar"
|
|
399
|
+
defaultValue={1}
|
|
400
|
+
min={1}
|
|
401
|
+
max={99}
|
|
402
|
+
helperText="Máximo 99 unidades por producto"
|
|
403
|
+
onLinkClick={() => console.log('Remove from cart')}
|
|
404
|
+
/>
|
|
405
|
+
</div>
|
|
406
|
+
|
|
407
|
+
{/* Selector de personas */}
|
|
408
|
+
<div>
|
|
409
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Selector de Personas</h3>
|
|
410
|
+
<Quantity
|
|
411
|
+
label="Número de personas"
|
|
412
|
+
defaultValue={2}
|
|
413
|
+
min={1}
|
|
414
|
+
max={10}
|
|
415
|
+
helperText="Selecciona cuántas personas asistirán"
|
|
416
|
+
/>
|
|
417
|
+
</div>
|
|
418
|
+
|
|
419
|
+
{/* Ajuste de parámetros */}
|
|
420
|
+
<div>
|
|
421
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Ajuste de Parámetros</h3>
|
|
422
|
+
<Quantity
|
|
423
|
+
label="Tiempo de espera (minutos)"
|
|
424
|
+
linkText="Restablecer"
|
|
425
|
+
defaultValue={5}
|
|
426
|
+
min={0}
|
|
427
|
+
max={60}
|
|
428
|
+
helperText="Configura el tiempo de espera en minutos"
|
|
429
|
+
onLinkClick={() => console.log('Reset to default')}
|
|
430
|
+
/>
|
|
431
|
+
</div>
|
|
432
|
+
|
|
433
|
+
{/* Stock disponible */}
|
|
434
|
+
<div>
|
|
435
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Stock Disponible</h3>
|
|
436
|
+
<Quantity
|
|
437
|
+
label="Cantidad"
|
|
438
|
+
defaultValue={3}
|
|
439
|
+
min={1}
|
|
440
|
+
max={5}
|
|
441
|
+
helperText="Solo quedan 5 unidades disponibles"
|
|
442
|
+
/>
|
|
443
|
+
</div>
|
|
444
|
+
|
|
445
|
+
{/* Producto agotado */}
|
|
446
|
+
<div>
|
|
447
|
+
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">Producto Agotado</h3>
|
|
448
|
+
<Quantity
|
|
449
|
+
label="Cantidad"
|
|
450
|
+
defaultValue={0}
|
|
451
|
+
disabled
|
|
452
|
+
helperText="Producto temporalmente agotado"
|
|
453
|
+
/>
|
|
454
|
+
</div>
|
|
455
|
+
</div>
|
|
456
|
+
),
|
|
457
|
+
};
|