siesa-ui-kit 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -28
- package/claude/settings.local.json +7 -61
- package/dist/ButtonTest.d.ts +6 -0
- package/dist/ButtonTest.d.ts.map +1 -0
- package/dist/components/Alert/Alert.d.ts +23 -0
- package/dist/components/Alert/Alert.d.ts.map +1 -0
- package/dist/components/Alert/Alert.types.d.ts +46 -0
- package/dist/components/Alert/Alert.types.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.d.ts +41 -0
- package/dist/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.types.d.ts +46 -0
- package/dist/components/Avatar/Avatar.types.d.ts.map +1 -0
- package/dist/components/Badge/Badge.d.ts +42 -0
- package/dist/components/Badge/Badge.d.ts.map +1 -0
- package/dist/components/Badge/Badge.types.d.ts +32 -0
- package/dist/components/Badge/Badge.types.d.ts.map +1 -0
- package/dist/components/Button/Button.d.ts +84 -0
- package/dist/components/Button/Button.d.ts.map +1 -0
- package/dist/components/Button/Button.types.d.ts +162 -0
- package/dist/components/Button/Button.types.d.ts.map +1 -0
- package/dist/components/Button/icons.d.ts +26 -0
- package/dist/components/Button/icons.d.ts.map +1 -0
- package/dist/components/Button/index.d.ts +4 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +31 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts +53 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts.map +1 -0
- package/dist/components/DescriptionList/DescriptionList.d.ts +38 -0
- package/dist/components/DescriptionList/DescriptionList.d.ts.map +1 -0
- package/dist/components/DescriptionList/DescriptionList.types.d.ts +27 -0
- package/dist/components/DescriptionList/DescriptionList.types.d.ts.map +1 -0
- package/dist/components/Divider/Divider.d.ts +33 -0
- package/dist/components/Divider/Divider.d.ts.map +1 -0
- package/dist/components/Divider/Divider.types.d.ts +22 -0
- package/dist/components/Divider/Divider.types.d.ts.map +1 -0
- package/dist/components/Dropdown/Dropdown.d.ts +66 -0
- package/dist/components/Dropdown/Dropdown.d.ts.map +1 -0
- package/dist/components/Dropdown/Dropdown.types.d.ts +124 -0
- package/dist/components/Dropdown/Dropdown.types.d.ts.map +1 -0
- package/dist/components/Dropdown/icons.d.ts +10 -0
- package/dist/components/Dropdown/icons.d.ts.map +1 -0
- package/dist/components/Dropdown/index.d.ts +4 -0
- package/dist/components/Dropdown/index.d.ts.map +1 -0
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts +101 -0
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts.map +1 -0
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts +95 -0
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts.map +1 -0
- package/dist/components/DropdownItemCollapsible/icons.d.ts +19 -0
- package/dist/components/DropdownItemCollapsible/icons.d.ts.map +1 -0
- package/dist/components/DropdownItemCollapsible/index.d.ts +9 -0
- package/dist/components/DropdownItemCollapsible/index.d.ts.map +1 -0
- package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts +75 -0
- package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts.map +1 -0
- package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts +85 -0
- package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts.map +1 -0
- package/dist/components/DropdownItemHeading/icons.d.ts +48 -0
- package/dist/components/DropdownItemHeading/icons.d.ts.map +1 -0
- package/dist/components/DropdownItemHeading/index.d.ts +4 -0
- package/dist/components/DropdownItemHeading/index.d.ts.map +1 -0
- package/dist/components/Input/Input.d.ts +40 -0
- package/dist/components/Input/Input.d.ts.map +1 -0
- package/dist/components/Input/Input.types.d.ts +71 -0
- package/dist/components/Input/Input.types.d.ts.map +1 -0
- package/dist/components/Input/icons.d.ts +15 -0
- package/dist/components/Input/icons.d.ts.map +1 -0
- package/dist/components/Input/index.d.ts +3 -0
- package/dist/components/Input/index.d.ts.map +1 -0
- package/dist/components/LoginView/LoginView.d.ts +36 -0
- package/dist/components/LoginView/LoginView.d.ts.map +1 -0
- package/dist/components/LoginView/LoginView.types.d.ts +46 -0
- package/dist/components/LoginView/LoginView.types.d.ts.map +1 -0
- package/dist/components/LoginView/icons.d.ts +18 -0
- package/dist/components/LoginView/icons.d.ts.map +1 -0
- package/dist/components/LoginView/index.d.ts +4 -0
- package/dist/components/LoginView/index.d.ts.map +1 -0
- package/dist/components/Navbar/Navbar.d.ts +63 -0
- package/dist/components/Navbar/Navbar.d.ts.map +1 -0
- package/dist/components/Navbar/Navbar.types.d.ts +194 -0
- package/dist/components/Navbar/Navbar.types.d.ts.map +1 -0
- package/dist/components/Navbar/icons.d.ts +12 -0
- package/dist/components/Navbar/icons.d.ts.map +1 -0
- package/dist/components/Navbar/index.d.ts +4 -0
- package/dist/components/Navbar/index.d.ts.map +1 -0
- package/dist/components/NavigationBar/NavigationBar.d.ts +75 -0
- package/dist/components/NavigationBar/NavigationBar.d.ts.map +1 -0
- package/dist/components/NavigationBar/NavigationBar.types.d.ts +63 -0
- package/dist/components/NavigationBar/NavigationBar.types.d.ts.map +1 -0
- package/dist/components/NavigationBar/index.d.ts +3 -0
- package/dist/components/NavigationBar/index.d.ts.map +1 -0
- package/dist/components/NavigationRail/NavigationRail.d.ts +7 -0
- package/dist/components/NavigationRail/NavigationRail.d.ts.map +1 -0
- package/dist/components/NavigationRail/NavigationRail.types.d.ts +92 -0
- package/dist/components/NavigationRail/NavigationRail.types.d.ts.map +1 -0
- package/dist/components/NavigationRail/index.d.ts +3 -0
- package/dist/components/NavigationRail/index.d.ts.map +1 -0
- package/dist/components/NavigationRailItem/NavigationRailItem.d.ts +90 -0
- package/dist/components/NavigationRailItem/NavigationRailItem.d.ts.map +1 -0
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts +155 -0
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts.map +1 -0
- package/dist/components/NavigationRailItem/index.d.ts +3 -0
- package/dist/components/NavigationRailItem/index.d.ts.map +1 -0
- package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts +124 -0
- package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts.map +1 -0
- package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts +154 -0
- package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts.map +1 -0
- package/dist/components/NavigationRailPanel/index.d.ts +3 -0
- package/dist/components/NavigationRailPanel/index.d.ts.map +1 -0
- package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts +99 -0
- package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts.map +1 -0
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts +111 -0
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +1 -0
- package/dist/components/NavigationRailTypes/icons.d.ts +58 -0
- package/dist/components/NavigationRailTypes/icons.d.ts.map +1 -0
- package/dist/components/NavigationRailTypes/index.d.ts +4 -0
- package/dist/components/NavigationRailTypes/index.d.ts.map +1 -0
- package/dist/components/Notification/Notification.d.ts +52 -0
- package/dist/components/Notification/Notification.d.ts.map +1 -0
- package/dist/components/Notification/Notification.types.d.ts +138 -0
- package/dist/components/Notification/Notification.types.d.ts.map +1 -0
- package/dist/components/Notification/index.d.ts +3 -0
- package/dist/components/Notification/index.d.ts.map +1 -0
- package/dist/components/POSConvention/POSConvention.d.ts +55 -0
- package/dist/components/POSConvention/POSConvention.d.ts.map +1 -0
- package/dist/components/POSConvention/POSConvention.types.d.ts +37 -0
- package/dist/components/POSConvention/POSConvention.types.d.ts.map +1 -0
- package/dist/components/POSConvention/icons.d.ts +21 -0
- package/dist/components/POSConvention/icons.d.ts.map +1 -0
- package/dist/components/POSConvention/index.d.ts +4 -0
- package/dist/components/POSConvention/index.d.ts.map +1 -0
- package/dist/components/POSLocationButton/POSLocationButton.d.ts +73 -0
- package/dist/components/POSLocationButton/POSLocationButton.d.ts.map +1 -0
- package/dist/components/POSLocationButton/POSLocationButton.types.d.ts +75 -0
- package/dist/components/POSLocationButton/POSLocationButton.types.d.ts.map +1 -0
- package/dist/components/POSLocationButton/icons.d.ts +37 -0
- package/dist/components/POSLocationButton/icons.d.ts.map +1 -0
- package/dist/components/POSLocationButton/index.d.ts +4 -0
- package/dist/components/POSLocationButton/index.d.ts.map +1 -0
- package/dist/components/POSNumberButton/POSNumberButton.d.ts +61 -0
- package/dist/components/POSNumberButton/POSNumberButton.d.ts.map +1 -0
- package/dist/components/POSNumberButton/POSNumberButton.types.d.ts +43 -0
- package/dist/components/POSNumberButton/POSNumberButton.types.d.ts.map +1 -0
- package/dist/components/POSNumberButton/index.d.ts +3 -0
- package/dist/components/POSNumberButton/index.d.ts.map +1 -0
- package/dist/components/POSProductButton/POSProductButton.d.ts +59 -0
- package/dist/components/POSProductButton/POSProductButton.d.ts.map +1 -0
- package/dist/components/POSProductButton/POSProductButton.types.d.ts +40 -0
- package/dist/components/POSProductButton/POSProductButton.types.d.ts.map +1 -0
- package/dist/components/POSProductButton/index.d.ts +3 -0
- package/dist/components/POSProductButton/index.d.ts.map +1 -0
- package/dist/components/POSProductCard/POSProductCard.d.ts +68 -0
- package/dist/components/POSProductCard/POSProductCard.d.ts.map +1 -0
- package/dist/components/POSProductCard/POSProductCard.types.d.ts +67 -0
- package/dist/components/POSProductCard/POSProductCard.types.d.ts.map +1 -0
- package/dist/components/POSProductCard/icons.d.ts +10 -0
- package/dist/components/POSProductCard/icons.d.ts.map +1 -0
- package/dist/components/POSProductCard/index.d.ts +3 -0
- package/dist/components/POSProductCard/index.d.ts.map +1 -0
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts +57 -0
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts.map +1 -0
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts +85 -0
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts.map +1 -0
- package/dist/components/POSProductSidebarItems/icons.d.ts +9 -0
- package/dist/components/POSProductSidebarItems/icons.d.ts.map +1 -0
- package/dist/components/POSProductSidebarItems/index.d.ts +4 -0
- package/dist/components/POSProductSidebarItems/index.d.ts.map +1 -0
- package/dist/components/POSTable/POSTable.d.ts +75 -0
- package/dist/components/POSTable/POSTable.d.ts.map +1 -0
- package/dist/components/POSTable/POSTable.types.d.ts +71 -0
- package/dist/components/POSTable/POSTable.types.d.ts.map +1 -0
- package/dist/components/POSTable/index.d.ts +3 -0
- package/dist/components/POSTable/index.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.d.ts +29 -0
- package/dist/components/Pagination/Pagination.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.types.d.ts +79 -0
- package/dist/components/Pagination/Pagination.types.d.ts.map +1 -0
- package/dist/components/Pagination/icons.d.ts +18 -0
- package/dist/components/Pagination/icons.d.ts.map +1 -0
- package/dist/components/Pagination/index.d.ts +4 -0
- package/dist/components/Pagination/index.d.ts.map +1 -0
- package/dist/components/Quantity/Quantity.d.ts +38 -0
- package/dist/components/Quantity/Quantity.d.ts.map +1 -0
- package/dist/components/Quantity/Quantity.types.d.ts +59 -0
- package/dist/components/Quantity/Quantity.types.d.ts.map +1 -0
- package/dist/components/Radio/Radio.d.ts +45 -0
- package/dist/components/Radio/Radio.d.ts.map +1 -0
- package/dist/components/Radio/Radio.types.d.ts +115 -0
- package/dist/components/Radio/Radio.types.d.ts.map +1 -0
- package/dist/components/Select/Select.d.ts +37 -0
- package/dist/components/Select/Select.d.ts.map +1 -0
- package/dist/components/Select/Select.types.d.ts +124 -0
- package/dist/components/Select/Select.types.d.ts.map +1 -0
- package/dist/components/Select/icons.d.ts +16 -0
- package/dist/components/Select/icons.d.ts.map +1 -0
- package/dist/components/Select/index.d.ts +4 -0
- package/dist/components/Select/index.d.ts.map +1 -0
- package/dist/components/SignUpView/SignUpView.d.ts +38 -0
- package/dist/components/SignUpView/SignUpView.d.ts.map +1 -0
- package/dist/components/SignUpView/SignUpView.types.d.ts +51 -0
- package/dist/components/SignUpView/SignUpView.types.d.ts.map +1 -0
- package/dist/components/SignUpView/icons.d.ts +18 -0
- package/dist/components/SignUpView/icons.d.ts.map +1 -0
- package/dist/components/SignUpView/index.d.ts +4 -0
- package/dist/components/SignUpView/index.d.ts.map +1 -0
- package/dist/components/Switch/Switch.d.ts +46 -0
- package/dist/components/Switch/Switch.d.ts.map +1 -0
- package/dist/components/Switch/Switch.types.d.ts +58 -0
- package/dist/components/Switch/Switch.types.d.ts.map +1 -0
- package/dist/components/Table/Table.d.ts +64 -0
- package/dist/components/Table/Table.d.ts.map +1 -0
- package/dist/components/Table/Table.types.d.ts +173 -0
- package/dist/components/Table/Table.types.d.ts.map +1 -0
- package/dist/components/Table/index.d.ts +3 -0
- package/dist/components/Table/index.d.ts.map +1 -0
- package/dist/components/Tabs/Tabs.d.ts +76 -0
- package/dist/components/Tabs/Tabs.d.ts.map +1 -0
- package/dist/components/Tabs/Tabs.types.d.ts +107 -0
- package/dist/components/Tabs/Tabs.types.d.ts.map +1 -0
- package/dist/components/Tabs/icons.d.ts +45 -0
- package/dist/components/Tabs/icons.d.ts.map +1 -0
- package/dist/components/Tabs/index.d.ts +4 -0
- package/dist/components/Tabs/index.d.ts.map +1 -0
- package/dist/components/Textarea/Textarea.d.ts +38 -0
- package/dist/components/Textarea/Textarea.d.ts.map +1 -0
- package/dist/components/Textarea/Textarea.types.d.ts +46 -0
- package/dist/components/Textarea/Textarea.types.d.ts.map +1 -0
- package/dist/context/ThemeContext.d.ts +46 -0
- package/dist/context/ThemeContext.d.ts.map +1 -0
- package/dist/context/index.d.ts +2 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/siesa-ui-kit.cjs +1260 -0
- package/dist/siesa-ui-kit.cjs.map +1 -0
- package/dist/siesa-ui-kit.mjs +4496 -0
- package/dist/siesa-ui-kit.mjs.map +1 -0
- package/dist/views/ListView/ListView.d.ts +47 -0
- package/dist/views/ListView/ListView.d.ts.map +1 -0
- package/dist/views/ListView/ListView.types.d.ts +177 -0
- package/dist/views/ListView/ListView.types.d.ts.map +1 -0
- package/dist/views/ListView/icons.d.ts +60 -0
- package/dist/views/ListView/icons.d.ts.map +1 -0
- package/dist/views/ListView/index.d.ts +3 -0
- package/dist/views/ListView/index.d.ts.map +1 -0
- package/dist/views/LoginView/LoginView.d.ts +36 -0
- package/dist/views/LoginView/LoginView.d.ts.map +1 -0
- package/dist/views/LoginView/LoginView.types.d.ts +46 -0
- package/dist/views/LoginView/LoginView.types.d.ts.map +1 -0
- package/dist/views/LoginView/icons.d.ts +18 -0
- package/dist/views/LoginView/icons.d.ts.map +1 -0
- package/dist/views/LoginView/index.d.ts +4 -0
- package/dist/views/LoginView/index.d.ts.map +1 -0
- package/dist/views/ProductsView/ProductsView.d.ts +56 -0
- package/dist/views/ProductsView/ProductsView.d.ts.map +1 -0
- package/dist/views/ProductsView/ProductsView.types.d.ts +184 -0
- package/dist/views/ProductsView/ProductsView.types.d.ts.map +1 -0
- package/dist/views/ProductsView/icons.d.ts +12 -0
- package/dist/views/ProductsView/icons.d.ts.map +1 -0
- package/dist/views/ProductsView/index.d.ts +3 -0
- package/dist/views/ProductsView/index.d.ts.map +1 -0
- package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts +34 -0
- package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts.map +1 -0
- package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts +50 -0
- package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts.map +1 -0
- package/dist/views/RecoverPasswordView/icons.d.ts +9 -0
- package/dist/views/RecoverPasswordView/icons.d.ts.map +1 -0
- package/dist/views/RecoverPasswordView/index.d.ts +3 -0
- package/dist/views/RecoverPasswordView/index.d.ts.map +1 -0
- package/dist/views/SignUpView/SignUpView.d.ts +38 -0
- package/dist/views/SignUpView/SignUpView.d.ts.map +1 -0
- package/dist/views/SignUpView/SignUpView.types.d.ts +51 -0
- package/dist/views/SignUpView/SignUpView.types.d.ts.map +1 -0
- package/dist/views/SignUpView/icons.d.ts +18 -0
- package/dist/views/SignUpView/icons.d.ts.map +1 -0
- package/dist/views/SignUpView/index.d.ts +4 -0
- package/dist/views/SignUpView/index.d.ts.map +1 -0
- package/dist/views/TableLayoutView/TableLayoutView.d.ts +46 -0
- package/dist/views/TableLayoutView/TableLayoutView.d.ts.map +1 -0
- package/dist/views/TableLayoutView/TableLayoutView.types.d.ts +170 -0
- package/dist/views/TableLayoutView/TableLayoutView.types.d.ts.map +1 -0
- package/dist/views/TableLayoutView/icons.d.ts +27 -0
- package/dist/views/TableLayoutView/icons.d.ts.map +1 -0
- package/dist/views/TableLayoutView/index.d.ts +3 -0
- package/dist/views/TableLayoutView/index.d.ts.map +1 -0
- package/docs/border-radius.md +1261 -1261
- package/docs/colors.md +832 -832
- package/docs/dark-mode-guide.md +1426 -1426
- package/docs/filters.md +1243 -1243
- package/docs/icons.md +1283 -1283
- package/docs/shadows.md +1377 -1377
- package/docs/spacing.md +1684 -1684
- package/docs/typography.md +1268 -1268
- package/package.json +33 -6
- package/postcss.config.cjs +6 -6
- package/src/App.css +42 -42
- package/src/App.tsx +8 -8
- package/src/ButtonTest.tsx +147 -147
- package/src/assets/fonts/README.md +261 -261
- package/src/components/Alert/Alert.stories.tsx +332 -332
- package/src/components/Alert/Alert.tsx +106 -106
- package/src/components/Alert/Alert.types.ts +54 -54
- package/src/components/Avatar/Avatar.tsx +143 -143
- package/src/components/Avatar/Avatar.types.ts +53 -53
- package/src/components/Badge/Badge.stories.tsx +339 -339
- package/src/components/Badge/Badge.tsx +278 -278
- package/src/components/Badge/Badge.types.ts +58 -58
- package/src/components/Button/icons.tsx +87 -87
- package/src/components/Button/index.ts +3 -3
- package/src/components/Checkbox/Checkbox.stories.tsx +453 -453
- package/src/components/Checkbox/Checkbox.tsx +208 -208
- package/src/components/Checkbox/Checkbox.types.ts +61 -61
- package/src/components/DescriptionList/DescriptionList.tsx +96 -96
- package/src/components/DescriptionList/DescriptionList.types.ts +29 -29
- package/src/components/Divider/Divider.tsx +80 -80
- package/src/components/Divider/Divider.types.ts +24 -24
- package/src/components/Dropdown/Dropdown.stories.tsx +552 -552
- package/src/components/Dropdown/Dropdown.tsx +422 -422
- package/src/components/Dropdown/Dropdown.types.ts +146 -146
- package/src/components/Dropdown/README.md +266 -266
- package/src/components/Dropdown/icons.tsx +72 -72
- package/src/components/Dropdown/index.ts +8 -8
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +317 -0
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +287 -0
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +111 -0
- package/src/components/DropdownItemCollapsible/README.md +264 -0
- package/src/components/DropdownItemCollapsible/icons.tsx +57 -0
- package/src/components/DropdownItemCollapsible/index.ts +12 -0
- package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +386 -0
- package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +216 -0
- package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +93 -0
- package/src/components/DropdownItemHeading/README.md +573 -0
- package/src/components/DropdownItemHeading/icons.tsx +125 -0
- package/src/components/DropdownItemHeading/index.ts +3 -0
- package/src/components/Input/Input.tsx +204 -204
- package/src/components/Input/Input.types.ts +80 -80
- package/src/components/Input/icons.tsx +145 -145
- package/src/components/Input/index.ts +2 -2
- package/src/components/Navbar/icons.tsx +102 -102
- package/src/components/NavigationBar/NavigationBar.stories.tsx +406 -406
- package/src/components/NavigationBar/NavigationBar.tsx +246 -246
- package/src/components/NavigationBar/NavigationBar.types.ts +74 -74
- package/src/components/NavigationBar/README.md +469 -469
- package/src/components/NavigationBar/index.ts +2 -2
- package/src/components/NavigationRail/NavigationRail.stories.tsx +417 -417
- package/src/components/NavigationRail/NavigationRail.tsx +418 -418
- package/src/components/NavigationRail/NavigationRail.types.ts +109 -109
- package/src/components/NavigationRail/README.md +224 -224
- package/src/components/NavigationRail/index.ts +2 -2
- package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +667 -0
- package/src/components/NavigationRailItem/NavigationRailItem.tsx +313 -0
- package/src/components/NavigationRailItem/NavigationRailItem.types.ts +167 -0
- package/src/components/NavigationRailItem/README.md +476 -0
- package/src/components/NavigationRailItem/index.ts +2 -0
- package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +462 -0
- package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +332 -0
- package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +178 -0
- package/src/components/NavigationRailPanel/README.md +461 -0
- package/src/components/NavigationRailPanel/index.ts +6 -0
- package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +528 -0
- package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +378 -0
- package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +130 -0
- package/src/components/NavigationRailTypes/README.md +573 -0
- package/src/components/NavigationRailTypes/icons.tsx +141 -0
- package/src/components/NavigationRailTypes/index.ts +7 -0
- package/src/components/Notification/index.ts +3 -3
- package/src/components/POSProductButton/POSProductButton.tsx +152 -152
- package/src/components/POSProductButton/POSProductButton.types.ts +46 -46
- package/src/components/POSProductButton/README.md +269 -269
- package/src/components/POSProductButton/index.ts +2 -2
- package/src/components/POSTable/POSTable.types.ts +83 -83
- package/src/components/POSTable/index.ts +7 -7
- package/src/components/Pagination/Pagination.stories.tsx +555 -555
- package/src/components/Pagination/Pagination.tsx +286 -286
- package/src/components/Pagination/Pagination.types.ts +93 -93
- package/src/components/Pagination/README.md +298 -298
- package/src/components/Pagination/icons.tsx +47 -47
- package/src/components/Pagination/index.ts +3 -3
- package/src/components/Quantity/Quantity.tsx +289 -289
- package/src/components/Quantity/Quantity.types.ts +70 -70
- package/src/components/Radio/Radio.tsx +170 -170
- package/src/components/Radio/Radio.types.ts +122 -122
- package/src/components/Select/README.md +299 -299
- package/src/components/Select/Select.stories.tsx +673 -673
- package/src/components/Select/Select.types.ts +148 -148
- package/src/components/Select/icons.tsx +50 -50
- package/src/components/Select/index.ts +3 -3
- package/src/components/Table/README.md +369 -369
- package/src/components/Table/Table.tsx +688 -688
- package/src/components/Table/Table.types.ts +204 -204
- package/src/components/Table/index.ts +9 -9
- package/src/components/Textarea/Textarea.tsx +188 -188
- package/src/components/Textarea/Textarea.types.ts +54 -54
- package/src/context/ThemeContext.tsx +99 -99
- package/src/context/index.ts +1 -1
- package/src/index.css +29 -29
- package/src/index.ts +63 -0
- package/src/main.tsx +10 -10
- package/src/views/ListView/ListView.stories.tsx +329 -0
- package/src/views/ListView/ListView.tsx +570 -0
- package/src/views/ListView/ListView.types.ts +211 -0
- package/src/views/ListView/icons.tsx +282 -0
- package/src/views/ListView/index.ts +11 -0
- package/src/views/LoginView/LoginView.stories.tsx +148 -0
- package/src/views/LoginView/LoginView.tsx +426 -0
- package/src/views/LoginView/LoginView.types.ts +52 -0
- package/src/views/LoginView/README.md +396 -0
- package/src/views/LoginView/icons.tsx +85 -0
- package/src/views/LoginView/index.ts +3 -0
- package/src/views/RecoverPasswordView/README.md +269 -269
- package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +131 -131
- package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +56 -56
- package/src/views/RecoverPasswordView/icons.tsx +17 -17
- package/src/views/RecoverPasswordView/index.ts +2 -2
- package/src/views/SignUpView/SignUpView.stories.tsx +129 -0
- package/src/views/SignUpView/SignUpView.tsx +503 -0
- package/src/views/SignUpView/SignUpView.types.ts +58 -0
- package/src/views/SignUpView/icons.tsx +71 -0
- package/src/views/SignUpView/index.ts +3 -0
- package/claude/agents/siesa-ui-kit-specialist.md +0 -2401
- package/claude/prompts/component-template.md +0 -121
|
@@ -1,298 +1,298 @@
|
|
|
1
|
-
# Pagination Component
|
|
2
|
-
|
|
3
|
-
Componente de paginación del sistema de diseño **Siesa UI Kit**, implementado pixel-perfect según especificaciones de Figma con soporte completo de dark mode.
|
|
4
|
-
|
|
5
|
-
## 📋 Características
|
|
6
|
-
|
|
7
|
-
- ✅ **Soporte completo de dark mode** - Tokens adaptativos para light/dark
|
|
8
|
-
- ✅ **Algoritmo inteligente** - Muestra páginas relevantes con separadores "..."
|
|
9
|
-
- ✅ **TypeScript estricto** - Types completos para máxima seguridad
|
|
10
|
-
- ✅ **Accesibilidad** - ARIA labels y navegación por teclado
|
|
11
|
-
- ✅ **Personalizable** - Textos, siblingCount, botones opcionales
|
|
12
|
-
- ✅ **Pixel-perfect** - Implementado exactamente según Figma
|
|
13
|
-
- ✅ **Transiciones suaves** - Animaciones en hover y active
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## 🎨 Especificaciones de Diseño
|
|
18
|
-
|
|
19
|
-
### Tokens Utilizados
|
|
20
|
-
|
|
21
|
-
| Propiedad | Token | Valor Light | Valor Dark |
|
|
22
|
-
|-----------|-------|-------------|------------|
|
|
23
|
-
| **Texto** | `text-primary-custom-600` | `#0e79fd` | `#0e79fd` |
|
|
24
|
-
| **Hover BG** | `hover:bg-primary-custom-100` | `#dbeefe` | `#dbeefe` |
|
|
25
|
-
| **Active BG** | `bg-primary-custom-100` | `#dbeefe` | `#dbeefe` |
|
|
26
|
-
| **Font** | `text-sm font-bold` | 14px Bold | 14px Bold |
|
|
27
|
-
| **Padding** | `px-3 py-2` | 12px 8px | 12px 8px |
|
|
28
|
-
| **Border Radius** | `rounded-md` | 6px | 6px |
|
|
29
|
-
|
|
30
|
-
### Estados
|
|
31
|
-
|
|
32
|
-
- **Default**: Transparente, texto azul
|
|
33
|
-
- **Hover**: Fondo azul claro (`primary-custom-100`)
|
|
34
|
-
- **Active**: Fondo azul claro (página actual)
|
|
35
|
-
- **Disabled**: Opacidad 50% (Back/Next en primera/última página)
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## 📦 Uso Básico
|
|
40
|
-
|
|
41
|
-
```tsx
|
|
42
|
-
import { Pagination } from '@/components/Pagination';
|
|
43
|
-
import { useState } from 'react';
|
|
44
|
-
|
|
45
|
-
function MyComponent() {
|
|
46
|
-
const [currentPage, setCurrentPage] = useState(1);
|
|
47
|
-
|
|
48
|
-
return (
|
|
49
|
-
<Pagination
|
|
50
|
-
currentPage={currentPage}
|
|
51
|
-
totalPages={66}
|
|
52
|
-
onPageChange={(page) => setCurrentPage(page)}
|
|
53
|
-
/>
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## 🔧 Props
|
|
61
|
-
|
|
62
|
-
### PaginationProps
|
|
63
|
-
|
|
64
|
-
| Prop | Tipo | Default | Descripción |
|
|
65
|
-
|------|------|---------|-------------|
|
|
66
|
-
| `currentPage` | `number` | `1` | Página actual (basada en 1) |
|
|
67
|
-
| `totalPages` | `number` | **Requerido** | Número total de páginas |
|
|
68
|
-
| `onPageChange` | `(page: number) => void` | - | Callback cuando cambia la página |
|
|
69
|
-
| `backText` | `string` | `'Back'` | Texto del botón "Back" |
|
|
70
|
-
| `nextText` | `string` | `'Next'` | Texto del botón "Next" |
|
|
71
|
-
| `siblingCount` | `number` | `1` | Páginas visibles alrededor de la actual |
|
|
72
|
-
| `showBackButton` | `boolean` | `true` | Si se muestra el botón "Back" |
|
|
73
|
-
| `showNextButton` | `boolean` | `true` | Si se muestra el botón "Next" |
|
|
74
|
-
| `className` | `string` | `''` | Clases CSS adicionales |
|
|
75
|
-
| `ariaLabel` | `string` | `'Pagination'` | Label para accesibilidad |
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
## 📖 Ejemplos
|
|
80
|
-
|
|
81
|
-
### 1. Paginación Básica
|
|
82
|
-
|
|
83
|
-
```tsx
|
|
84
|
-
<Pagination
|
|
85
|
-
currentPage={1}
|
|
86
|
-
totalPages={10}
|
|
87
|
-
onPageChange={(page) => console.log(page)}
|
|
88
|
-
/>
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
### 2. Con Textos Personalizados (Español)
|
|
92
|
-
|
|
93
|
-
```tsx
|
|
94
|
-
<Pagination
|
|
95
|
-
currentPage={5}
|
|
96
|
-
totalPages={66}
|
|
97
|
-
backText="Anterior"
|
|
98
|
-
nextText="Siguiente"
|
|
99
|
-
onPageChange={(page) => console.log(page)}
|
|
100
|
-
/>
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### 3. Más Páginas Visibles (siblingCount)
|
|
104
|
-
|
|
105
|
-
```tsx
|
|
106
|
-
// siblingCount = 1 (default): [1] ... [4] [5] [6] ... [66]
|
|
107
|
-
<Pagination currentPage={5} totalPages={66} siblingCount={1} />
|
|
108
|
-
|
|
109
|
-
// siblingCount = 2: [1] ... [3] [4] [5] [6] [7] ... [66]
|
|
110
|
-
<Pagination currentPage={5} totalPages={66} siblingCount={2} />
|
|
111
|
-
|
|
112
|
-
// siblingCount = 0: [1] ... [5] ... [66]
|
|
113
|
-
<Pagination currentPage={5} totalPages={66} siblingCount={0} />
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### 4. Solo Números (Sin Back/Next)
|
|
117
|
-
|
|
118
|
-
```tsx
|
|
119
|
-
<Pagination
|
|
120
|
-
currentPage={5}
|
|
121
|
-
totalPages={66}
|
|
122
|
-
showBackButton={false}
|
|
123
|
-
showNextButton={false}
|
|
124
|
-
/>
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### 5. Con Tabla
|
|
128
|
-
|
|
129
|
-
```tsx
|
|
130
|
-
function TableWithPagination() {
|
|
131
|
-
const [currentPage, setCurrentPage] = useState(1);
|
|
132
|
-
const itemsPerPage = 10;
|
|
133
|
-
const totalItems = 156;
|
|
134
|
-
const totalPages = Math.ceil(totalItems / itemsPerPage);
|
|
135
|
-
|
|
136
|
-
const startItem = (currentPage - 1) * itemsPerPage + 1;
|
|
137
|
-
const endItem = Math.min(currentPage * itemsPerPage, totalItems);
|
|
138
|
-
|
|
139
|
-
return (
|
|
140
|
-
<div>
|
|
141
|
-
{/* Tu tabla aquí */}
|
|
142
|
-
<table>{/* ... */}</table>
|
|
143
|
-
|
|
144
|
-
{/* Footer con info y paginación */}
|
|
145
|
-
<div className="flex items-center justify-between mt-4">
|
|
146
|
-
<p className="text-xs text-gray-500">
|
|
147
|
-
Mostrando {startItem} a {endItem} de {totalItems} resultados
|
|
148
|
-
</p>
|
|
149
|
-
<Pagination
|
|
150
|
-
currentPage={currentPage}
|
|
151
|
-
totalPages={totalPages}
|
|
152
|
-
onPageChange={setCurrentPage}
|
|
153
|
-
/>
|
|
154
|
-
</div>
|
|
155
|
-
</div>
|
|
156
|
-
);
|
|
157
|
-
}
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## 🧠 Algoritmo de Paginación
|
|
163
|
-
|
|
164
|
-
El componente usa un algoritmo inteligente para mostrar solo las páginas relevantes:
|
|
165
|
-
|
|
166
|
-
### Pocas páginas (≤ 7)
|
|
167
|
-
```
|
|
168
|
-
[1] [2] [3] [4] [5]
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
### Cerca del inicio
|
|
172
|
-
```
|
|
173
|
-
[1] [2] [3] [4] [5] ... [66]
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
### Cerca del final
|
|
177
|
-
```
|
|
178
|
-
[1] ... [62] [63] [64] [65] [66]
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
### En el medio
|
|
182
|
-
```
|
|
183
|
-
[1] ... [9] [10] [11] ... [66]
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
**Reglas:**
|
|
187
|
-
- Siempre muestra la **primera** y **última** página
|
|
188
|
-
- Muestra la **página actual** y sus **siblings** (1 a cada lado por default)
|
|
189
|
-
- Usa "**...**" para indicar páginas ocultas
|
|
190
|
-
|
|
191
|
-
---
|
|
192
|
-
|
|
193
|
-
## ♿ Accesibilidad
|
|
194
|
-
|
|
195
|
-
- ✅ Navegación por teclado (Tab, Enter, Space)
|
|
196
|
-
- ✅ ARIA labels descriptivos (`aria-label`, `aria-current`)
|
|
197
|
-
- ✅ Estados disabled claros
|
|
198
|
-
- ✅ Focus rings visibles
|
|
199
|
-
- ✅ Semantic HTML (`<nav>`, `<button>`)
|
|
200
|
-
|
|
201
|
-
```tsx
|
|
202
|
-
<Pagination
|
|
203
|
-
currentPage={5}
|
|
204
|
-
totalPages={66}
|
|
205
|
-
ariaLabel="Paginación de resultados"
|
|
206
|
-
/>
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
|
|
211
|
-
## 🌓 Dark Mode
|
|
212
|
-
|
|
213
|
-
El componente se adapta automáticamente al dark mode usando el modificador `dark:`:
|
|
214
|
-
|
|
215
|
-
```tsx
|
|
216
|
-
// Los colores se adaptan automáticamente
|
|
217
|
-
<Pagination currentPage={1} totalPages={66} />
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
**Tokens usados:**
|
|
221
|
-
- Texto: `text-primary-custom-600` (mismo en ambos modos)
|
|
222
|
-
- Hover: `hover:bg-primary-custom-100` / `dark:hover:bg-primary-custom-100`
|
|
223
|
-
|
|
224
|
-
---
|
|
225
|
-
|
|
226
|
-
## 🎯 Mejores Prácticas
|
|
227
|
-
|
|
228
|
-
### ✅ Hacer
|
|
229
|
-
|
|
230
|
-
```tsx
|
|
231
|
-
// ✅ currentPage basado en 1
|
|
232
|
-
<Pagination currentPage={1} totalPages={10} />
|
|
233
|
-
|
|
234
|
-
// ✅ Mostrar información de contexto
|
|
235
|
-
<div>
|
|
236
|
-
<p>Mostrando 1 a 10 de 156 resultados</p>
|
|
237
|
-
<Pagination currentPage={1} totalPages={16} />
|
|
238
|
-
</div>
|
|
239
|
-
|
|
240
|
-
// ✅ siblingCount responsive
|
|
241
|
-
<Pagination
|
|
242
|
-
currentPage={5}
|
|
243
|
-
totalPages={66}
|
|
244
|
-
siblingCount={window.innerWidth < 768 ? 0 : 1}
|
|
245
|
-
/>
|
|
246
|
-
|
|
247
|
-
// ✅ Implementar onPageChange
|
|
248
|
-
<Pagination
|
|
249
|
-
currentPage={currentPage}
|
|
250
|
-
totalPages={10}
|
|
251
|
-
onPageChange={(page) => {
|
|
252
|
-
setCurrentPage(page);
|
|
253
|
-
fetchData(page);
|
|
254
|
-
window.scrollTo(0, 0); // Scroll to top
|
|
255
|
-
}}
|
|
256
|
-
/>
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
### ❌ Evitar
|
|
260
|
-
|
|
261
|
-
```tsx
|
|
262
|
-
// ❌ currentPage basado en 0
|
|
263
|
-
<Pagination currentPage={0} totalPages={10} />
|
|
264
|
-
|
|
265
|
-
// ❌ siblingCount muy alto
|
|
266
|
-
<Pagination currentPage={5} totalPages={66} siblingCount={10} />
|
|
267
|
-
|
|
268
|
-
// ❌ Sin onPageChange
|
|
269
|
-
<Pagination currentPage={1} totalPages={10} />
|
|
270
|
-
// El componente no cambiará páginas solo
|
|
271
|
-
|
|
272
|
-
// ❌ Paginación para muy pocos items
|
|
273
|
-
<Pagination currentPage={1} totalPages={2} />
|
|
274
|
-
// Considera mostrar todo en lugar de paginar
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
---
|
|
278
|
-
|
|
279
|
-
## 📚 Referencias
|
|
280
|
-
|
|
281
|
-
- **Figma**: [Pagination Component](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4168-16023)
|
|
282
|
-
- **Código**: `src/components/Pagination/Pagination.tsx`
|
|
283
|
-
- **Types**: `src/components/Pagination/Pagination.types.ts`
|
|
284
|
-
- **Stories**: `src/components/Pagination/Pagination.stories.tsx`
|
|
285
|
-
- **Docs**: `docs/colors.md`, `docs/typography.md`, `docs/spacing.md`
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
## 🔄 Historial de Cambios
|
|
290
|
-
|
|
291
|
-
| Versión | Fecha | Cambios |
|
|
292
|
-
|---------|-------|---------|
|
|
293
|
-
| 1.0.0 | 2025-11-11 | Implementación inicial con dark mode completo |
|
|
294
|
-
|
|
295
|
-
---
|
|
296
|
-
|
|
297
|
-
**Última actualización**: 2025-11-11
|
|
298
|
-
**Mantenido por**: Equipo Siesa UI Kit
|
|
1
|
+
# Pagination Component
|
|
2
|
+
|
|
3
|
+
Componente de paginación del sistema de diseño **Siesa UI Kit**, implementado pixel-perfect según especificaciones de Figma con soporte completo de dark mode.
|
|
4
|
+
|
|
5
|
+
## 📋 Características
|
|
6
|
+
|
|
7
|
+
- ✅ **Soporte completo de dark mode** - Tokens adaptativos para light/dark
|
|
8
|
+
- ✅ **Algoritmo inteligente** - Muestra páginas relevantes con separadores "..."
|
|
9
|
+
- ✅ **TypeScript estricto** - Types completos para máxima seguridad
|
|
10
|
+
- ✅ **Accesibilidad** - ARIA labels y navegación por teclado
|
|
11
|
+
- ✅ **Personalizable** - Textos, siblingCount, botones opcionales
|
|
12
|
+
- ✅ **Pixel-perfect** - Implementado exactamente según Figma
|
|
13
|
+
- ✅ **Transiciones suaves** - Animaciones en hover y active
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 🎨 Especificaciones de Diseño
|
|
18
|
+
|
|
19
|
+
### Tokens Utilizados
|
|
20
|
+
|
|
21
|
+
| Propiedad | Token | Valor Light | Valor Dark |
|
|
22
|
+
|-----------|-------|-------------|------------|
|
|
23
|
+
| **Texto** | `text-primary-custom-600` | `#0e79fd` | `#0e79fd` |
|
|
24
|
+
| **Hover BG** | `hover:bg-primary-custom-100` | `#dbeefe` | `#dbeefe` |
|
|
25
|
+
| **Active BG** | `bg-primary-custom-100` | `#dbeefe` | `#dbeefe` |
|
|
26
|
+
| **Font** | `text-sm font-bold` | 14px Bold | 14px Bold |
|
|
27
|
+
| **Padding** | `px-3 py-2` | 12px 8px | 12px 8px |
|
|
28
|
+
| **Border Radius** | `rounded-md` | 6px | 6px |
|
|
29
|
+
|
|
30
|
+
### Estados
|
|
31
|
+
|
|
32
|
+
- **Default**: Transparente, texto azul
|
|
33
|
+
- **Hover**: Fondo azul claro (`primary-custom-100`)
|
|
34
|
+
- **Active**: Fondo azul claro (página actual)
|
|
35
|
+
- **Disabled**: Opacidad 50% (Back/Next en primera/última página)
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 📦 Uso Básico
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
import { Pagination } from '@/components/Pagination';
|
|
43
|
+
import { useState } from 'react';
|
|
44
|
+
|
|
45
|
+
function MyComponent() {
|
|
46
|
+
const [currentPage, setCurrentPage] = useState(1);
|
|
47
|
+
|
|
48
|
+
return (
|
|
49
|
+
<Pagination
|
|
50
|
+
currentPage={currentPage}
|
|
51
|
+
totalPages={66}
|
|
52
|
+
onPageChange={(page) => setCurrentPage(page)}
|
|
53
|
+
/>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 🔧 Props
|
|
61
|
+
|
|
62
|
+
### PaginationProps
|
|
63
|
+
|
|
64
|
+
| Prop | Tipo | Default | Descripción |
|
|
65
|
+
|------|------|---------|-------------|
|
|
66
|
+
| `currentPage` | `number` | `1` | Página actual (basada en 1) |
|
|
67
|
+
| `totalPages` | `number` | **Requerido** | Número total de páginas |
|
|
68
|
+
| `onPageChange` | `(page: number) => void` | - | Callback cuando cambia la página |
|
|
69
|
+
| `backText` | `string` | `'Back'` | Texto del botón "Back" |
|
|
70
|
+
| `nextText` | `string` | `'Next'` | Texto del botón "Next" |
|
|
71
|
+
| `siblingCount` | `number` | `1` | Páginas visibles alrededor de la actual |
|
|
72
|
+
| `showBackButton` | `boolean` | `true` | Si se muestra el botón "Back" |
|
|
73
|
+
| `showNextButton` | `boolean` | `true` | Si se muestra el botón "Next" |
|
|
74
|
+
| `className` | `string` | `''` | Clases CSS adicionales |
|
|
75
|
+
| `ariaLabel` | `string` | `'Pagination'` | Label para accesibilidad |
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## 📖 Ejemplos
|
|
80
|
+
|
|
81
|
+
### 1. Paginación Básica
|
|
82
|
+
|
|
83
|
+
```tsx
|
|
84
|
+
<Pagination
|
|
85
|
+
currentPage={1}
|
|
86
|
+
totalPages={10}
|
|
87
|
+
onPageChange={(page) => console.log(page)}
|
|
88
|
+
/>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 2. Con Textos Personalizados (Español)
|
|
92
|
+
|
|
93
|
+
```tsx
|
|
94
|
+
<Pagination
|
|
95
|
+
currentPage={5}
|
|
96
|
+
totalPages={66}
|
|
97
|
+
backText="Anterior"
|
|
98
|
+
nextText="Siguiente"
|
|
99
|
+
onPageChange={(page) => console.log(page)}
|
|
100
|
+
/>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 3. Más Páginas Visibles (siblingCount)
|
|
104
|
+
|
|
105
|
+
```tsx
|
|
106
|
+
// siblingCount = 1 (default): [1] ... [4] [5] [6] ... [66]
|
|
107
|
+
<Pagination currentPage={5} totalPages={66} siblingCount={1} />
|
|
108
|
+
|
|
109
|
+
// siblingCount = 2: [1] ... [3] [4] [5] [6] [7] ... [66]
|
|
110
|
+
<Pagination currentPage={5} totalPages={66} siblingCount={2} />
|
|
111
|
+
|
|
112
|
+
// siblingCount = 0: [1] ... [5] ... [66]
|
|
113
|
+
<Pagination currentPage={5} totalPages={66} siblingCount={0} />
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 4. Solo Números (Sin Back/Next)
|
|
117
|
+
|
|
118
|
+
```tsx
|
|
119
|
+
<Pagination
|
|
120
|
+
currentPage={5}
|
|
121
|
+
totalPages={66}
|
|
122
|
+
showBackButton={false}
|
|
123
|
+
showNextButton={false}
|
|
124
|
+
/>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### 5. Con Tabla
|
|
128
|
+
|
|
129
|
+
```tsx
|
|
130
|
+
function TableWithPagination() {
|
|
131
|
+
const [currentPage, setCurrentPage] = useState(1);
|
|
132
|
+
const itemsPerPage = 10;
|
|
133
|
+
const totalItems = 156;
|
|
134
|
+
const totalPages = Math.ceil(totalItems / itemsPerPage);
|
|
135
|
+
|
|
136
|
+
const startItem = (currentPage - 1) * itemsPerPage + 1;
|
|
137
|
+
const endItem = Math.min(currentPage * itemsPerPage, totalItems);
|
|
138
|
+
|
|
139
|
+
return (
|
|
140
|
+
<div>
|
|
141
|
+
{/* Tu tabla aquí */}
|
|
142
|
+
<table>{/* ... */}</table>
|
|
143
|
+
|
|
144
|
+
{/* Footer con info y paginación */}
|
|
145
|
+
<div className="flex items-center justify-between mt-4">
|
|
146
|
+
<p className="text-xs text-gray-500">
|
|
147
|
+
Mostrando {startItem} a {endItem} de {totalItems} resultados
|
|
148
|
+
</p>
|
|
149
|
+
<Pagination
|
|
150
|
+
currentPage={currentPage}
|
|
151
|
+
totalPages={totalPages}
|
|
152
|
+
onPageChange={setCurrentPage}
|
|
153
|
+
/>
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 🧠 Algoritmo de Paginación
|
|
163
|
+
|
|
164
|
+
El componente usa un algoritmo inteligente para mostrar solo las páginas relevantes:
|
|
165
|
+
|
|
166
|
+
### Pocas páginas (≤ 7)
|
|
167
|
+
```
|
|
168
|
+
[1] [2] [3] [4] [5]
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### Cerca del inicio
|
|
172
|
+
```
|
|
173
|
+
[1] [2] [3] [4] [5] ... [66]
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Cerca del final
|
|
177
|
+
```
|
|
178
|
+
[1] ... [62] [63] [64] [65] [66]
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### En el medio
|
|
182
|
+
```
|
|
183
|
+
[1] ... [9] [10] [11] ... [66]
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**Reglas:**
|
|
187
|
+
- Siempre muestra la **primera** y **última** página
|
|
188
|
+
- Muestra la **página actual** y sus **siblings** (1 a cada lado por default)
|
|
189
|
+
- Usa "**...**" para indicar páginas ocultas
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## ♿ Accesibilidad
|
|
194
|
+
|
|
195
|
+
- ✅ Navegación por teclado (Tab, Enter, Space)
|
|
196
|
+
- ✅ ARIA labels descriptivos (`aria-label`, `aria-current`)
|
|
197
|
+
- ✅ Estados disabled claros
|
|
198
|
+
- ✅ Focus rings visibles
|
|
199
|
+
- ✅ Semantic HTML (`<nav>`, `<button>`)
|
|
200
|
+
|
|
201
|
+
```tsx
|
|
202
|
+
<Pagination
|
|
203
|
+
currentPage={5}
|
|
204
|
+
totalPages={66}
|
|
205
|
+
ariaLabel="Paginación de resultados"
|
|
206
|
+
/>
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## 🌓 Dark Mode
|
|
212
|
+
|
|
213
|
+
El componente se adapta automáticamente al dark mode usando el modificador `dark:`:
|
|
214
|
+
|
|
215
|
+
```tsx
|
|
216
|
+
// Los colores se adaptan automáticamente
|
|
217
|
+
<Pagination currentPage={1} totalPages={66} />
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Tokens usados:**
|
|
221
|
+
- Texto: `text-primary-custom-600` (mismo en ambos modos)
|
|
222
|
+
- Hover: `hover:bg-primary-custom-100` / `dark:hover:bg-primary-custom-100`
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## 🎯 Mejores Prácticas
|
|
227
|
+
|
|
228
|
+
### ✅ Hacer
|
|
229
|
+
|
|
230
|
+
```tsx
|
|
231
|
+
// ✅ currentPage basado en 1
|
|
232
|
+
<Pagination currentPage={1} totalPages={10} />
|
|
233
|
+
|
|
234
|
+
// ✅ Mostrar información de contexto
|
|
235
|
+
<div>
|
|
236
|
+
<p>Mostrando 1 a 10 de 156 resultados</p>
|
|
237
|
+
<Pagination currentPage={1} totalPages={16} />
|
|
238
|
+
</div>
|
|
239
|
+
|
|
240
|
+
// ✅ siblingCount responsive
|
|
241
|
+
<Pagination
|
|
242
|
+
currentPage={5}
|
|
243
|
+
totalPages={66}
|
|
244
|
+
siblingCount={window.innerWidth < 768 ? 0 : 1}
|
|
245
|
+
/>
|
|
246
|
+
|
|
247
|
+
// ✅ Implementar onPageChange
|
|
248
|
+
<Pagination
|
|
249
|
+
currentPage={currentPage}
|
|
250
|
+
totalPages={10}
|
|
251
|
+
onPageChange={(page) => {
|
|
252
|
+
setCurrentPage(page);
|
|
253
|
+
fetchData(page);
|
|
254
|
+
window.scrollTo(0, 0); // Scroll to top
|
|
255
|
+
}}
|
|
256
|
+
/>
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### ❌ Evitar
|
|
260
|
+
|
|
261
|
+
```tsx
|
|
262
|
+
// ❌ currentPage basado en 0
|
|
263
|
+
<Pagination currentPage={0} totalPages={10} />
|
|
264
|
+
|
|
265
|
+
// ❌ siblingCount muy alto
|
|
266
|
+
<Pagination currentPage={5} totalPages={66} siblingCount={10} />
|
|
267
|
+
|
|
268
|
+
// ❌ Sin onPageChange
|
|
269
|
+
<Pagination currentPage={1} totalPages={10} />
|
|
270
|
+
// El componente no cambiará páginas solo
|
|
271
|
+
|
|
272
|
+
// ❌ Paginación para muy pocos items
|
|
273
|
+
<Pagination currentPage={1} totalPages={2} />
|
|
274
|
+
// Considera mostrar todo en lugar de paginar
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## 📚 Referencias
|
|
280
|
+
|
|
281
|
+
- **Figma**: [Pagination Component](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4168-16023)
|
|
282
|
+
- **Código**: `src/components/Pagination/Pagination.tsx`
|
|
283
|
+
- **Types**: `src/components/Pagination/Pagination.types.ts`
|
|
284
|
+
- **Stories**: `src/components/Pagination/Pagination.stories.tsx`
|
|
285
|
+
- **Docs**: `docs/colors.md`, `docs/typography.md`, `docs/spacing.md`
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## 🔄 Historial de Cambios
|
|
290
|
+
|
|
291
|
+
| Versión | Fecha | Cambios |
|
|
292
|
+
|---------|-------|---------|
|
|
293
|
+
| 1.0.0 | 2025-11-11 | Implementación inicial con dark mode completo |
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
**Última actualización**: 2025-11-11
|
|
298
|
+
**Mantenido por**: Equipo Siesa UI Kit
|