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,204 @@
|
|
|
1
|
+
import React, { forwardRef, cloneElement } from 'react';
|
|
2
|
+
import type { InputProps } from './Input.types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Input - Componente de campo de entrada del sistema de diseño Siesa
|
|
6
|
+
* Basado en especificaciones de Figma con Tailwind CSS
|
|
7
|
+
*
|
|
8
|
+
* Mejores prácticas implementadas:
|
|
9
|
+
* - Orden de modificadores: {responsive}:{dark}:{state}:{utility}
|
|
10
|
+
* - Dark mode con estrategia 'class' (darkMode: 'class')
|
|
11
|
+
* - Focus rings adaptativos para light y dark mode
|
|
12
|
+
* - Tokens de color consistentes con la documentación
|
|
13
|
+
* - Sombra base para inputs con focus
|
|
14
|
+
* - Estados hover, focus, disabled y error completos
|
|
15
|
+
* - Typography: Paragraph Regular para texto, Label Bold para labels
|
|
16
|
+
*
|
|
17
|
+
* Campo de entrada de texto con soporte para:
|
|
18
|
+
* - Estados: default, hover, focus, filled, disabled
|
|
19
|
+
* - Validación con mensajes de error
|
|
20
|
+
* - Iconos izquierdo y derecho
|
|
21
|
+
* - Label y helper text
|
|
22
|
+
* - Dark mode completo
|
|
23
|
+
* - Accesibilidad completa
|
|
24
|
+
*
|
|
25
|
+
* @see docs/colors.md - Sistema de colores
|
|
26
|
+
* @see docs/shadows.md - Sistema de sombras
|
|
27
|
+
* @see docs/typography.md - Sistema tipográfico (Paragraph, Label)
|
|
28
|
+
* @see docs/spacing.md - Sistema de espaciado
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```tsx
|
|
32
|
+
* <Input
|
|
33
|
+
* label="Email"
|
|
34
|
+
* placeholder="tu@email.com"
|
|
35
|
+
* leftIcon={<EnvelopeIcon />}
|
|
36
|
+
* helperText="Ingresa tu correo electrónico"
|
|
37
|
+
* />
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export const Input = forwardRef<HTMLInputElement, InputProps>(
|
|
41
|
+
(
|
|
42
|
+
{
|
|
43
|
+
label,
|
|
44
|
+
labelSecondary,
|
|
45
|
+
helperText,
|
|
46
|
+
error = false,
|
|
47
|
+
errorMessage,
|
|
48
|
+
leftIcon,
|
|
49
|
+
rightIcon,
|
|
50
|
+
fullWidth = false,
|
|
51
|
+
className = '',
|
|
52
|
+
disabled = false,
|
|
53
|
+
id,
|
|
54
|
+
...props
|
|
55
|
+
},
|
|
56
|
+
ref
|
|
57
|
+
) => {
|
|
58
|
+
// Generar ID único si no se proporciona
|
|
59
|
+
const inputId = id || `input-${Math.random().toString(36).substr(2, 9)}`;
|
|
60
|
+
|
|
61
|
+
// ===== CLASES BASE DEL INPUT =====
|
|
62
|
+
// Usando el sistema tipográfico Paragraph Regular (14px = text-sm)
|
|
63
|
+
// Border radius rounded-md (6px) consistente con Button
|
|
64
|
+
const baseInputClasses = `
|
|
65
|
+
w-full
|
|
66
|
+
px-3
|
|
67
|
+
py-1.5
|
|
68
|
+
text-sm
|
|
69
|
+
leading-6
|
|
70
|
+
font-normal
|
|
71
|
+
text-content-primary
|
|
72
|
+
bg-bg-primary
|
|
73
|
+
border
|
|
74
|
+
border-border-primary
|
|
75
|
+
rounded-md
|
|
76
|
+
outline-none
|
|
77
|
+
transition-all
|
|
78
|
+
duration-150
|
|
79
|
+
placeholder:text-content-tertiary
|
|
80
|
+
dark:bg-dark-bg-primary
|
|
81
|
+
dark:border-dark-border-primary
|
|
82
|
+
dark:text-dark-content-primary
|
|
83
|
+
dark:placeholder:text-dark-content-tertiary
|
|
84
|
+
`;
|
|
85
|
+
|
|
86
|
+
// ===== CLASES PARA ESTADOS INTERACTIVOS =====
|
|
87
|
+
// Orden de modificadores: {responsive}:{dark}:{state}:{utility}
|
|
88
|
+
// Focus rings adaptativos siguiendo el patrón de Button
|
|
89
|
+
const interactiveClasses = !disabled
|
|
90
|
+
? `
|
|
91
|
+
hover:border-primary-custom-600
|
|
92
|
+
focus:border-primary-custom-600
|
|
93
|
+
focus:ring-2
|
|
94
|
+
focus:ring-primary-custom-400
|
|
95
|
+
focus:ring-offset-2
|
|
96
|
+
dark:hover:border-dark-border-custom
|
|
97
|
+
dark:focus:border-dark-border-custom
|
|
98
|
+
dark:focus:ring-dark-border-custom
|
|
99
|
+
dark:focus:ring-offset-dark-bg-primary
|
|
100
|
+
`
|
|
101
|
+
: `
|
|
102
|
+
opacity-50
|
|
103
|
+
cursor-not-allowed
|
|
104
|
+
bg-bg-secondary
|
|
105
|
+
dark:bg-dark-bg-secondary
|
|
106
|
+
`;
|
|
107
|
+
|
|
108
|
+
// ===== CLASES PARA ESTADO DE ERROR =====
|
|
109
|
+
// Los colores de error son los mismos en light y dark mode
|
|
110
|
+
const errorClasses = error
|
|
111
|
+
? `
|
|
112
|
+
!border-error-border
|
|
113
|
+
focus:!ring-error-border/30
|
|
114
|
+
focus:!ring-offset-2
|
|
115
|
+
dark:!border-error-border
|
|
116
|
+
dark:focus:!ring-error-border/30
|
|
117
|
+
dark:focus:!ring-offset-dark-bg-primary
|
|
118
|
+
`
|
|
119
|
+
: '';
|
|
120
|
+
|
|
121
|
+
// ===== CLASES DEL CONTENEDOR =====
|
|
122
|
+
const containerClasses = fullWidth ? 'w-full' : 'w-[265px]';
|
|
123
|
+
|
|
124
|
+
// ===== RENDERIZAR ICONOS =====
|
|
125
|
+
// Clonar iconos con estilos apropiados y dark mode completo
|
|
126
|
+
const renderIcon = (icon: React.ReactElement | undefined) => {
|
|
127
|
+
if (!icon) return null;
|
|
128
|
+
const existingClassName = (icon.props as any).className || '';
|
|
129
|
+
return cloneElement(icon as React.ReactElement<any>, {
|
|
130
|
+
className: `w-4 h-4 text-content-tertiary dark:text-dark-content-tertiary ${existingClassName}`,
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
return (
|
|
135
|
+
<div className={`flex flex-col gap-2 ${containerClasses} ${className}`}>
|
|
136
|
+
{/* Label */}
|
|
137
|
+
{label && (
|
|
138
|
+
<label
|
|
139
|
+
htmlFor={inputId}
|
|
140
|
+
className="flex items-center w-full font-bold text-sm leading-5 text-content-primary dark:text-dark-content-primary"
|
|
141
|
+
>
|
|
142
|
+
<span className="flex-1">{label}</span>
|
|
143
|
+
{labelSecondary && (
|
|
144
|
+
<span className="text-xs leading-4 text-primary-custom-600 dark:text-primary-custom-600">
|
|
145
|
+
{labelSecondary}
|
|
146
|
+
</span>
|
|
147
|
+
)}
|
|
148
|
+
</label>
|
|
149
|
+
)}
|
|
150
|
+
|
|
151
|
+
{/* Input Container */}
|
|
152
|
+
<div className="relative flex items-center">
|
|
153
|
+
{/* Left Icon */}
|
|
154
|
+
{leftIcon && (
|
|
155
|
+
<div className="absolute left-3 pointer-events-none">
|
|
156
|
+
{renderIcon(leftIcon)}
|
|
157
|
+
</div>
|
|
158
|
+
)}
|
|
159
|
+
|
|
160
|
+
{/* Input Field */}
|
|
161
|
+
<input
|
|
162
|
+
ref={ref}
|
|
163
|
+
id={inputId}
|
|
164
|
+
disabled={disabled}
|
|
165
|
+
className={`
|
|
166
|
+
${baseInputClasses}
|
|
167
|
+
${interactiveClasses}
|
|
168
|
+
${errorClasses}
|
|
169
|
+
${leftIcon ? 'pl-9' : ''}
|
|
170
|
+
${rightIcon ? 'pr-9' : ''}
|
|
171
|
+
`.trim().replace(/\s+/g, ' ')}
|
|
172
|
+
{...props}
|
|
173
|
+
/>
|
|
174
|
+
|
|
175
|
+
{/* Right Icon */}
|
|
176
|
+
{rightIcon && (
|
|
177
|
+
<div className="absolute right-3 pointer-events-none">
|
|
178
|
+
{renderIcon(rightIcon)}
|
|
179
|
+
</div>
|
|
180
|
+
)}
|
|
181
|
+
</div>
|
|
182
|
+
|
|
183
|
+
{/* Helper Text or Error Message */}
|
|
184
|
+
{(helperText || errorMessage) && (
|
|
185
|
+
<p
|
|
186
|
+
className={`
|
|
187
|
+
text-xs
|
|
188
|
+
leading-5
|
|
189
|
+
${
|
|
190
|
+
error
|
|
191
|
+
? 'text-error-content dark:text-error-content'
|
|
192
|
+
: 'text-content-tertiary dark:text-dark-content-tertiary'
|
|
193
|
+
}
|
|
194
|
+
`.trim().replace(/\s+/g, ' ')}
|
|
195
|
+
>
|
|
196
|
+
{error && errorMessage ? errorMessage : helperText}
|
|
197
|
+
</p>
|
|
198
|
+
)}
|
|
199
|
+
</div>
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
);
|
|
203
|
+
|
|
204
|
+
Input.displayName = 'Input';
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { ReactElement, InputHTMLAttributes } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Estados visuales del Input
|
|
5
|
+
* @description Tipo de referencia para documentar los estados posibles del Input.
|
|
6
|
+
* Los estados se manejan automáticamente mediante props (disabled) y pseudo-clases CSS (:hover, :focus)
|
|
7
|
+
*/
|
|
8
|
+
export type InputState = 'default' | 'hover' | 'focus' | 'filled' | 'disabled';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Props del componente Input
|
|
12
|
+
*
|
|
13
|
+
* @see docs/colors.md - Sistema de colores
|
|
14
|
+
* @see docs/typography.md - Sistema tipográfico
|
|
15
|
+
* @see docs/spacing.md - Sistema de espaciado
|
|
16
|
+
* @see docs/shadows.md - Sistema de sombras
|
|
17
|
+
*/
|
|
18
|
+
export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
|
|
19
|
+
/**
|
|
20
|
+
* Etiqueta del campo de entrada
|
|
21
|
+
* @description Texto descriptivo que se muestra encima del input
|
|
22
|
+
* @example "Email", "Nombre completo", "Contraseña"
|
|
23
|
+
*/
|
|
24
|
+
label?: string;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Texto secundario junto al label (opcional)
|
|
28
|
+
* @description Se muestra alineado a la derecha del label, útil para indicar campos opcionales
|
|
29
|
+
* @example "Optional", "Opcional"
|
|
30
|
+
*/
|
|
31
|
+
labelSecondary?: string;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Texto de ayuda debajo del input
|
|
35
|
+
* @description Proporciona información adicional o instrucciones para el usuario
|
|
36
|
+
* @example "Ingresa tu correo electrónico", "Mínimo 8 caracteres"
|
|
37
|
+
*/
|
|
38
|
+
helperText?: string;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Indica si hay un error de validación
|
|
42
|
+
* @description Cambia el estilo del input para indicar error (borde rojo)
|
|
43
|
+
* @default false
|
|
44
|
+
*/
|
|
45
|
+
error?: boolean;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Mensaje de error a mostrar (reemplaza helperText cuando error=true)
|
|
49
|
+
* @description Se muestra en rojo debajo del input cuando hay un error
|
|
50
|
+
* @example "Este campo es requerido", "Formato de email inválido"
|
|
51
|
+
*/
|
|
52
|
+
errorMessage?: string;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Icono a mostrar a la izquierda del input
|
|
56
|
+
* @description Ayuda a identificar el tipo de campo visualmente
|
|
57
|
+
* @example <EnvelopeIcon />, <UserIcon />, <LockClosedIcon />
|
|
58
|
+
*/
|
|
59
|
+
leftIcon?: ReactElement;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Icono a mostrar a la derecha del input
|
|
63
|
+
* @description Útil para acciones como mostrar/ocultar contraseña o limpiar campo
|
|
64
|
+
* @example <EyeIcon />, <XMarkIcon />, <CheckIcon />
|
|
65
|
+
*/
|
|
66
|
+
rightIcon?: ReactElement;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Si el input ocupa todo el ancho del contenedor
|
|
70
|
+
* @description Por defecto usa w-[265px], con fullWidth usa w-full
|
|
71
|
+
* @default false
|
|
72
|
+
*/
|
|
73
|
+
fullWidth?: boolean;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Clases CSS adicionales para personalizar el componente
|
|
77
|
+
* @description Se aplican al contenedor principal del input
|
|
78
|
+
*/
|
|
79
|
+
className?: string;
|
|
80
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Icons para Input Component
|
|
3
|
+
* Basado en Heroicons Micro
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export const EnvelopeIcon = () => (
|
|
7
|
+
<svg
|
|
8
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
9
|
+
viewBox="0 0 16 16"
|
|
10
|
+
fill="currentColor"
|
|
11
|
+
className="w-4 h-4"
|
|
12
|
+
>
|
|
13
|
+
<path d="M2.5 3A1.5 1.5 0 0 0 1 4.5v.793c.026.009.051.02.076.032L7.674 8.51c.206.1.446.1.652 0l6.598-3.185A.755.755 0 0 1 15 5.293V4.5A1.5 1.5 0 0 0 13.5 3h-11Z" />
|
|
14
|
+
<path d="M15 6.954 8.978 9.86a2.25 2.25 0 0 1-1.956 0L1 6.954V11.5A1.5 1.5 0 0 0 2.5 13h11a1.5 1.5 0 0 0 1.5-1.5V6.954Z" />
|
|
15
|
+
</svg>
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
export const QuestionMarkCircleIcon = () => (
|
|
19
|
+
<svg
|
|
20
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
21
|
+
viewBox="0 0 16 16"
|
|
22
|
+
fill="currentColor"
|
|
23
|
+
className="w-4 h-4"
|
|
24
|
+
>
|
|
25
|
+
<path
|
|
26
|
+
fillRule="evenodd"
|
|
27
|
+
d="M15 8A7 7 0 1 1 1 8a7 7 0 0 1 14 0ZM6.75 6.5a1.25 1.25 0 1 1 2.5 0 .75.75 0 0 0 1.5 0 2.75 2.75 0 0 0-4.25-2.308.75.75 0 0 0 .75 1.298A1.25 1.25 0 0 1 6.75 6.5ZM8 10a.75.75 0 0 0-.75.75v.5a.75.75 0 0 0 1.5 0v-.5A.75.75 0 0 0 8 10Z"
|
|
28
|
+
clipRule="evenodd"
|
|
29
|
+
/>
|
|
30
|
+
</svg>
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
export const UserIcon = () => (
|
|
34
|
+
<svg
|
|
35
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
36
|
+
viewBox="0 0 16 16"
|
|
37
|
+
fill="currentColor"
|
|
38
|
+
className="w-4 h-4"
|
|
39
|
+
>
|
|
40
|
+
<path d="M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6ZM12.735 14c.618 0 1.093-.561.872-1.139a6.002 6.002 0 0 0-11.215 0c-.22.578.254 1.139.872 1.139h9.47Z" />
|
|
41
|
+
</svg>
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
export const LockClosedIcon = () => (
|
|
45
|
+
<svg
|
|
46
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
47
|
+
viewBox="0 0 16 16"
|
|
48
|
+
fill="currentColor"
|
|
49
|
+
className="w-4 h-4"
|
|
50
|
+
>
|
|
51
|
+
<path
|
|
52
|
+
fillRule="evenodd"
|
|
53
|
+
d="M8 1a3.5 3.5 0 0 0-3.5 3.5V7A1.5 1.5 0 0 0 3 8.5v5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5v-5A1.5 1.5 0 0 0 11.5 7V4.5A3.5 3.5 0 0 0 8 1Zm2 6V4.5a2 2 0 1 0-4 0V7h4Z"
|
|
54
|
+
clipRule="evenodd"
|
|
55
|
+
/>
|
|
56
|
+
</svg>
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
export const MagnifyingGlassIcon = () => (
|
|
60
|
+
<svg
|
|
61
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
62
|
+
viewBox="0 0 16 16"
|
|
63
|
+
fill="currentColor"
|
|
64
|
+
className="w-4 h-4"
|
|
65
|
+
>
|
|
66
|
+
<path
|
|
67
|
+
fillRule="evenodd"
|
|
68
|
+
d="M9.965 11.026a5 5 0 1 1 1.06-1.06l2.755 2.754a.75.75 0 1 1-1.06 1.06l-2.755-2.754ZM10.5 7a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0Z"
|
|
69
|
+
clipRule="evenodd"
|
|
70
|
+
/>
|
|
71
|
+
</svg>
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
export const EyeIcon = () => (
|
|
75
|
+
<svg
|
|
76
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
77
|
+
viewBox="0 0 16 16"
|
|
78
|
+
fill="currentColor"
|
|
79
|
+
className="w-4 h-4"
|
|
80
|
+
>
|
|
81
|
+
<path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z" />
|
|
82
|
+
<path
|
|
83
|
+
fillRule="evenodd"
|
|
84
|
+
d="M1.38 8.28a.87.87 0 0 1 0-.566 7.003 7.003 0 0 1 13.238.006.87.87 0 0 1 0 .566A7.003 7.003 0 0 1 1.379 8.28ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"
|
|
85
|
+
clipRule="evenodd"
|
|
86
|
+
/>
|
|
87
|
+
</svg>
|
|
88
|
+
);
|
|
89
|
+
|
|
90
|
+
export const EyeSlashIcon = () => (
|
|
91
|
+
<svg
|
|
92
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
93
|
+
viewBox="0 0 16 16"
|
|
94
|
+
fill="currentColor"
|
|
95
|
+
className="w-4 h-4"
|
|
96
|
+
>
|
|
97
|
+
<path
|
|
98
|
+
fillRule="evenodd"
|
|
99
|
+
d="M3.28 2.22a.75.75 0 0 0-1.06 1.06l10.5 10.5a.75.75 0 1 0 1.06-1.06l-1.322-1.323a7.012 7.012 0 0 0 2.16-3.11.87.87 0 0 0 0-.567A7.003 7.003 0 0 0 4.82 3.76l-1.54-1.54Zm3.196 3.195 1.135 1.136A1.502 1.502 0 0 1 9.45 8.389l1.136 1.135a3 3 0 0 0-4.109-4.109Z"
|
|
100
|
+
clipRule="evenodd"
|
|
101
|
+
/>
|
|
102
|
+
<path d="m7.812 10.994 1.816 1.816A7.003 7.003 0 0 1 1.38 8.28a.87.87 0 0 1 0-.566 6.985 6.985 0 0 1 1.113-2.039l2.513 2.513a3 3 0 0 0 2.806 2.806Z" />
|
|
103
|
+
</svg>
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
export const XMarkIcon = () => (
|
|
107
|
+
<svg
|
|
108
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
109
|
+
viewBox="0 0 16 16"
|
|
110
|
+
fill="currentColor"
|
|
111
|
+
className="w-4 h-4"
|
|
112
|
+
>
|
|
113
|
+
<path d="M5.28 4.22a.75.75 0 0 0-1.06 1.06L6.94 8l-2.72 2.72a.75.75 0 1 0 1.06 1.06L8 9.06l2.72 2.72a.75.75 0 1 0 1.06-1.06L9.06 8l2.72-2.72a.75.75 0 0 0-1.06-1.06L8 6.94 5.28 4.22Z" />
|
|
114
|
+
</svg>
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
export const CheckIcon = () => (
|
|
118
|
+
<svg
|
|
119
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
120
|
+
viewBox="0 0 16 16"
|
|
121
|
+
fill="currentColor"
|
|
122
|
+
className="w-4 h-4"
|
|
123
|
+
>
|
|
124
|
+
<path
|
|
125
|
+
fillRule="evenodd"
|
|
126
|
+
d="M12.416 3.376a.75.75 0 0 1 .208 1.04l-5 7.5a.75.75 0 0 1-1.154.114l-3-3a.75.75 0 0 1 1.06-1.06l2.353 2.353 4.493-6.74a.75.75 0 0 1 1.04-.207Z"
|
|
127
|
+
clipRule="evenodd"
|
|
128
|
+
/>
|
|
129
|
+
</svg>
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
export const ExclamationCircleIcon = () => (
|
|
133
|
+
<svg
|
|
134
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
135
|
+
viewBox="0 0 16 16"
|
|
136
|
+
fill="currentColor"
|
|
137
|
+
className="w-4 h-4"
|
|
138
|
+
>
|
|
139
|
+
<path
|
|
140
|
+
fillRule="evenodd"
|
|
141
|
+
d="M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14ZM8 4a.75.75 0 0 1 .75.75v3a.75.75 0 0 1-1.5 0v-3A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"
|
|
142
|
+
clipRule="evenodd"
|
|
143
|
+
/>
|
|
144
|
+
</svg>
|
|
145
|
+
);
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export { Input } from './Input';
|
|
2
|
-
export type { InputProps, InputState } from './Input.types';
|
|
3
|
-
//# sourceMappingURL=index.d.ts.map
|
|
1
|
+
export { Input } from './Input';
|
|
2
|
+
export type { InputProps, InputState } from './Input.types';
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { LoginView } from './LoginView';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'Siesa UI Kit/LoginView',
|
|
6
|
+
component: LoginView,
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: 'fullscreen',
|
|
9
|
+
docs: {
|
|
10
|
+
description: {
|
|
11
|
+
component: 'Vista completa de inicio de sesión del sistema Siesa.',
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
tags: ['autodocs'],
|
|
16
|
+
argTypes: {
|
|
17
|
+
onSubmit: {
|
|
18
|
+
action: 'submit',
|
|
19
|
+
description: 'Handler cuando se envía el formulario con (email, password)',
|
|
20
|
+
},
|
|
21
|
+
onForgotPassword: {
|
|
22
|
+
action: 'forgot-password',
|
|
23
|
+
description: 'Handler cuando se hace click en "Olvidé mi Contraseña"',
|
|
24
|
+
},
|
|
25
|
+
onSignUp: {
|
|
26
|
+
action: 'sign-up',
|
|
27
|
+
description: 'Handler cuando se hace click en "¿No tienes una cuenta?"',
|
|
28
|
+
},
|
|
29
|
+
isLoading: {
|
|
30
|
+
control: 'boolean',
|
|
31
|
+
description: 'Si el formulario está en estado de carga',
|
|
32
|
+
},
|
|
33
|
+
errorMessage: {
|
|
34
|
+
control: 'text',
|
|
35
|
+
description: 'Mensaje de error general a mostrar',
|
|
36
|
+
},
|
|
37
|
+
showBackground: {
|
|
38
|
+
control: 'boolean',
|
|
39
|
+
description: 'Si se muestra el fondo decorativo con imagen',
|
|
40
|
+
},
|
|
41
|
+
variant: {
|
|
42
|
+
control: 'select',
|
|
43
|
+
options: ['responsive', 'mobile', 'desktop'],
|
|
44
|
+
description: 'Variante de visualización: responsive (adapta al viewport), mobile (siempre mobile), desktop (siempre desktop)',
|
|
45
|
+
defaultValue: 'responsive',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
} satisfies Meta<typeof LoginView>;
|
|
49
|
+
|
|
50
|
+
export default meta;
|
|
51
|
+
type Story = StoryObj<typeof meta>;
|
|
52
|
+
|
|
53
|
+
// ============================================
|
|
54
|
+
// 1. DESKTOP
|
|
55
|
+
// ============================================
|
|
56
|
+
export const Desktop: Story = {
|
|
57
|
+
render: () => (
|
|
58
|
+
<div className="min-h-screen w-full">
|
|
59
|
+
<LoginView
|
|
60
|
+
onSubmit={(email, password) => {
|
|
61
|
+
console.log('Login:', { email, password });
|
|
62
|
+
alert(`Login con:\nEmail: ${email}\nPassword: ${password}`);
|
|
63
|
+
}}
|
|
64
|
+
onForgotPassword={() => {
|
|
65
|
+
console.log('Forgot password clicked');
|
|
66
|
+
alert('Redirigiendo a recuperación de contraseña...');
|
|
67
|
+
}}
|
|
68
|
+
onSignUp={() => {
|
|
69
|
+
console.log('Sign up clicked');
|
|
70
|
+
alert('Redirigiendo a registro...');
|
|
71
|
+
}}
|
|
72
|
+
/>
|
|
73
|
+
</div>
|
|
74
|
+
),
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
// ============================================
|
|
78
|
+
// 2. CON ESTADO DE CARGA
|
|
79
|
+
// ============================================
|
|
80
|
+
export const Loading: Story = {
|
|
81
|
+
render: () => (
|
|
82
|
+
<div className="min-h-screen w-full">
|
|
83
|
+
<LoginView
|
|
84
|
+
isLoading={true}
|
|
85
|
+
onSubmit={(email, password) => {
|
|
86
|
+
console.log('Login:', { email, password });
|
|
87
|
+
}}
|
|
88
|
+
onForgotPassword={() => {
|
|
89
|
+
console.log('Forgot password clicked');
|
|
90
|
+
}}
|
|
91
|
+
onSignUp={() => {
|
|
92
|
+
console.log('Sign up clicked');
|
|
93
|
+
}}
|
|
94
|
+
/>
|
|
95
|
+
</div>
|
|
96
|
+
),
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
// ============================================
|
|
100
|
+
// 3. CON MENSAJE DE ERROR
|
|
101
|
+
// ============================================
|
|
102
|
+
export const WithError: Story = {
|
|
103
|
+
render: () => (
|
|
104
|
+
<div className="min-h-screen w-full">
|
|
105
|
+
<LoginView
|
|
106
|
+
errorMessage="Credenciales incorrectas. Por favor verifica tu email y contraseña."
|
|
107
|
+
onSubmit={(email, password) => {
|
|
108
|
+
console.log('Login:', { email, password });
|
|
109
|
+
alert(`Login con:\nEmail: ${email}\nPassword: ${password}`);
|
|
110
|
+
}}
|
|
111
|
+
onForgotPassword={() => {
|
|
112
|
+
console.log('Forgot password clicked');
|
|
113
|
+
alert('Redirigiendo a recuperación de contraseña...');
|
|
114
|
+
}}
|
|
115
|
+
onSignUp={() => {
|
|
116
|
+
console.log('Sign up clicked');
|
|
117
|
+
alert('Redirigiendo a registro...');
|
|
118
|
+
}}
|
|
119
|
+
/>
|
|
120
|
+
</div>
|
|
121
|
+
),
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
// ============================================
|
|
125
|
+
// 4. SIN FONDO DECORATIVO
|
|
126
|
+
// ============================================
|
|
127
|
+
export const WithoutBackground: Story = {
|
|
128
|
+
render: () => (
|
|
129
|
+
<div className="min-h-screen w-full bg-gray-100 dark:bg-gray-900">
|
|
130
|
+
<LoginView
|
|
131
|
+
showBackground={false}
|
|
132
|
+
onSubmit={(email, password) => {
|
|
133
|
+
console.log('Login:', { email, password });
|
|
134
|
+
alert(`Login con:\nEmail: ${email}\nPassword: ${password}`);
|
|
135
|
+
}}
|
|
136
|
+
onForgotPassword={() => {
|
|
137
|
+
console.log('Forgot password clicked');
|
|
138
|
+
alert('Redirigiendo a recuperación de contraseña...');
|
|
139
|
+
}}
|
|
140
|
+
onSignUp={() => {
|
|
141
|
+
console.log('Sign up clicked');
|
|
142
|
+
alert('Redirigiendo a registro...');
|
|
143
|
+
}}
|
|
144
|
+
/>
|
|
145
|
+
</div>
|
|
146
|
+
),
|
|
147
|
+
};
|
|
148
|
+
|