siesa-ui-kit 1.0.3 → 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 +28 -54
- package/claude/agents/siesa-ui-kit-specialist.md +2401 -0
- package/claude/prompts/component-template.md +121 -0
- package/claude/settings.local.json +61 -0
- package/docs/border-radius.md +1261 -0
- package/docs/colors.md +832 -0
- package/docs/dark-mode-guide.md +1426 -0
- package/docs/filters.md +1243 -0
- package/docs/icons.md +1283 -0
- package/docs/shadows.md +1377 -0
- package/docs/spacing.md +1684 -0
- package/docs/typography.md +1268 -0
- package/package.json +14 -34
- package/postcss.config.cjs +6 -0
- package/public/,Business Logo.png +0 -0
- package/public/.Siesa Logo.png +0 -0
- package/public/bg_siesa.png +0 -0
- package/public/siesa_logo_mobile.png +0 -0
- package/public/vite.svg +1 -0
- package/src/App.css +42 -0
- package/src/App.tsx +8 -0
- package/src/ButtonTest.tsx +147 -0
- package/src/assets/fonts/README.md +261 -0
- package/src/assets/fonts/SiesaBT/SiesaBT-Bold.otf +0 -0
- package/src/assets/fonts/SiesaBT/SiesaBT-Light.otf +0 -0
- package/src/assets/fonts/SiesaBT/SiesaBT-Regular.otf +0 -0
- package/src/assets/react.svg +1 -0
- package/src/components/Alert/Alert.stories.tsx +332 -0
- package/src/components/Alert/Alert.tsx +106 -0
- package/src/components/Alert/Alert.types.ts +54 -0
- package/src/components/Avatar/Avatar.stories.tsx +494 -0
- package/src/components/Avatar/Avatar.tsx +143 -0
- package/src/components/Avatar/Avatar.types.ts +53 -0
- package/src/components/Badge/Badge.stories.tsx +339 -0
- package/src/components/Badge/Badge.tsx +278 -0
- package/src/components/Badge/Badge.types.ts +58 -0
- package/src/components/Button/Button.stories.tsx +950 -0
- package/src/components/Button/Button.tsx +337 -0
- package/src/components/Button/Button.types.ts +180 -0
- package/src/components/Button/icons.tsx +87 -0
- package/{dist/components/Button/index.d.ts → src/components/Button/index.ts} +3 -4
- package/src/components/Checkbox/Checkbox.stories.tsx +453 -0
- package/src/components/Checkbox/Checkbox.tsx +208 -0
- package/src/components/Checkbox/Checkbox.types.ts +61 -0
- package/src/components/DescriptionList/DescriptionList.stories.tsx +250 -0
- package/src/components/DescriptionList/DescriptionList.tsx +96 -0
- package/src/components/DescriptionList/DescriptionList.types.ts +29 -0
- package/src/components/Divider/Divider.stories.tsx +263 -0
- package/src/components/Divider/Divider.tsx +80 -0
- package/src/components/Divider/Divider.types.ts +24 -0
- package/src/components/Dropdown/Dropdown.stories.tsx +552 -0
- package/src/components/Dropdown/Dropdown.tsx +422 -0
- package/src/components/Dropdown/Dropdown.types.ts +146 -0
- package/src/components/Dropdown/README.md +266 -0
- package/src/components/Dropdown/icons.tsx +72 -0
- package/{dist/components/Dropdown/index.d.ts → src/components/Dropdown/index.ts} +8 -4
- package/src/components/Input/Input.stories.tsx +583 -0
- package/src/components/Input/Input.tsx +204 -0
- package/src/components/Input/Input.types.ts +80 -0
- package/src/components/Input/icons.tsx +145 -0
- package/{dist/components/Input/index.d.ts → src/components/Input/index.ts} +2 -3
- package/src/components/LoginView/LoginView.stories.tsx +148 -0
- package/src/components/LoginView/LoginView.tsx +426 -0
- package/src/components/LoginView/LoginView.types.ts +52 -0
- package/src/components/LoginView/README.md +396 -0
- package/src/components/LoginView/icons.tsx +85 -0
- package/{dist/components/LoginView/index.d.ts → src/components/LoginView/index.ts} +3 -4
- package/src/components/Navbar/Navbar.stories.tsx +810 -0
- package/src/components/Navbar/Navbar.tsx +755 -0
- package/src/components/Navbar/Navbar.types.ts +219 -0
- package/src/components/Navbar/README.md +279 -0
- package/src/components/Navbar/icons.tsx +102 -0
- package/src/components/Navbar/index.ts +8 -0
- package/src/components/NavigationBar/NavigationBar.stories.tsx +406 -0
- package/src/components/NavigationBar/NavigationBar.tsx +246 -0
- package/src/components/NavigationBar/NavigationBar.types.ts +74 -0
- package/src/components/NavigationBar/README.md +469 -0
- package/{dist/components/NavigationBar/index.d.ts → src/components/NavigationBar/index.ts} +2 -3
- package/src/components/NavigationRail/NavigationRail.stories.tsx +417 -0
- package/src/components/NavigationRail/NavigationRail.tsx +418 -0
- package/src/components/NavigationRail/NavigationRail.types.ts +109 -0
- package/src/components/NavigationRail/README.md +224 -0
- package/{dist/components/NavigationRail/index.d.ts → src/components/NavigationRail/index.ts} +2 -3
- package/src/components/Notification/Notification.stories.tsx +513 -0
- package/src/components/Notification/Notification.tsx +145 -0
- package/src/components/Notification/Notification.types.ts +142 -0
- package/src/components/Notification/README.md +409 -0
- package/{dist/components/Notification/index.d.ts → src/components/Notification/index.ts} +3 -3
- package/src/components/POSConvention/POSConvention.stories.tsx +235 -0
- package/src/components/POSConvention/POSConvention.tsx +129 -0
- package/{dist/components/POSConvention/POSConvention.types.d.ts → src/components/POSConvention/POSConvention.types.ts} +38 -37
- package/src/components/POSConvention/README.md +123 -0
- package/src/components/POSConvention/icons.tsx +45 -0
- package/{dist/components/POSConvention/index.d.ts → src/components/POSConvention/index.ts} +3 -4
- package/src/components/POSLocationButton/POSLocationButton.stories.tsx +531 -0
- package/src/components/POSLocationButton/POSLocationButton.tsx +247 -0
- package/src/components/POSLocationButton/POSLocationButton.types.ts +87 -0
- package/src/components/POSLocationButton/README.md +253 -0
- package/src/components/POSLocationButton/icons.tsx +120 -0
- package/src/components/POSLocationButton/index.ts +14 -0
- package/src/components/POSNumberButton/POSNumberButton.stories.tsx +415 -0
- package/src/components/POSNumberButton/POSNumberButton.tsx +179 -0
- package/src/components/POSNumberButton/POSNumberButton.types.ts +51 -0
- package/src/components/POSNumberButton/README.md +321 -0
- package/{dist/components/POSNumberButton/index.d.ts → src/components/POSNumberButton/index.ts} +3 -3
- package/src/components/POSProductButton/POSProductButton.stories.tsx +318 -0
- package/src/components/POSProductButton/POSProductButton.tsx +152 -0
- package/src/components/POSProductButton/POSProductButton.types.ts +46 -0
- package/src/components/POSProductButton/README.md +269 -0
- package/{dist/components/POSProductButton/index.d.ts → src/components/POSProductButton/index.ts} +2 -3
- package/src/components/POSProductCard/POSProductCard.stories.tsx +642 -0
- package/src/components/POSProductCard/POSProductCard.tsx +208 -0
- package/src/components/POSProductCard/POSProductCard.types.ts +76 -0
- package/src/components/POSProductCard/README.md +179 -0
- package/src/components/POSProductCard/icons.tsx +26 -0
- package/{dist/components/POSProductCard/index.d.ts → src/components/POSProductCard/index.ts} +2 -3
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +753 -0
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +332 -0
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +119 -0
- package/src/components/POSProductSidebarItems/README.md +198 -0
- package/src/components/POSProductSidebarItems/icons.tsx +21 -0
- package/{dist/components/POSProductSidebarItems/index.d.ts → src/components/POSProductSidebarItems/index.ts} +3 -4
- package/src/components/POSTable/POSTable.stories.tsx +737 -0
- package/src/components/POSTable/POSTable.tsx +401 -0
- package/src/components/POSTable/POSTable.types.ts +83 -0
- package/src/components/POSTable/README.md +286 -0
- package/src/components/POSTable/index.ts +7 -0
- package/src/components/Pagination/Pagination.stories.tsx +555 -0
- package/src/components/Pagination/Pagination.tsx +286 -0
- package/src/components/Pagination/Pagination.types.ts +93 -0
- package/src/components/Pagination/README.md +298 -0
- package/src/components/Pagination/icons.tsx +47 -0
- package/{dist/components/Pagination/index.d.ts → src/components/Pagination/index.ts} +3 -4
- package/src/components/Quantity/Quantity.stories.tsx +457 -0
- package/src/components/Quantity/Quantity.tsx +289 -0
- package/src/components/Quantity/Quantity.types.ts +70 -0
- package/src/components/Radio/Radio.stories.tsx +523 -0
- package/src/components/Radio/Radio.tsx +170 -0
- package/src/components/Radio/Radio.types.ts +122 -0
- package/src/components/Select/README.md +299 -0
- package/src/components/Select/Select.stories.tsx +673 -0
- package/src/components/Select/Select.tsx +454 -0
- package/src/components/Select/Select.types.ts +148 -0
- package/src/components/Select/icons.tsx +50 -0
- package/{dist/components/Select/index.d.ts → src/components/Select/index.ts} +3 -4
- package/src/components/SignUpView/SignUpView.stories.tsx +129 -0
- package/src/components/SignUpView/SignUpView.tsx +503 -0
- package/src/components/SignUpView/SignUpView.types.ts +58 -0
- package/src/components/SignUpView/icons.tsx +71 -0
- package/{dist/components/SignUpView/index.d.ts → src/components/SignUpView/index.ts} +3 -4
- package/src/components/Switch/README.md +112 -0
- package/src/components/Switch/Switch.stories.tsx +550 -0
- package/src/components/Switch/Switch.tsx +246 -0
- package/src/components/Switch/Switch.types.ts +67 -0
- package/src/components/Table/README.md +369 -0
- package/src/components/Table/Table.stories.tsx +805 -0
- package/src/components/Table/Table.tsx +688 -0
- package/src/components/Table/Table.types.ts +204 -0
- package/src/components/Table/index.ts +9 -0
- package/src/components/Tabs/README.md +201 -0
- package/src/components/Tabs/Tabs.stories.tsx +580 -0
- package/src/components/Tabs/Tabs.tsx +356 -0
- package/src/components/Tabs/Tabs.types.ts +127 -0
- package/src/components/Tabs/icons.tsx +129 -0
- package/src/components/Tabs/index.ts +11 -0
- package/src/components/Textarea/Textarea.stories.tsx +535 -0
- package/src/components/Textarea/Textarea.tsx +188 -0
- package/src/components/Textarea/Textarea.types.ts +54 -0
- package/src/context/ThemeContext.tsx +99 -0
- package/{dist/context/index.d.ts → src/context/index.ts} +1 -2
- package/src/index.css +29 -0
- package/src/index.ts +39 -0
- package/src/main.tsx +10 -0
- package/src/views/ProductsView/ProductsView.stories.tsx +344 -0
- package/src/views/ProductsView/ProductsView.tsx +480 -0
- package/src/views/ProductsView/ProductsView.types.ts +238 -0
- package/src/views/ProductsView/README.md +312 -0
- package/src/views/ProductsView/icons.tsx +38 -0
- package/src/views/ProductsView/index.ts +8 -0
- package/src/views/RecoverPasswordView/README.md +269 -0
- package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +131 -0
- package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +376 -0
- package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +56 -0
- package/src/views/RecoverPasswordView/icons.tsx +17 -0
- package/{dist/views/RecoverPasswordView/index.d.ts → src/views/RecoverPasswordView/index.ts} +2 -3
- package/src/views/TableLayoutView/README.md +268 -0
- package/src/views/TableLayoutView/TableLayoutView.stories.tsx +235 -0
- package/src/views/TableLayoutView/TableLayoutView.tsx +461 -0
- package/src/views/TableLayoutView/TableLayoutView.types.ts +209 -0
- package/src/views/TableLayoutView/icons.tsx +113 -0
- package/src/views/TableLayoutView/index.ts +6 -0
- package/storybook/main.ts +20 -0
- package/storybook/preview.tsx +84 -0
- package/storybook/vitest.setup.ts +7 -0
- package/tailwind.config.js +128 -0
- 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 -26
- package/dist/components/Button/icons.d.ts.map +0 -1
- 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.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 -95
- 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.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.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.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.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 -155
- 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 -111
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/icons.d.ts +0 -58
- 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.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.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.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.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.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.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.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.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 -16
- package/dist/components/Select/icons.d.ts.map +0 -1
- 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.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.map +0 -1
- package/dist/index.d.ts +0 -56
- package/dist/index.d.ts.map +0 -1
- package/dist/siesa-ui-kit.cjs +0 -1260
- package/dist/siesa-ui-kit.cjs.map +0 -1
- package/dist/siesa-ui-kit.mjs +0 -4496
- package/dist/siesa-ui-kit.mjs.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.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
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
# POSNumberButton
|
|
2
|
+
|
|
3
|
+
Botón numérico especializado para sistemas POS (Point of Sale) con tipografía grande y estados touch-friendly.
|
|
4
|
+
|
|
5
|
+
## 📋 Características
|
|
6
|
+
|
|
7
|
+
- ✅ Diseñado específicamente para pantallas táctiles y sistemas POS
|
|
8
|
+
- ✅ Tipografía Display Tiny (48px Bold) para excelente legibilidad
|
|
9
|
+
- ✅ Tres tamaños: Small (40x40), Medium (65x65), Large (80x80)
|
|
10
|
+
- ✅ Opción de borde visible o sin borde
|
|
11
|
+
- ✅ Feedback táctil inmediato con `active:scale-95`
|
|
12
|
+
- ✅ Dark mode completo con todos los estados
|
|
13
|
+
- ✅ Focus rings adaptativos para accesibilidad
|
|
14
|
+
- ✅ TypeScript estricto con props validadas
|
|
15
|
+
- ✅ Tokens del sistema de diseño Siesa
|
|
16
|
+
|
|
17
|
+
## 🎨 Especificaciones de Figma
|
|
18
|
+
|
|
19
|
+
Basado en el diseño de Figma:
|
|
20
|
+
- **Node ID**: 4348-23818
|
|
21
|
+
- **Estados**: Default, Touched (Hover/Active)
|
|
22
|
+
- **Tamaños**: L (80x80px), M (65x65px), S (40x40px)
|
|
23
|
+
- **Variantes**: Con borde y sin borde
|
|
24
|
+
- **Tipografía**: Display Tiny (48px Bold / text-5xl)
|
|
25
|
+
- **Border Radius**: 8px (rounded-lg)
|
|
26
|
+
|
|
27
|
+
## 📦 Instalación
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
import { POSNumberButton } from '@/components/POSNumberButton';
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## 🚀 Uso Básico
|
|
34
|
+
|
|
35
|
+
### Botón Numérico Simple
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
<POSNumberButton size="l">
|
|
39
|
+
1
|
|
40
|
+
</POSNumberButton>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Botón con Borde
|
|
44
|
+
|
|
45
|
+
```tsx
|
|
46
|
+
<POSNumberButton size="l" border>
|
|
47
|
+
2
|
|
48
|
+
</POSNumberButton>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Teclado Numérico Completo
|
|
52
|
+
|
|
53
|
+
```tsx
|
|
54
|
+
<div className="grid grid-cols-3 gap-2 max-w-[260px]">
|
|
55
|
+
{[1, 2, 3, 4, 5, 6, 7, 8, 9].map((num) => (
|
|
56
|
+
<POSNumberButton
|
|
57
|
+
key={num}
|
|
58
|
+
size="l"
|
|
59
|
+
border
|
|
60
|
+
onClick={() => handleInput(num)}
|
|
61
|
+
>
|
|
62
|
+
{num}
|
|
63
|
+
</POSNumberButton>
|
|
64
|
+
))}
|
|
65
|
+
<POSNumberButton size="l" border>.</POSNumberButton>
|
|
66
|
+
<POSNumberButton size="l" border>0</POSNumberButton>
|
|
67
|
+
<POSNumberButton size="l" border>←</POSNumberButton>
|
|
68
|
+
</div>
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 🎛️ Props
|
|
72
|
+
|
|
73
|
+
| Prop | Tipo | Default | Descripción |
|
|
74
|
+
|------|------|---------|-------------|
|
|
75
|
+
| `size` | `'s' \| 'm' \| 'l'` | `'l'` | Tamaño del botón |
|
|
76
|
+
| `border` | `boolean` | `false` | Si el botón tiene borde visible |
|
|
77
|
+
| `children` | `ReactNode` | - | Contenido del botón (número o texto) |
|
|
78
|
+
| `disabled` | `boolean` | `false` | Si el botón está deshabilitado |
|
|
79
|
+
| `className` | `string` | `''` | Clases CSS adicionales |
|
|
80
|
+
| `onClick` | `(event) => void` | - | Handler para evento click |
|
|
81
|
+
| `ariaLabel` | `string` | - | Label para accesibilidad (ARIA) |
|
|
82
|
+
| `htmlType` | `'button' \| 'submit' \| 'reset'` | `'button'` | Tipo del botón HTML |
|
|
83
|
+
|
|
84
|
+
## 📐 Tamaños
|
|
85
|
+
|
|
86
|
+
### Small (40x40px)
|
|
87
|
+
```tsx
|
|
88
|
+
<POSNumberButton size="s">1</POSNumberButton>
|
|
89
|
+
```
|
|
90
|
+
- **Uso**: Calculadoras compactas, espacios reducidos
|
|
91
|
+
- **Tipografía**: text-2xl (24px)
|
|
92
|
+
|
|
93
|
+
### Medium (65x65px)
|
|
94
|
+
```tsx
|
|
95
|
+
<POSNumberButton size="m">2</POSNumberButton>
|
|
96
|
+
```
|
|
97
|
+
- **Uso**: Tablets, interfaces intermedias
|
|
98
|
+
- **Tipografía**: text-5xl (48px)
|
|
99
|
+
|
|
100
|
+
### Large (80x80px) - Default
|
|
101
|
+
```tsx
|
|
102
|
+
<POSNumberButton size="l">3</POSNumberButton>
|
|
103
|
+
```
|
|
104
|
+
- **Uso**: POS touch screens, pantallas grandes
|
|
105
|
+
- **Tipografía**: text-5xl (48px)
|
|
106
|
+
|
|
107
|
+
## 🎨 Variantes
|
|
108
|
+
|
|
109
|
+
### Sin Borde (Default)
|
|
110
|
+
```tsx
|
|
111
|
+
<POSNumberButton size="l">1</POSNumberButton>
|
|
112
|
+
```
|
|
113
|
+
- Fondo blanco en estado default
|
|
114
|
+
- Cambia a primary-custom-600 en hover/active
|
|
115
|
+
- Texto cambia a primary-inverse-content
|
|
116
|
+
|
|
117
|
+
### Con Borde
|
|
118
|
+
```tsx
|
|
119
|
+
<POSNumberButton size="l" border>2</POSNumberButton>
|
|
120
|
+
```
|
|
121
|
+
- Borde border-primary visible
|
|
122
|
+
- Cambia a primary-inverse-border en hover/active
|
|
123
|
+
- Mejor separación visual entre botones
|
|
124
|
+
|
|
125
|
+
## 🌓 Dark Mode
|
|
126
|
+
|
|
127
|
+
Todos los estados se adaptan automáticamente:
|
|
128
|
+
|
|
129
|
+
```tsx
|
|
130
|
+
// Light Mode:
|
|
131
|
+
// - Fondo: white (#ffffff)
|
|
132
|
+
// - Texto: content-primary (#18181b)
|
|
133
|
+
// - Hover: bg primary-custom-600, texto primary-inverse-content
|
|
134
|
+
|
|
135
|
+
// Dark Mode:
|
|
136
|
+
// - Fondo: dark-bg-primary (#18181b)
|
|
137
|
+
// - Texto: dark-content-primary (#ffffff)
|
|
138
|
+
// - Hover: bg dark-bg-inverse, texto dark-content-inverse
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
## 🎯 Estados
|
|
142
|
+
|
|
143
|
+
### Default
|
|
144
|
+
```tsx
|
|
145
|
+
<POSNumberButton>1</POSNumberButton>
|
|
146
|
+
```
|
|
147
|
+
- Fondo blanco, texto oscuro
|
|
148
|
+
- Cursor pointer
|
|
149
|
+
|
|
150
|
+
### Hover
|
|
151
|
+
```tsx
|
|
152
|
+
<POSNumberButton>2</POSNumberButton>
|
|
153
|
+
```
|
|
154
|
+
- Fondo cambia a primary-custom-600
|
|
155
|
+
- Texto cambia a primary-inverse-content
|
|
156
|
+
- Transición suave de 150ms
|
|
157
|
+
|
|
158
|
+
### Active (Presionado)
|
|
159
|
+
```tsx
|
|
160
|
+
<POSNumberButton>3</POSNumberButton>
|
|
161
|
+
```
|
|
162
|
+
- Mismo estilo que hover
|
|
163
|
+
- Efecto scale-95 para feedback táctil
|
|
164
|
+
- Ideal para pantallas touch
|
|
165
|
+
|
|
166
|
+
### Focus
|
|
167
|
+
```tsx
|
|
168
|
+
<POSNumberButton>4</POSNumberButton>
|
|
169
|
+
```
|
|
170
|
+
- Focus ring primary-custom-400 (light)
|
|
171
|
+
- Focus ring dark-border-custom (dark)
|
|
172
|
+
- Navegable con teclado (Tab)
|
|
173
|
+
|
|
174
|
+
### Disabled
|
|
175
|
+
```tsx
|
|
176
|
+
<POSNumberButton disabled>5</POSNumberButton>
|
|
177
|
+
```
|
|
178
|
+
- Opacity 50%
|
|
179
|
+
- Cursor not-allowed
|
|
180
|
+
- Pointer events deshabilitados
|
|
181
|
+
|
|
182
|
+
## 💡 Casos de Uso
|
|
183
|
+
|
|
184
|
+
### Sistema POS Completo
|
|
185
|
+
```tsx
|
|
186
|
+
function POSKeypad({ onInput }) {
|
|
187
|
+
return (
|
|
188
|
+
<div className="grid grid-cols-3 gap-2 max-w-[260px]">
|
|
189
|
+
{[1, 2, 3, 4, 5, 6, 7, 8, 9].map((num) => (
|
|
190
|
+
<POSNumberButton
|
|
191
|
+
key={num}
|
|
192
|
+
size="l"
|
|
193
|
+
border
|
|
194
|
+
onClick={() => onInput(num)}
|
|
195
|
+
>
|
|
196
|
+
{num}
|
|
197
|
+
</POSNumberButton>
|
|
198
|
+
))}
|
|
199
|
+
<POSNumberButton size="l" border onClick={() => onInput('.')}>
|
|
200
|
+
.
|
|
201
|
+
</POSNumberButton>
|
|
202
|
+
<POSNumberButton size="l" border onClick={() => onInput(0)}>
|
|
203
|
+
0
|
|
204
|
+
</POSNumberButton>
|
|
205
|
+
<POSNumberButton size="l" border onClick={() => onInput('backspace')}>
|
|
206
|
+
←
|
|
207
|
+
</POSNumberButton>
|
|
208
|
+
</div>
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### Calculadora
|
|
214
|
+
```tsx
|
|
215
|
+
function Calculator() {
|
|
216
|
+
return (
|
|
217
|
+
<div className="flex gap-4">
|
|
218
|
+
{/* Números */}
|
|
219
|
+
<div className="grid grid-cols-3 gap-2">
|
|
220
|
+
{[7, 8, 9, 4, 5, 6, 1, 2, 3, 0].map((num) => (
|
|
221
|
+
<POSNumberButton key={num} size="m" border>
|
|
222
|
+
{num}
|
|
223
|
+
</POSNumberButton>
|
|
224
|
+
))}
|
|
225
|
+
</div>
|
|
226
|
+
|
|
227
|
+
{/* Operadores */}
|
|
228
|
+
<div className="grid grid-cols-1 gap-2">
|
|
229
|
+
{['+', '-', '×', '÷', '='].map((op) => (
|
|
230
|
+
<POSNumberButton key={op} size="m" border>
|
|
231
|
+
{op}
|
|
232
|
+
</POSNumberButton>
|
|
233
|
+
))}
|
|
234
|
+
</div>
|
|
235
|
+
</div>
|
|
236
|
+
);
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### Teclado Compacto (Tablet)
|
|
241
|
+
```tsx
|
|
242
|
+
function CompactKeypad() {
|
|
243
|
+
return (
|
|
244
|
+
<div className="grid grid-cols-3 gap-2 max-w-[211px]">
|
|
245
|
+
{[1, 2, 3, 4, 5, 6, 7, 8, 9, '.', 0, '←'].map((key, idx) => (
|
|
246
|
+
<POSNumberButton key={idx} size="m">
|
|
247
|
+
{key}
|
|
248
|
+
</POSNumberButton>
|
|
249
|
+
))}
|
|
250
|
+
</div>
|
|
251
|
+
);
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## 🎨 Tokens Utilizados
|
|
256
|
+
|
|
257
|
+
### Colores (Light Mode)
|
|
258
|
+
- `bg-white` - Fondo default
|
|
259
|
+
- `text-content-primary` (#18181b) - Texto default
|
|
260
|
+
- `bg-primary-custom-600` (#0e79fd) - Fondo hover/active
|
|
261
|
+
- `text-primary-inverse-content` (#eff8ff) - Texto hover/active
|
|
262
|
+
- `border-border-primary` (#e4e4e7) - Borde default
|
|
263
|
+
- `border-primary-inverse-border` (#3c9bf6) - Borde hover/active
|
|
264
|
+
|
|
265
|
+
### Colores (Dark Mode)
|
|
266
|
+
- `dark:bg-dark-bg-primary` (#18181b) - Fondo default
|
|
267
|
+
- `dark:text-dark-content-primary` (#ffffff) - Texto default
|
|
268
|
+
- `dark:bg-dark-bg-inverse` (#bfe2fe) - Fondo hover/active
|
|
269
|
+
- `dark:text-dark-content-inverse` (#0e79fd) - Texto hover/active
|
|
270
|
+
- `dark:border-dark-border-primary` (#71717a) - Borde default
|
|
271
|
+
|
|
272
|
+
### Tipografía
|
|
273
|
+
- `text-5xl` (48px) - Display Tiny para tamaños M y L
|
|
274
|
+
- `text-2xl` (24px) - Heading Small para tamaño S
|
|
275
|
+
- `font-bold` (700) - Peso Bold
|
|
276
|
+
- `tracking-tighter` (-2.5%) - Letter spacing para Display
|
|
277
|
+
|
|
278
|
+
### Espaciado
|
|
279
|
+
- `rounded-lg` (8px) - Border radius según Figma
|
|
280
|
+
- `gap-2` (8px) - Espaciado entre botones en grids
|
|
281
|
+
|
|
282
|
+
## ✅ Mejores Prácticas
|
|
283
|
+
|
|
284
|
+
### ✓ Hacer
|
|
285
|
+
- Usa `size="l"` para pantallas táctiles POS
|
|
286
|
+
- Usa `border={true}` para mejor separación visual en grids
|
|
287
|
+
- Implementa feedback visual inmediato (scale-95 está incluido)
|
|
288
|
+
- Usa aria-label para accesibilidad cuando el contenido no es obvio
|
|
289
|
+
- Combina con grids de 3 columnas para teclados numéricos
|
|
290
|
+
|
|
291
|
+
### ✗ Evitar
|
|
292
|
+
- No uses tamaños muy pequeños para pantallas touch (mínimo size="m")
|
|
293
|
+
- No omitas el handler onClick en contextos interactivos
|
|
294
|
+
- No uses para botones que no sean numéricos u operadores
|
|
295
|
+
- No sobrescribas las transiciones (son optimizadas para touch)
|
|
296
|
+
|
|
297
|
+
## 🔗 Referencias
|
|
298
|
+
|
|
299
|
+
- **Diseño Figma**: [POS Number Button](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4348-23818)
|
|
300
|
+
- **Sistema de Colores**: `docs/colors.md`
|
|
301
|
+
- **Sistema Tipográfico**: `docs/typography.md` (Display Tiny)
|
|
302
|
+
- **Componente Base**: `src/components/Button/Button.tsx`
|
|
303
|
+
|
|
304
|
+
## 📝 Notas de Implementación
|
|
305
|
+
|
|
306
|
+
1. **Tipografía Display Tiny**: Según `typography.md`, Display Tiny es 48px (text-5xl) con font-bold y tracking-tighter
|
|
307
|
+
2. **Tamaños Exactos**: Los tamaños están basados en las especificaciones exactas de Figma (80x80, 65x65, 40x40)
|
|
308
|
+
3. **Estados Touch**: El efecto `active:scale-95` proporciona feedback táctil inmediato
|
|
309
|
+
4. **Dark Mode**: Todos los colores usan tokens del sistema que se adaptan automáticamente
|
|
310
|
+
5. **Accesibilidad**: Focus rings optimizados y aria-labels por defecto
|
|
311
|
+
|
|
312
|
+
## 📅 Historial
|
|
313
|
+
|
|
314
|
+
| Versión | Fecha | Cambios |
|
|
315
|
+
|---------|-------|---------|
|
|
316
|
+
| 1.0.0 | 2025-11-24 | Implementación inicial del componente |
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
**Autor**: Siesa UI Kit Team
|
|
321
|
+
**Última actualización**: 2025-11-24
|
package/{dist/components/POSNumberButton/index.d.ts → src/components/POSNumberButton/index.ts}
RENAMED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
|
|
1
|
+
// index.ts
|
|
2
|
+
export { POSNumberButton } from './POSNumberButton';
|
|
3
|
+
export type { POSNumberButtonProps } from './POSNumberButton.types';
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { POSProductButton } from './POSProductButton';
|
|
3
|
+
|
|
4
|
+
// Imagen de ejemplo (placeholder de Unsplash)
|
|
5
|
+
const exampleImage = 'https://images.unsplash.com/photo-1546069901-ba9599a7e63c?w=300&h=200&fit=crop';
|
|
6
|
+
|
|
7
|
+
const meta = {
|
|
8
|
+
title: 'Siesa UI Kit/POSProductButton',
|
|
9
|
+
component: POSProductButton,
|
|
10
|
+
parameters: {
|
|
11
|
+
layout: 'centered',
|
|
12
|
+
docs: {
|
|
13
|
+
description: {
|
|
14
|
+
component: 'Botón especializado para sistemas POS que combina una imagen de producto con un label descriptivo. Diseñado para selección rápida de productos en interfaces de punto de venta.',
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
tags: ['autodocs'],
|
|
19
|
+
argTypes: {
|
|
20
|
+
image: {
|
|
21
|
+
control: 'text',
|
|
22
|
+
description: 'URL de la imagen del producto',
|
|
23
|
+
table: {
|
|
24
|
+
type: { summary: 'string' },
|
|
25
|
+
category: 'Contenido',
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
label: {
|
|
29
|
+
control: 'text',
|
|
30
|
+
description: 'Texto del producto (nombre o descripción)',
|
|
31
|
+
table: {
|
|
32
|
+
type: { summary: 'string' },
|
|
33
|
+
category: 'Contenido',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
active: {
|
|
37
|
+
control: 'boolean',
|
|
38
|
+
description: 'Si el botón está en estado activo/seleccionado',
|
|
39
|
+
table: {
|
|
40
|
+
type: { summary: 'boolean' },
|
|
41
|
+
defaultValue: { summary: 'false' },
|
|
42
|
+
category: 'Estado',
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
disabled: {
|
|
46
|
+
control: 'boolean',
|
|
47
|
+
description: 'Si el botón está deshabilitado',
|
|
48
|
+
table: {
|
|
49
|
+
type: { summary: 'boolean' },
|
|
50
|
+
defaultValue: { summary: 'false' },
|
|
51
|
+
category: 'Estado',
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
onClick: {
|
|
55
|
+
action: 'clicked',
|
|
56
|
+
description: 'Handler para evento click',
|
|
57
|
+
table: {
|
|
58
|
+
type: { summary: '(event: MouseEvent<HTMLButtonElement>) => void' },
|
|
59
|
+
category: 'Comportamiento',
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
className: {
|
|
63
|
+
control: 'text',
|
|
64
|
+
description: 'Clases CSS adicionales',
|
|
65
|
+
table: {
|
|
66
|
+
type: { summary: 'string' },
|
|
67
|
+
category: 'Apariencia',
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
ariaLabel: {
|
|
71
|
+
control: 'text',
|
|
72
|
+
description: 'Label para accesibilidad (ARIA)',
|
|
73
|
+
table: {
|
|
74
|
+
type: { summary: 'string' },
|
|
75
|
+
category: 'Accesibilidad',
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
} satisfies Meta<typeof POSProductButton>;
|
|
80
|
+
|
|
81
|
+
export default meta;
|
|
82
|
+
type Story = StoryObj<typeof meta>;
|
|
83
|
+
|
|
84
|
+
// ============================================
|
|
85
|
+
// 1. PLAYGROUND INTERACTIVO
|
|
86
|
+
// ============================================
|
|
87
|
+
export const Playground: Story = {
|
|
88
|
+
args: {
|
|
89
|
+
image: exampleImage,
|
|
90
|
+
label: 'A la parrilla',
|
|
91
|
+
active: false,
|
|
92
|
+
disabled: false,
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
// ============================================
|
|
97
|
+
// 2. TODOS LOS ESTADOS
|
|
98
|
+
// ============================================
|
|
99
|
+
export const TodosLosEstados: Story = {
|
|
100
|
+
args: {
|
|
101
|
+
image: exampleImage,
|
|
102
|
+
label: 'A la parrilla',
|
|
103
|
+
},
|
|
104
|
+
render: () => (
|
|
105
|
+
<div className="space-y-8 p-6">
|
|
106
|
+
{/* Estado Enabled (Normal) */}
|
|
107
|
+
<div>
|
|
108
|
+
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
109
|
+
Enabled (Normal)
|
|
110
|
+
</h3>
|
|
111
|
+
<div className="flex flex-wrap gap-3">
|
|
112
|
+
<POSProductButton
|
|
113
|
+
image={exampleImage}
|
|
114
|
+
label="A la parrilla"
|
|
115
|
+
/>
|
|
116
|
+
</div>
|
|
117
|
+
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
118
|
+
Estado normal del botón, listo para ser clickeado
|
|
119
|
+
</p>
|
|
120
|
+
</div>
|
|
121
|
+
|
|
122
|
+
{/* Estado Actived (Seleccionado) */}
|
|
123
|
+
<div>
|
|
124
|
+
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
125
|
+
Actived (Seleccionado)
|
|
126
|
+
</h3>
|
|
127
|
+
<div className="flex flex-wrap gap-3">
|
|
128
|
+
<POSProductButton
|
|
129
|
+
image={exampleImage}
|
|
130
|
+
label="A la parrilla"
|
|
131
|
+
active={true}
|
|
132
|
+
/>
|
|
133
|
+
</div>
|
|
134
|
+
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
135
|
+
Estado activo cuando el producto está seleccionado
|
|
136
|
+
</p>
|
|
137
|
+
</div>
|
|
138
|
+
|
|
139
|
+
{/* Estado Disabled (Deshabilitado) */}
|
|
140
|
+
<div>
|
|
141
|
+
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
142
|
+
Disabled (Deshabilitado)
|
|
143
|
+
</h3>
|
|
144
|
+
<div className="flex flex-wrap gap-3">
|
|
145
|
+
<POSProductButton
|
|
146
|
+
image={exampleImage}
|
|
147
|
+
label="A la parrilla"
|
|
148
|
+
disabled={true}
|
|
149
|
+
/>
|
|
150
|
+
</div>
|
|
151
|
+
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
152
|
+
Estado deshabilitado con opacidad reducida
|
|
153
|
+
</p>
|
|
154
|
+
</div>
|
|
155
|
+
|
|
156
|
+
{/* Tips */}
|
|
157
|
+
<div className="mt-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
|
|
158
|
+
<p className="text-xs text-content-secondary dark:text-content-secondary">
|
|
159
|
+
<strong>💡 Consejos:</strong>
|
|
160
|
+
<br />• Usa el estado <code className="px-1 bg-white dark:bg-gray-700">active</code> para indicar el producto seleccionado
|
|
161
|
+
<br />• Usa el estado <code className="px-1 bg-white dark:bg-gray-700">disabled</code> para productos no disponibles
|
|
162
|
+
<br />• El botón tiene un aspect ratio de 158:80 para la imagen (según diseño de Figma)
|
|
163
|
+
</p>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
166
|
+
),
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
// ============================================
|
|
170
|
+
// 3. EJEMPLOS DE USO
|
|
171
|
+
// ============================================
|
|
172
|
+
export const EjemplosDeUso: Story = {
|
|
173
|
+
args: {
|
|
174
|
+
image: exampleImage,
|
|
175
|
+
label: 'A la parrilla',
|
|
176
|
+
},
|
|
177
|
+
render: () => (
|
|
178
|
+
<div className="space-y-8 p-6">
|
|
179
|
+
{/* Grid de productos */}
|
|
180
|
+
<div>
|
|
181
|
+
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
182
|
+
Grid de Productos (Típico en POS)
|
|
183
|
+
</h3>
|
|
184
|
+
<div className="grid grid-cols-3 gap-4 max-w-xl">
|
|
185
|
+
<POSProductButton
|
|
186
|
+
image={exampleImage}
|
|
187
|
+
label="A la parrilla"
|
|
188
|
+
active={true}
|
|
189
|
+
/>
|
|
190
|
+
<POSProductButton
|
|
191
|
+
image={exampleImage}
|
|
192
|
+
label="Al horno"
|
|
193
|
+
/>
|
|
194
|
+
<POSProductButton
|
|
195
|
+
image={exampleImage}
|
|
196
|
+
label="Frito"
|
|
197
|
+
/>
|
|
198
|
+
<POSProductButton
|
|
199
|
+
image={exampleImage}
|
|
200
|
+
label="Al vapor"
|
|
201
|
+
/>
|
|
202
|
+
<POSProductButton
|
|
203
|
+
image={exampleImage}
|
|
204
|
+
label="Asado"
|
|
205
|
+
/>
|
|
206
|
+
<POSProductButton
|
|
207
|
+
image={exampleImage}
|
|
208
|
+
label="Agotado"
|
|
209
|
+
disabled={true}
|
|
210
|
+
/>
|
|
211
|
+
</div>
|
|
212
|
+
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
213
|
+
Configuración típica de 3 columnas para pantallas de punto de venta
|
|
214
|
+
</p>
|
|
215
|
+
</div>
|
|
216
|
+
|
|
217
|
+
{/* Lista horizontal */}
|
|
218
|
+
<div>
|
|
219
|
+
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
220
|
+
Lista Horizontal (Categorías)
|
|
221
|
+
</h3>
|
|
222
|
+
<div className="flex gap-3 overflow-x-auto pb-2 max-w-2xl">
|
|
223
|
+
<POSProductButton
|
|
224
|
+
image={exampleImage}
|
|
225
|
+
label="Carnes"
|
|
226
|
+
active={true}
|
|
227
|
+
/>
|
|
228
|
+
<POSProductButton
|
|
229
|
+
image={exampleImage}
|
|
230
|
+
label="Pescados"
|
|
231
|
+
/>
|
|
232
|
+
<POSProductButton
|
|
233
|
+
image={exampleImage}
|
|
234
|
+
label="Vegetales"
|
|
235
|
+
/>
|
|
236
|
+
<POSProductButton
|
|
237
|
+
image={exampleImage}
|
|
238
|
+
label="Postres"
|
|
239
|
+
/>
|
|
240
|
+
</div>
|
|
241
|
+
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
242
|
+
Navegación horizontal para categorías de productos
|
|
243
|
+
</p>
|
|
244
|
+
</div>
|
|
245
|
+
|
|
246
|
+
{/* Con handlers */}
|
|
247
|
+
<div>
|
|
248
|
+
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
249
|
+
Con Handlers de Click
|
|
250
|
+
</h3>
|
|
251
|
+
<div className="flex gap-3">
|
|
252
|
+
<POSProductButton
|
|
253
|
+
image={exampleImage}
|
|
254
|
+
label="Click aquí"
|
|
255
|
+
onClick={() => alert('Producto seleccionado: A la parrilla')}
|
|
256
|
+
/>
|
|
257
|
+
</div>
|
|
258
|
+
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
259
|
+
Click en el botón para ver la acción
|
|
260
|
+
</p>
|
|
261
|
+
</div>
|
|
262
|
+
</div>
|
|
263
|
+
),
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
// ============================================
|
|
267
|
+
// 4. VARIACIONES DE CONTENIDO
|
|
268
|
+
// ============================================
|
|
269
|
+
export const VariacionesDeContenido: Story = {
|
|
270
|
+
args: {
|
|
271
|
+
image: exampleImage,
|
|
272
|
+
label: 'A la parrilla',
|
|
273
|
+
},
|
|
274
|
+
render: () => (
|
|
275
|
+
<div className="space-y-8 p-6">
|
|
276
|
+
{/* Labels cortos */}
|
|
277
|
+
<div>
|
|
278
|
+
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
279
|
+
Labels Cortos
|
|
280
|
+
</h3>
|
|
281
|
+
<div className="flex gap-3">
|
|
282
|
+
<POSProductButton
|
|
283
|
+
image={exampleImage}
|
|
284
|
+
label="Carne"
|
|
285
|
+
/>
|
|
286
|
+
<POSProductButton
|
|
287
|
+
image={exampleImage}
|
|
288
|
+
label="Pollo"
|
|
289
|
+
/>
|
|
290
|
+
<POSProductButton
|
|
291
|
+
image={exampleImage}
|
|
292
|
+
label="Pez"
|
|
293
|
+
/>
|
|
294
|
+
</div>
|
|
295
|
+
</div>
|
|
296
|
+
|
|
297
|
+
{/* Labels largos */}
|
|
298
|
+
<div>
|
|
299
|
+
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
300
|
+
Labels Largos
|
|
301
|
+
</h3>
|
|
302
|
+
<div className="flex gap-3">
|
|
303
|
+
<POSProductButton
|
|
304
|
+
image={exampleImage}
|
|
305
|
+
label="Parrillada de res con vegetales"
|
|
306
|
+
/>
|
|
307
|
+
<POSProductButton
|
|
308
|
+
image={exampleImage}
|
|
309
|
+
label="Pescado a la plancha con limón"
|
|
310
|
+
/>
|
|
311
|
+
</div>
|
|
312
|
+
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
313
|
+
Los labels largos se ajustan automáticamente
|
|
314
|
+
</p>
|
|
315
|
+
</div>
|
|
316
|
+
</div>
|
|
317
|
+
),
|
|
318
|
+
};
|