siesa-ui-kit 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -115
- package/bin/install.cjs +502 -502
- package/bin/prepare-publish.cjs +28 -28
- package/bin/restore-folders.cjs +28 -28
- package/claude/agents/siesa-ui-kit-specialist.md +2401 -2445
- package/claude/prompts/component-template.md +121 -121
- package/claude/settings.local.json +61 -72
- package/docs/border-radius.md +1261 -1261
- package/docs/colors.md +832 -832
- package/docs/dark-mode-guide.md +1426 -1426
- package/docs/filters.md +1243 -1243
- package/docs/icons.md +1283 -1264
- package/docs/shadows.md +1377 -1377
- package/docs/spacing.md +1684 -1684
- package/docs/typography.md +1268 -1268
- package/package.json +83 -111
- package/postcss.config.cjs +6 -6
- package/src/App.css +42 -42
- package/src/App.tsx +8 -8
- package/src/ButtonTest.tsx +147 -147
- package/src/assets/fonts/README.md +261 -261
- package/src/components/Alert/Alert.stories.tsx +332 -332
- package/src/components/Alert/Alert.tsx +106 -106
- package/src/components/Alert/Alert.types.ts +54 -54
- package/src/components/Avatar/Avatar.stories.tsx +494 -494
- package/src/components/Avatar/Avatar.tsx +143 -143
- package/src/components/Avatar/Avatar.types.ts +53 -53
- package/src/components/Badge/Badge.stories.tsx +339 -339
- package/src/components/Badge/Badge.tsx +278 -278
- package/src/components/Badge/Badge.types.ts +58 -58
- package/src/components/Button/Button.stories.tsx +950 -950
- package/src/components/Button/Button.tsx +337 -337
- package/src/components/Button/Button.types.ts +180 -180
- package/src/components/Button/icons.tsx +87 -48
- package/src/components/Button/index.ts +3 -3
- package/src/components/Checkbox/Checkbox.stories.tsx +453 -453
- package/src/components/Checkbox/Checkbox.tsx +208 -208
- package/src/components/Checkbox/Checkbox.types.ts +61 -61
- package/src/components/DescriptionList/DescriptionList.stories.tsx +250 -250
- package/src/components/DescriptionList/DescriptionList.tsx +96 -96
- package/src/components/DescriptionList/DescriptionList.types.ts +29 -29
- package/src/components/Divider/Divider.stories.tsx +263 -263
- package/src/components/Divider/Divider.tsx +80 -80
- package/src/components/Divider/Divider.types.ts +24 -24
- package/src/components/Dropdown/Dropdown.stories.tsx +552 -552
- package/src/components/Dropdown/Dropdown.tsx +422 -422
- package/src/components/Dropdown/Dropdown.types.ts +146 -146
- package/src/components/Dropdown/README.md +266 -266
- package/src/components/Dropdown/icons.tsx +72 -72
- package/src/components/Dropdown/index.ts +8 -8
- package/src/components/Input/Input.stories.tsx +583 -583
- package/src/components/Input/Input.tsx +204 -204
- package/src/components/Input/Input.types.ts +80 -80
- package/src/components/Input/icons.tsx +145 -145
- package/src/components/Input/index.ts +2 -2
- package/src/components/LoginView/LoginView.stories.tsx +148 -148
- package/src/components/LoginView/LoginView.tsx +426 -426
- package/src/components/LoginView/LoginView.types.ts +52 -52
- package/src/components/LoginView/README.md +396 -396
- package/src/components/LoginView/icons.tsx +85 -85
- package/src/components/LoginView/index.ts +3 -3
- package/src/components/Navbar/Navbar.stories.tsx +810 -810
- package/src/components/Navbar/Navbar.tsx +755 -755
- package/src/components/Navbar/Navbar.types.ts +219 -219
- package/src/components/Navbar/README.md +279 -279
- package/src/components/Navbar/icons.tsx +102 -102
- package/src/components/Navbar/index.ts +8 -8
- package/src/components/NavigationBar/NavigationBar.stories.tsx +406 -406
- package/src/components/NavigationBar/NavigationBar.tsx +246 -246
- package/src/components/NavigationBar/NavigationBar.types.ts +74 -74
- package/src/components/NavigationBar/README.md +469 -469
- package/src/components/NavigationBar/index.ts +2 -2
- package/src/components/NavigationRail/NavigationRail.stories.tsx +417 -417
- package/src/components/NavigationRail/NavigationRail.tsx +418 -418
- package/src/components/NavigationRail/NavigationRail.types.ts +109 -109
- package/src/components/NavigationRail/README.md +224 -224
- package/src/components/NavigationRail/index.ts +2 -2
- package/src/components/Notification/Notification.stories.tsx +513 -513
- package/src/components/Notification/Notification.tsx +145 -145
- package/src/components/Notification/Notification.types.ts +142 -142
- package/src/components/Notification/README.md +409 -409
- package/src/components/Notification/index.ts +3 -3
- package/src/components/POSConvention/POSConvention.stories.tsx +235 -235
- package/src/components/POSConvention/POSConvention.tsx +129 -129
- package/src/components/POSConvention/POSConvention.types.ts +38 -38
- package/src/components/POSConvention/README.md +123 -123
- package/src/components/POSConvention/icons.tsx +45 -45
- package/src/components/POSConvention/index.ts +3 -3
- package/src/components/POSLocationButton/POSLocationButton.stories.tsx +531 -531
- package/src/components/POSLocationButton/POSLocationButton.tsx +247 -247
- package/src/components/POSLocationButton/POSLocationButton.types.ts +87 -87
- package/src/components/POSLocationButton/README.md +253 -253
- package/src/components/POSLocationButton/icons.tsx +120 -120
- package/src/components/POSLocationButton/index.ts +14 -14
- package/src/components/POSNumberButton/POSNumberButton.stories.tsx +415 -415
- package/src/components/POSNumberButton/POSNumberButton.tsx +179 -179
- package/src/components/POSNumberButton/POSNumberButton.types.ts +51 -51
- package/src/components/POSNumberButton/README.md +321 -321
- package/src/components/POSNumberButton/index.ts +3 -3
- package/src/components/POSProductButton/POSProductButton.stories.tsx +318 -318
- package/src/components/POSProductButton/POSProductButton.tsx +152 -152
- package/src/components/POSProductButton/POSProductButton.types.ts +46 -46
- package/src/components/POSProductButton/README.md +269 -269
- package/src/components/POSProductButton/index.ts +2 -2
- package/src/components/POSProductCard/POSProductCard.stories.tsx +642 -642
- package/src/components/POSProductCard/POSProductCard.tsx +208 -208
- package/src/components/POSProductCard/POSProductCard.types.ts +76 -76
- package/src/components/POSProductCard/README.md +179 -179
- package/src/components/POSProductCard/icons.tsx +26 -26
- package/src/components/POSProductCard/index.ts +2 -2
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +753 -753
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +332 -332
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +119 -119
- package/src/components/POSProductSidebarItems/README.md +198 -198
- package/src/components/POSProductSidebarItems/icons.tsx +21 -21
- package/src/components/POSProductSidebarItems/index.ts +3 -3
- package/src/components/POSTable/POSTable.stories.tsx +737 -737
- package/src/components/POSTable/POSTable.tsx +401 -401
- package/src/components/POSTable/POSTable.types.ts +83 -83
- package/src/components/POSTable/README.md +286 -286
- package/src/components/POSTable/index.ts +7 -7
- package/src/components/Pagination/Pagination.stories.tsx +555 -555
- package/src/components/Pagination/Pagination.tsx +286 -286
- package/src/components/Pagination/Pagination.types.ts +93 -93
- package/src/components/Pagination/README.md +298 -298
- package/src/components/Pagination/icons.tsx +47 -47
- package/src/components/Pagination/index.ts +3 -3
- package/src/components/Quantity/Quantity.stories.tsx +457 -457
- package/src/components/Quantity/Quantity.tsx +289 -289
- package/src/components/Quantity/Quantity.types.ts +70 -70
- package/src/components/Radio/Radio.stories.tsx +523 -523
- package/src/components/Radio/Radio.tsx +170 -170
- package/src/components/Radio/Radio.types.ts +122 -122
- package/src/components/Select/README.md +299 -299
- package/src/components/Select/Select.stories.tsx +673 -705
- package/src/components/Select/Select.tsx +454 -457
- package/src/components/Select/Select.types.ts +148 -148
- package/src/components/Select/icons.tsx +50 -25
- package/src/components/Select/index.ts +3 -3
- package/src/components/SignUpView/SignUpView.stories.tsx +129 -129
- package/src/components/SignUpView/SignUpView.tsx +503 -503
- package/src/components/SignUpView/SignUpView.types.ts +58 -58
- package/src/components/SignUpView/icons.tsx +71 -71
- package/src/components/SignUpView/index.ts +3 -3
- package/src/components/Switch/README.md +112 -112
- package/src/components/Switch/Switch.stories.tsx +550 -550
- package/src/components/Switch/Switch.tsx +246 -246
- package/src/components/Switch/Switch.types.ts +67 -67
- package/src/components/Table/README.md +369 -369
- package/src/components/Table/Table.stories.tsx +805 -805
- package/src/components/Table/Table.tsx +688 -688
- package/src/components/Table/Table.types.ts +204 -204
- package/src/components/Table/index.ts +9 -9
- package/src/components/Tabs/README.md +201 -201
- package/src/components/Tabs/Tabs.stories.tsx +580 -580
- package/src/components/Tabs/Tabs.tsx +356 -356
- package/src/components/Tabs/Tabs.types.ts +127 -127
- package/src/components/Tabs/icons.tsx +129 -129
- package/src/components/Tabs/index.ts +11 -11
- package/src/components/Textarea/Textarea.stories.tsx +535 -535
- package/src/components/Textarea/Textarea.tsx +188 -188
- package/src/components/Textarea/Textarea.types.ts +54 -54
- package/src/context/ThemeContext.tsx +99 -99
- package/src/context/index.ts +1 -1
- package/src/index.css +29 -29
- package/src/index.ts +39 -133
- package/src/main.tsx +10 -10
- package/src/views/ProductsView/ProductsView.stories.tsx +344 -344
- package/src/views/ProductsView/ProductsView.tsx +480 -480
- package/src/views/ProductsView/ProductsView.types.ts +238 -238
- package/src/views/ProductsView/README.md +312 -312
- package/src/views/ProductsView/icons.tsx +38 -38
- package/src/views/ProductsView/index.ts +8 -8
- package/src/views/RecoverPasswordView/README.md +269 -269
- package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +131 -131
- package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +376 -376
- package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +56 -56
- package/src/views/RecoverPasswordView/icons.tsx +17 -17
- package/src/views/RecoverPasswordView/index.ts +2 -2
- package/src/views/TableLayoutView/README.md +268 -268
- package/src/views/TableLayoutView/TableLayoutView.stories.tsx +235 -235
- package/src/views/TableLayoutView/TableLayoutView.tsx +461 -461
- package/src/views/TableLayoutView/TableLayoutView.types.ts +209 -209
- package/src/views/TableLayoutView/icons.tsx +113 -113
- package/src/views/TableLayoutView/index.ts +6 -6
- package/storybook/main.ts +19 -19
- package/storybook/preview.tsx +84 -84
- package/storybook/vitest.setup.ts +6 -6
- package/tailwind.config.js +128 -128
- package/claude/prompts/siesa-ui-kit.md +0 -28
- package/dist/ButtonTest.d.ts +0 -6
- package/dist/ButtonTest.d.ts.map +0 -1
- package/dist/components/Alert/Alert.d.ts +0 -23
- package/dist/components/Alert/Alert.d.ts.map +0 -1
- package/dist/components/Alert/Alert.types.d.ts +0 -46
- package/dist/components/Alert/Alert.types.d.ts.map +0 -1
- package/dist/components/Avatar/Avatar.d.ts +0 -41
- package/dist/components/Avatar/Avatar.d.ts.map +0 -1
- package/dist/components/Avatar/Avatar.types.d.ts +0 -46
- package/dist/components/Avatar/Avatar.types.d.ts.map +0 -1
- package/dist/components/Badge/Badge.d.ts +0 -42
- package/dist/components/Badge/Badge.d.ts.map +0 -1
- package/dist/components/Badge/Badge.types.d.ts +0 -32
- package/dist/components/Badge/Badge.types.d.ts.map +0 -1
- package/dist/components/Button/Button.d.ts +0 -84
- package/dist/components/Button/Button.d.ts.map +0 -1
- package/dist/components/Button/Button.types.d.ts +0 -162
- package/dist/components/Button/Button.types.d.ts.map +0 -1
- package/dist/components/Button/icons.d.ts +0 -27
- package/dist/components/Button/icons.d.ts.map +0 -1
- package/dist/components/Button/index.d.ts +0 -4
- package/dist/components/Button/index.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.d.ts +0 -31
- package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.types.d.ts +0 -53
- package/dist/components/Checkbox/Checkbox.types.d.ts.map +0 -1
- package/dist/components/DescriptionList/DescriptionList.d.ts +0 -38
- package/dist/components/DescriptionList/DescriptionList.d.ts.map +0 -1
- package/dist/components/DescriptionList/DescriptionList.types.d.ts +0 -27
- package/dist/components/DescriptionList/DescriptionList.types.d.ts.map +0 -1
- package/dist/components/Divider/Divider.d.ts +0 -33
- package/dist/components/Divider/Divider.d.ts.map +0 -1
- package/dist/components/Divider/Divider.types.d.ts +0 -22
- package/dist/components/Divider/Divider.types.d.ts.map +0 -1
- package/dist/components/Dropdown/Dropdown.d.ts +0 -66
- package/dist/components/Dropdown/Dropdown.d.ts.map +0 -1
- package/dist/components/Dropdown/Dropdown.types.d.ts +0 -124
- package/dist/components/Dropdown/Dropdown.types.d.ts.map +0 -1
- package/dist/components/Dropdown/icons.d.ts +0 -10
- package/dist/components/Dropdown/icons.d.ts.map +0 -1
- package/dist/components/Dropdown/index.d.ts +0 -4
- package/dist/components/Dropdown/index.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts +0 -101
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts +0 -116
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/icons.d.ts +0 -19
- package/dist/components/DropdownItemCollapsible/icons.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/index.d.ts +0 -9
- package/dist/components/DropdownItemCollapsible/index.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts +0 -75
- package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts +0 -85
- package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/icons.d.ts +0 -48
- package/dist/components/DropdownItemHeading/icons.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/index.d.ts +0 -4
- package/dist/components/DropdownItemHeading/index.d.ts.map +0 -1
- package/dist/components/Input/Input.d.ts +0 -40
- package/dist/components/Input/Input.d.ts.map +0 -1
- package/dist/components/Input/Input.types.d.ts +0 -71
- package/dist/components/Input/Input.types.d.ts.map +0 -1
- package/dist/components/Input/icons.d.ts +0 -15
- package/dist/components/Input/icons.d.ts.map +0 -1
- package/dist/components/Input/index.d.ts +0 -3
- package/dist/components/Input/index.d.ts.map +0 -1
- package/dist/components/LoginView/LoginView.d.ts +0 -36
- package/dist/components/LoginView/LoginView.d.ts.map +0 -1
- package/dist/components/LoginView/LoginView.types.d.ts +0 -46
- package/dist/components/LoginView/LoginView.types.d.ts.map +0 -1
- package/dist/components/LoginView/icons.d.ts +0 -18
- package/dist/components/LoginView/icons.d.ts.map +0 -1
- package/dist/components/LoginView/index.d.ts +0 -4
- package/dist/components/LoginView/index.d.ts.map +0 -1
- package/dist/components/Navbar/Navbar.d.ts +0 -63
- package/dist/components/Navbar/Navbar.d.ts.map +0 -1
- package/dist/components/Navbar/Navbar.types.d.ts +0 -194
- package/dist/components/Navbar/Navbar.types.d.ts.map +0 -1
- package/dist/components/Navbar/icons.d.ts +0 -12
- package/dist/components/Navbar/icons.d.ts.map +0 -1
- package/dist/components/Navbar/index.d.ts +0 -4
- package/dist/components/Navbar/index.d.ts.map +0 -1
- package/dist/components/NavigationBar/NavigationBar.d.ts +0 -75
- package/dist/components/NavigationBar/NavigationBar.d.ts.map +0 -1
- package/dist/components/NavigationBar/NavigationBar.types.d.ts +0 -63
- package/dist/components/NavigationBar/NavigationBar.types.d.ts.map +0 -1
- package/dist/components/NavigationBar/index.d.ts +0 -3
- package/dist/components/NavigationBar/index.d.ts.map +0 -1
- package/dist/components/NavigationRail/NavigationRail.d.ts +0 -7
- package/dist/components/NavigationRail/NavigationRail.d.ts.map +0 -1
- package/dist/components/NavigationRail/NavigationRail.types.d.ts +0 -92
- package/dist/components/NavigationRail/NavigationRail.types.d.ts.map +0 -1
- package/dist/components/NavigationRail/index.d.ts +0 -3
- package/dist/components/NavigationRail/index.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts +0 -122
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts +0 -139
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/icons.d.ts +0 -33
- package/dist/components/NavigationRailCommercial/icons.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/index.d.ts +0 -4
- package/dist/components/NavigationRailCommercial/index.d.ts.map +0 -1
- package/dist/components/NavigationRailItem/NavigationRailItem.d.ts +0 -90
- package/dist/components/NavigationRailItem/NavigationRailItem.d.ts.map +0 -1
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts +0 -162
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts.map +0 -1
- package/dist/components/NavigationRailItem/index.d.ts +0 -3
- package/dist/components/NavigationRailItem/index.d.ts.map +0 -1
- package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts +0 -124
- package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts.map +0 -1
- package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts +0 -154
- package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts.map +0 -1
- package/dist/components/NavigationRailPanel/index.d.ts +0 -3
- package/dist/components/NavigationRailPanel/index.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts +0 -99
- package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts +0 -152
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/icons.d.ts +0 -44
- package/dist/components/NavigationRailTypes/icons.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/index.d.ts +0 -4
- package/dist/components/NavigationRailTypes/index.d.ts.map +0 -1
- package/dist/components/Notification/Notification.d.ts +0 -52
- package/dist/components/Notification/Notification.d.ts.map +0 -1
- package/dist/components/Notification/Notification.types.d.ts +0 -138
- package/dist/components/Notification/Notification.types.d.ts.map +0 -1
- package/dist/components/Notification/index.d.ts +0 -3
- package/dist/components/Notification/index.d.ts.map +0 -1
- package/dist/components/POSConvention/POSConvention.d.ts +0 -55
- package/dist/components/POSConvention/POSConvention.d.ts.map +0 -1
- package/dist/components/POSConvention/POSConvention.types.d.ts +0 -37
- package/dist/components/POSConvention/POSConvention.types.d.ts.map +0 -1
- package/dist/components/POSConvention/icons.d.ts +0 -21
- package/dist/components/POSConvention/icons.d.ts.map +0 -1
- package/dist/components/POSConvention/index.d.ts +0 -4
- package/dist/components/POSConvention/index.d.ts.map +0 -1
- package/dist/components/POSLocationButton/POSLocationButton.d.ts +0 -73
- package/dist/components/POSLocationButton/POSLocationButton.d.ts.map +0 -1
- package/dist/components/POSLocationButton/POSLocationButton.types.d.ts +0 -75
- package/dist/components/POSLocationButton/POSLocationButton.types.d.ts.map +0 -1
- package/dist/components/POSLocationButton/icons.d.ts +0 -37
- package/dist/components/POSLocationButton/icons.d.ts.map +0 -1
- package/dist/components/POSLocationButton/index.d.ts +0 -4
- package/dist/components/POSLocationButton/index.d.ts.map +0 -1
- package/dist/components/POSNumberButton/POSNumberButton.d.ts +0 -61
- package/dist/components/POSNumberButton/POSNumberButton.d.ts.map +0 -1
- package/dist/components/POSNumberButton/POSNumberButton.types.d.ts +0 -43
- package/dist/components/POSNumberButton/POSNumberButton.types.d.ts.map +0 -1
- package/dist/components/POSNumberButton/index.d.ts +0 -3
- package/dist/components/POSNumberButton/index.d.ts.map +0 -1
- package/dist/components/POSProductButton/POSProductButton.d.ts +0 -59
- package/dist/components/POSProductButton/POSProductButton.d.ts.map +0 -1
- package/dist/components/POSProductButton/POSProductButton.types.d.ts +0 -40
- package/dist/components/POSProductButton/POSProductButton.types.d.ts.map +0 -1
- package/dist/components/POSProductButton/index.d.ts +0 -3
- package/dist/components/POSProductButton/index.d.ts.map +0 -1
- package/dist/components/POSProductCard/POSProductCard.d.ts +0 -68
- package/dist/components/POSProductCard/POSProductCard.d.ts.map +0 -1
- package/dist/components/POSProductCard/POSProductCard.types.d.ts +0 -67
- package/dist/components/POSProductCard/POSProductCard.types.d.ts.map +0 -1
- package/dist/components/POSProductCard/icons.d.ts +0 -10
- package/dist/components/POSProductCard/icons.d.ts.map +0 -1
- package/dist/components/POSProductCard/index.d.ts +0 -3
- package/dist/components/POSProductCard/index.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts +0 -57
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts +0 -85
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/icons.d.ts +0 -9
- package/dist/components/POSProductSidebarItems/icons.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/index.d.ts +0 -4
- package/dist/components/POSProductSidebarItems/index.d.ts.map +0 -1
- package/dist/components/POSTable/POSTable.d.ts +0 -75
- package/dist/components/POSTable/POSTable.d.ts.map +0 -1
- package/dist/components/POSTable/POSTable.types.d.ts +0 -71
- package/dist/components/POSTable/POSTable.types.d.ts.map +0 -1
- package/dist/components/POSTable/index.d.ts +0 -3
- package/dist/components/POSTable/index.d.ts.map +0 -1
- package/dist/components/Pagination/Pagination.d.ts +0 -29
- package/dist/components/Pagination/Pagination.d.ts.map +0 -1
- package/dist/components/Pagination/Pagination.types.d.ts +0 -79
- package/dist/components/Pagination/Pagination.types.d.ts.map +0 -1
- package/dist/components/Pagination/icons.d.ts +0 -18
- package/dist/components/Pagination/icons.d.ts.map +0 -1
- package/dist/components/Pagination/index.d.ts +0 -4
- package/dist/components/Pagination/index.d.ts.map +0 -1
- package/dist/components/Quantity/Quantity.d.ts +0 -38
- package/dist/components/Quantity/Quantity.d.ts.map +0 -1
- package/dist/components/Quantity/Quantity.types.d.ts +0 -59
- package/dist/components/Quantity/Quantity.types.d.ts.map +0 -1
- package/dist/components/Radio/Radio.d.ts +0 -45
- package/dist/components/Radio/Radio.d.ts.map +0 -1
- package/dist/components/Radio/Radio.types.d.ts +0 -115
- package/dist/components/Radio/Radio.types.d.ts.map +0 -1
- package/dist/components/Select/Select.d.ts +0 -37
- package/dist/components/Select/Select.d.ts.map +0 -1
- package/dist/components/Select/Select.types.d.ts +0 -124
- package/dist/components/Select/Select.types.d.ts.map +0 -1
- package/dist/components/Select/icons.d.ts +0 -20
- package/dist/components/Select/icons.d.ts.map +0 -1
- package/dist/components/Select/index.d.ts +0 -4
- package/dist/components/Select/index.d.ts.map +0 -1
- package/dist/components/SignUpView/SignUpView.d.ts +0 -38
- package/dist/components/SignUpView/SignUpView.d.ts.map +0 -1
- package/dist/components/SignUpView/SignUpView.types.d.ts +0 -51
- package/dist/components/SignUpView/SignUpView.types.d.ts.map +0 -1
- package/dist/components/SignUpView/icons.d.ts +0 -18
- package/dist/components/SignUpView/icons.d.ts.map +0 -1
- package/dist/components/SignUpView/index.d.ts +0 -4
- package/dist/components/SignUpView/index.d.ts.map +0 -1
- package/dist/components/Switch/Switch.d.ts +0 -46
- package/dist/components/Switch/Switch.d.ts.map +0 -1
- package/dist/components/Switch/Switch.types.d.ts +0 -58
- package/dist/components/Switch/Switch.types.d.ts.map +0 -1
- package/dist/components/Table/Table.d.ts +0 -64
- package/dist/components/Table/Table.d.ts.map +0 -1
- package/dist/components/Table/Table.types.d.ts +0 -173
- package/dist/components/Table/Table.types.d.ts.map +0 -1
- package/dist/components/Table/index.d.ts +0 -3
- package/dist/components/Table/index.d.ts.map +0 -1
- package/dist/components/Tabs/Tabs.d.ts +0 -76
- package/dist/components/Tabs/Tabs.d.ts.map +0 -1
- package/dist/components/Tabs/Tabs.types.d.ts +0 -107
- package/dist/components/Tabs/Tabs.types.d.ts.map +0 -1
- package/dist/components/Tabs/icons.d.ts +0 -45
- package/dist/components/Tabs/icons.d.ts.map +0 -1
- package/dist/components/Tabs/index.d.ts +0 -4
- package/dist/components/Tabs/index.d.ts.map +0 -1
- package/dist/components/Textarea/Textarea.d.ts +0 -38
- package/dist/components/Textarea/Textarea.d.ts.map +0 -1
- package/dist/components/Textarea/Textarea.types.d.ts +0 -46
- package/dist/components/Textarea/Textarea.types.d.ts.map +0 -1
- package/dist/context/ThemeContext.d.ts +0 -46
- package/dist/context/ThemeContext.d.ts.map +0 -1
- package/dist/context/index.d.ts +0 -2
- package/dist/context/index.d.ts.map +0 -1
- package/dist/index.d.ts +0 -88
- package/dist/index.d.ts.map +0 -1
- package/dist/siesa-ui-kit.cjs +0 -1474
- package/dist/siesa-ui-kit.cjs.map +0 -1
- package/dist/siesa-ui-kit.mjs +0 -9580
- package/dist/siesa-ui-kit.mjs.map +0 -1
- package/dist/views/LayoutCommercial/LayoutCommercial.d.ts +0 -48
- package/dist/views/LayoutCommercial/LayoutCommercial.d.ts.map +0 -1
- package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts +0 -49
- package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts.map +0 -1
- package/dist/views/LayoutCommercial/index.d.ts +0 -3
- package/dist/views/LayoutCommercial/index.d.ts.map +0 -1
- package/dist/views/ListView/ListView.d.ts +0 -47
- package/dist/views/ListView/ListView.d.ts.map +0 -1
- package/dist/views/ListView/ListView.types.d.ts +0 -177
- package/dist/views/ListView/ListView.types.d.ts.map +0 -1
- package/dist/views/ListView/icons.d.ts +0 -60
- package/dist/views/ListView/icons.d.ts.map +0 -1
- package/dist/views/ListView/index.d.ts +0 -3
- package/dist/views/ListView/index.d.ts.map +0 -1
- package/dist/views/LoginView/LoginView.d.ts +0 -36
- package/dist/views/LoginView/LoginView.d.ts.map +0 -1
- package/dist/views/LoginView/LoginView.types.d.ts +0 -46
- package/dist/views/LoginView/LoginView.types.d.ts.map +0 -1
- package/dist/views/LoginView/icons.d.ts +0 -18
- package/dist/views/LoginView/icons.d.ts.map +0 -1
- package/dist/views/LoginView/index.d.ts +0 -4
- package/dist/views/LoginView/index.d.ts.map +0 -1
- package/dist/views/ProductsView/ProductsView.d.ts +0 -56
- package/dist/views/ProductsView/ProductsView.d.ts.map +0 -1
- package/dist/views/ProductsView/ProductsView.types.d.ts +0 -184
- package/dist/views/ProductsView/ProductsView.types.d.ts.map +0 -1
- package/dist/views/ProductsView/icons.d.ts +0 -12
- package/dist/views/ProductsView/icons.d.ts.map +0 -1
- package/dist/views/ProductsView/index.d.ts +0 -3
- package/dist/views/ProductsView/index.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts +0 -34
- package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts +0 -50
- package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/icons.d.ts +0 -9
- package/dist/views/RecoverPasswordView/icons.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/index.d.ts +0 -3
- package/dist/views/RecoverPasswordView/index.d.ts.map +0 -1
- package/dist/views/SignUpView/SignUpView.d.ts +0 -38
- package/dist/views/SignUpView/SignUpView.d.ts.map +0 -1
- package/dist/views/SignUpView/SignUpView.types.d.ts +0 -51
- package/dist/views/SignUpView/SignUpView.types.d.ts.map +0 -1
- package/dist/views/SignUpView/icons.d.ts +0 -18
- package/dist/views/SignUpView/icons.d.ts.map +0 -1
- package/dist/views/SignUpView/index.d.ts +0 -4
- package/dist/views/SignUpView/index.d.ts.map +0 -1
- package/dist/views/TableLayoutView/TableLayoutView.d.ts +0 -46
- package/dist/views/TableLayoutView/TableLayoutView.d.ts.map +0 -1
- package/dist/views/TableLayoutView/TableLayoutView.types.d.ts +0 -170
- package/dist/views/TableLayoutView/TableLayoutView.types.d.ts.map +0 -1
- package/dist/views/TableLayoutView/icons.d.ts +0 -27
- package/dist/views/TableLayoutView/icons.d.ts.map +0 -1
- package/dist/views/TableLayoutView/index.d.ts +0 -3
- package/dist/views/TableLayoutView/index.d.ts.map +0 -1
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +0 -317
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +0 -307
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +0 -136
- package/src/components/DropdownItemCollapsible/README.md +0 -264
- package/src/components/DropdownItemCollapsible/icons.tsx +0 -57
- package/src/components/DropdownItemCollapsible/index.ts +0 -12
- package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +0 -386
- package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +0 -216
- package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +0 -93
- package/src/components/DropdownItemHeading/README.md +0 -573
- package/src/components/DropdownItemHeading/icons.tsx +0 -125
- package/src/components/DropdownItemHeading/index.ts +0 -3
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.stories.tsx +0 -464
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.tsx +0 -301
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.types.ts +0 -162
- package/src/components/NavigationRailCommercial/README.md +0 -251
- package/src/components/NavigationRailCommercial/icons.tsx +0 -54
- package/src/components/NavigationRailCommercial/index.ts +0 -6
- package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +0 -667
- package/src/components/NavigationRailItem/NavigationRailItem.tsx +0 -314
- package/src/components/NavigationRailItem/NavigationRailItem.types.ts +0 -175
- package/src/components/NavigationRailItem/README.md +0 -476
- package/src/components/NavigationRailItem/index.ts +0 -2
- package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +0 -462
- package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +0 -332
- package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +0 -178
- package/src/components/NavigationRailPanel/README.md +0 -461
- package/src/components/NavigationRailPanel/index.ts +0 -6
- package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +0 -682
- package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +0 -363
- package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +0 -178
- package/src/components/NavigationRailTypes/README.md +0 -573
- package/src/components/NavigationRailTypes/icons.tsx +0 -76
- package/src/components/NavigationRailTypes/index.ts +0 -7
- package/src/views/LayoutCommercial/LayoutCommercial.stories.tsx +0 -374
- package/src/views/LayoutCommercial/LayoutCommercial.tsx +0 -125
- package/src/views/LayoutCommercial/LayoutCommercial.types.ts +0 -54
- package/src/views/LayoutCommercial/README.md +0 -286
- package/src/views/LayoutCommercial/index.ts +0 -2
- package/src/views/ListView/ListView.stories.tsx +0 -329
- package/src/views/ListView/ListView.tsx +0 -570
- package/src/views/ListView/ListView.types.ts +0 -211
- package/src/views/ListView/icons.tsx +0 -282
- package/src/views/ListView/index.ts +0 -11
- package/src/views/LoginView/LoginView.stories.tsx +0 -148
- package/src/views/LoginView/LoginView.tsx +0 -426
- package/src/views/LoginView/LoginView.types.ts +0 -52
- package/src/views/LoginView/README.md +0 -396
- package/src/views/LoginView/icons.tsx +0 -85
- package/src/views/LoginView/index.ts +0 -3
- package/src/views/SignUpView/SignUpView.stories.tsx +0 -129
- package/src/views/SignUpView/SignUpView.tsx +0 -503
- package/src/views/SignUpView/SignUpView.types.ts +0 -58
- package/src/views/SignUpView/icons.tsx +0 -71
- package/src/views/SignUpView/index.ts +0 -3
|
@@ -1,246 +1,246 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { NavigationBarProps, NavigationBarItem } from './NavigationBar.types';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* NavigationBar del sistema de diseño Siesa
|
|
6
|
-
*
|
|
7
|
-
* **Componente de navegación inferior (Bottom Navigation Bar) para móvil.**
|
|
8
|
-
* Permite al usuario navegar entre vistas principales de la aplicación.
|
|
9
|
-
* Diseñado para contener 3-5 ítems de navegación.
|
|
10
|
-
*
|
|
11
|
-
* **🔄 Navegación Responsive:**
|
|
12
|
-
* El NavigationRail (navegación lateral vertical) se convierte en NavigationBar
|
|
13
|
-
* (navegación inferior horizontal) cuando la pantalla es móvil. Esta es una
|
|
14
|
-
* práctica recomendada de UX para aprovechar mejor el espacio en diferentes
|
|
15
|
-
* dispositivos:
|
|
16
|
-
* - **Desktop/Tablet**: Usar NavigationRail (lateral)
|
|
17
|
-
* - **Mobile**: Usar NavigationBar (inferior)
|
|
18
|
-
*
|
|
19
|
-
* **Características:**
|
|
20
|
-
* - Soporta hasta 5 ítems de navegación (recomendado: 3-5)
|
|
21
|
-
* - Cada ítem tiene icono + label
|
|
22
|
-
* - Indicador visual de ítem activo (fondo azul claro)
|
|
23
|
-
* - Estados: active, hover, disabled
|
|
24
|
-
* - Dark mode completo
|
|
25
|
-
* - Accesibilidad con ARIA labels
|
|
26
|
-
*
|
|
27
|
-
* **Mejores prácticas implementadas:**
|
|
28
|
-
* - Orden de modificadores: {responsive}:{dark}:{state}:{utility}
|
|
29
|
-
* - Dark mode con estrategia 'class' (darkMode: 'class')
|
|
30
|
-
* - Tokens de color consistentes con la documentación
|
|
31
|
-
* - Type safety con TypeScript estricto
|
|
32
|
-
* - Tipografía Label XXSmall (10px Bold) según sistema de diseño
|
|
33
|
-
* - Iconos de 16x16px según especificaciones de Figma
|
|
34
|
-
*
|
|
35
|
-
* @see docs/colors.md - Sistema de colores
|
|
36
|
-
* @see docs/typography.md - Sistema tipográfico (Label XXSmall)
|
|
37
|
-
* @see docs/spacing.md - Sistema de espaciado
|
|
38
|
-
* @see NavigationRail - Componente de navegación lateral para desktop
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* ```tsx
|
|
42
|
-
* const items = [
|
|
43
|
-
* { id: 'home', icon: <HomeIcon />, label: 'Inicio', active: true },
|
|
44
|
-
* { id: 'search', icon: <SearchIcon />, label: 'Buscar' },
|
|
45
|
-
* { id: 'profile', icon: <ProfileIcon />, label: 'Perfil' },
|
|
46
|
-
* ];
|
|
47
|
-
*
|
|
48
|
-
* <NavigationBar
|
|
49
|
-
* items={items}
|
|
50
|
-
* activeItemId="home"
|
|
51
|
-
* onItemClick={(id) => console.log('Clicked:', id)}
|
|
52
|
-
* />
|
|
53
|
-
* ```
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* // Patrón responsive: NavigationRail en desktop, NavigationBar en mobile
|
|
57
|
-
* ```tsx
|
|
58
|
-
* function ResponsiveNav() {
|
|
59
|
-
* return (
|
|
60
|
-
* <>
|
|
61
|
-
* // NavigationRail para desktop/tablet
|
|
62
|
-
* <div className="hidden md:block">
|
|
63
|
-
* <NavigationRail items={items} />
|
|
64
|
-
* </div>
|
|
65
|
-
*
|
|
66
|
-
* // NavigationBar para móvil
|
|
67
|
-
* <div className="md:hidden fixed bottom-0 left-0 right-0 z-50">
|
|
68
|
-
* <NavigationBar items={items} />
|
|
69
|
-
* </div>
|
|
70
|
-
* </>
|
|
71
|
-
* );
|
|
72
|
-
* }
|
|
73
|
-
* ```
|
|
74
|
-
*/
|
|
75
|
-
export const NavigationBar: React.FC<NavigationBarProps> = ({
|
|
76
|
-
items,
|
|
77
|
-
activeItemId,
|
|
78
|
-
onItemClick,
|
|
79
|
-
className = '',
|
|
80
|
-
ariaLabel = 'Navegación Principal',
|
|
81
|
-
}) => {
|
|
82
|
-
// ===== VALIDACIÓN: Máximo 5 ítems =====
|
|
83
|
-
if (items.length > 5) {
|
|
84
|
-
console.warn('NavigationBar: Se recomienda un máximo de 5 ítems para mejor UX');
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// ===== HANDLER DE CLICK =====
|
|
88
|
-
const handleItemClick = (item: NavigationBarItem) => {
|
|
89
|
-
if (item.disabled) return;
|
|
90
|
-
|
|
91
|
-
// Llamar onClick del ítem individual si existe
|
|
92
|
-
if (item.onClick) {
|
|
93
|
-
item.onClick(item.id);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Llamar onItemClick global si existe
|
|
97
|
-
if (onItemClick) {
|
|
98
|
-
onItemClick(item.id);
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
// ===== RENDERIZAR ÍTEM =====
|
|
103
|
-
const renderItem = (item: NavigationBarItem) => {
|
|
104
|
-
const isActive = item.active || item.id === activeItemId;
|
|
105
|
-
|
|
106
|
-
// ===== CLASES DEL CONTENEDOR DEL ÍTEM =====
|
|
107
|
-
const itemContainerClasses = `
|
|
108
|
-
flex-1
|
|
109
|
-
flex
|
|
110
|
-
flex-col
|
|
111
|
-
items-center
|
|
112
|
-
gap-1
|
|
113
|
-
px-0.5
|
|
114
|
-
py-0
|
|
115
|
-
min-w-0
|
|
116
|
-
cursor-pointer
|
|
117
|
-
transition-all
|
|
118
|
-
duration-150
|
|
119
|
-
${item.disabled ? 'opacity-50 cursor-not-allowed pointer-events-none' : ''}
|
|
120
|
-
`
|
|
121
|
-
.replace(/\s+/g, ' ')
|
|
122
|
-
.trim();
|
|
123
|
-
|
|
124
|
-
// ===== CLASES DEL ICON CONTAINER =====
|
|
125
|
-
// Fondo azul claro cuando está activo (rgb(219, 238, 254) = #dbeefe = primary-custom-100)
|
|
126
|
-
// En dark mode usa el mismo color opaco según Figma
|
|
127
|
-
const iconContainerClasses = `
|
|
128
|
-
flex
|
|
129
|
-
items-center
|
|
130
|
-
justify-center
|
|
131
|
-
px-4
|
|
132
|
-
py-1
|
|
133
|
-
rounded-full
|
|
134
|
-
overflow-hidden
|
|
135
|
-
transition-all
|
|
136
|
-
duration-150
|
|
137
|
-
${
|
|
138
|
-
isActive
|
|
139
|
-
? 'bg-primary-custom-100 dark:bg-primary-custom-100'
|
|
140
|
-
: 'bg-transparent hover:bg-hover-overlay dark:hover:bg-hover-overlay-dark'
|
|
141
|
-
}
|
|
142
|
-
`
|
|
143
|
-
.replace(/\s+/g, ' ')
|
|
144
|
-
.trim();
|
|
145
|
-
|
|
146
|
-
// ===== CLASES DEL LABEL =====
|
|
147
|
-
// Label XXSmall: 10px Bold, line-height 12px (según typography.md y Figma)
|
|
148
|
-
const labelClasses = `
|
|
149
|
-
font-['SiesaBT:Bold',sans-serif]
|
|
150
|
-
text-[10px]
|
|
151
|
-
leading-[12px]
|
|
152
|
-
font-bold
|
|
153
|
-
text-center
|
|
154
|
-
w-full
|
|
155
|
-
min-w-0
|
|
156
|
-
text-content-primary
|
|
157
|
-
dark:text-dark-content-primary
|
|
158
|
-
transition-colors
|
|
159
|
-
duration-150
|
|
160
|
-
`
|
|
161
|
-
.replace(/\s+/g, ' ')
|
|
162
|
-
.trim();
|
|
163
|
-
|
|
164
|
-
// ===== CLASES DEL ICONO =====
|
|
165
|
-
// Iconos de 16x16px según Figma
|
|
166
|
-
const iconClasses = `
|
|
167
|
-
w-4
|
|
168
|
-
h-4
|
|
169
|
-
shrink-0
|
|
170
|
-
text-content-primary
|
|
171
|
-
dark:text-dark-content-primary
|
|
172
|
-
transition-colors
|
|
173
|
-
duration-150
|
|
174
|
-
`
|
|
175
|
-
.replace(/\s+/g, ' ')
|
|
176
|
-
.trim();
|
|
177
|
-
|
|
178
|
-
return (
|
|
179
|
-
<button
|
|
180
|
-
key={item.id}
|
|
181
|
-
type="button"
|
|
182
|
-
className={itemContainerClasses}
|
|
183
|
-
onClick={() => handleItemClick(item)}
|
|
184
|
-
disabled={item.disabled}
|
|
185
|
-
aria-label={item.ariaLabel || item.label}
|
|
186
|
-
aria-current={isActive ? 'page' : undefined}
|
|
187
|
-
>
|
|
188
|
-
{/* Icon Container */}
|
|
189
|
-
<div className={iconContainerClasses}>
|
|
190
|
-
<span className={iconClasses}>{item.icon}</span>
|
|
191
|
-
</div>
|
|
192
|
-
|
|
193
|
-
{/* Label */}
|
|
194
|
-
<span className={labelClasses}>{item.label}</span>
|
|
195
|
-
</button>
|
|
196
|
-
);
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
// ===== CLASES DEL CONTENEDOR PRINCIPAL =====
|
|
200
|
-
const containerClasses = `
|
|
201
|
-
bg-bg-primary
|
|
202
|
-
dark:bg-dark-bg-primary
|
|
203
|
-
p-4
|
|
204
|
-
w-full
|
|
205
|
-
transition-colors
|
|
206
|
-
duration-150
|
|
207
|
-
`
|
|
208
|
-
.replace(/\s+/g, ' ')
|
|
209
|
-
.trim();
|
|
210
|
-
|
|
211
|
-
// ===== CLASES DEL MENU (Contenedor de ítems) =====
|
|
212
|
-
const menuClasses = `
|
|
213
|
-
flex
|
|
214
|
-
items-start
|
|
215
|
-
justify-center
|
|
216
|
-
w-full
|
|
217
|
-
`
|
|
218
|
-
.replace(/\s+/g, ' ')
|
|
219
|
-
.trim();
|
|
220
|
-
|
|
221
|
-
// ===== CLASES DEL DESTINATIONS (Contenedor con gap) =====
|
|
222
|
-
const destinationsClasses = `
|
|
223
|
-
flex-1
|
|
224
|
-
flex
|
|
225
|
-
items-start
|
|
226
|
-
gap-2
|
|
227
|
-
min-h-0
|
|
228
|
-
min-w-0
|
|
229
|
-
`
|
|
230
|
-
.replace(/\s+/g, ' ')
|
|
231
|
-
.trim();
|
|
232
|
-
|
|
233
|
-
return (
|
|
234
|
-
<nav
|
|
235
|
-
className={`${containerClasses} ${className}`.trim()}
|
|
236
|
-
role="navigation"
|
|
237
|
-
aria-label={ariaLabel}
|
|
238
|
-
>
|
|
239
|
-
<div className={menuClasses}>
|
|
240
|
-
<div className={destinationsClasses}>
|
|
241
|
-
{items.map((item) => renderItem(item))}
|
|
242
|
-
</div>
|
|
243
|
-
</div>
|
|
244
|
-
</nav>
|
|
245
|
-
);
|
|
246
|
-
};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { NavigationBarProps, NavigationBarItem } from './NavigationBar.types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* NavigationBar del sistema de diseño Siesa
|
|
6
|
+
*
|
|
7
|
+
* **Componente de navegación inferior (Bottom Navigation Bar) para móvil.**
|
|
8
|
+
* Permite al usuario navegar entre vistas principales de la aplicación.
|
|
9
|
+
* Diseñado para contener 3-5 ítems de navegación.
|
|
10
|
+
*
|
|
11
|
+
* **🔄 Navegación Responsive:**
|
|
12
|
+
* El NavigationRail (navegación lateral vertical) se convierte en NavigationBar
|
|
13
|
+
* (navegación inferior horizontal) cuando la pantalla es móvil. Esta es una
|
|
14
|
+
* práctica recomendada de UX para aprovechar mejor el espacio en diferentes
|
|
15
|
+
* dispositivos:
|
|
16
|
+
* - **Desktop/Tablet**: Usar NavigationRail (lateral)
|
|
17
|
+
* - **Mobile**: Usar NavigationBar (inferior)
|
|
18
|
+
*
|
|
19
|
+
* **Características:**
|
|
20
|
+
* - Soporta hasta 5 ítems de navegación (recomendado: 3-5)
|
|
21
|
+
* - Cada ítem tiene icono + label
|
|
22
|
+
* - Indicador visual de ítem activo (fondo azul claro)
|
|
23
|
+
* - Estados: active, hover, disabled
|
|
24
|
+
* - Dark mode completo
|
|
25
|
+
* - Accesibilidad con ARIA labels
|
|
26
|
+
*
|
|
27
|
+
* **Mejores prácticas implementadas:**
|
|
28
|
+
* - Orden de modificadores: {responsive}:{dark}:{state}:{utility}
|
|
29
|
+
* - Dark mode con estrategia 'class' (darkMode: 'class')
|
|
30
|
+
* - Tokens de color consistentes con la documentación
|
|
31
|
+
* - Type safety con TypeScript estricto
|
|
32
|
+
* - Tipografía Label XXSmall (10px Bold) según sistema de diseño
|
|
33
|
+
* - Iconos de 16x16px según especificaciones de Figma
|
|
34
|
+
*
|
|
35
|
+
* @see docs/colors.md - Sistema de colores
|
|
36
|
+
* @see docs/typography.md - Sistema tipográfico (Label XXSmall)
|
|
37
|
+
* @see docs/spacing.md - Sistema de espaciado
|
|
38
|
+
* @see NavigationRail - Componente de navegación lateral para desktop
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```tsx
|
|
42
|
+
* const items = [
|
|
43
|
+
* { id: 'home', icon: <HomeIcon />, label: 'Inicio', active: true },
|
|
44
|
+
* { id: 'search', icon: <SearchIcon />, label: 'Buscar' },
|
|
45
|
+
* { id: 'profile', icon: <ProfileIcon />, label: 'Perfil' },
|
|
46
|
+
* ];
|
|
47
|
+
*
|
|
48
|
+
* <NavigationBar
|
|
49
|
+
* items={items}
|
|
50
|
+
* activeItemId="home"
|
|
51
|
+
* onItemClick={(id) => console.log('Clicked:', id)}
|
|
52
|
+
* />
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* // Patrón responsive: NavigationRail en desktop, NavigationBar en mobile
|
|
57
|
+
* ```tsx
|
|
58
|
+
* function ResponsiveNav() {
|
|
59
|
+
* return (
|
|
60
|
+
* <>
|
|
61
|
+
* // NavigationRail para desktop/tablet
|
|
62
|
+
* <div className="hidden md:block">
|
|
63
|
+
* <NavigationRail items={items} />
|
|
64
|
+
* </div>
|
|
65
|
+
*
|
|
66
|
+
* // NavigationBar para móvil
|
|
67
|
+
* <div className="md:hidden fixed bottom-0 left-0 right-0 z-50">
|
|
68
|
+
* <NavigationBar items={items} />
|
|
69
|
+
* </div>
|
|
70
|
+
* </>
|
|
71
|
+
* );
|
|
72
|
+
* }
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
export const NavigationBar: React.FC<NavigationBarProps> = ({
|
|
76
|
+
items,
|
|
77
|
+
activeItemId,
|
|
78
|
+
onItemClick,
|
|
79
|
+
className = '',
|
|
80
|
+
ariaLabel = 'Navegación Principal',
|
|
81
|
+
}) => {
|
|
82
|
+
// ===== VALIDACIÓN: Máximo 5 ítems =====
|
|
83
|
+
if (items.length > 5) {
|
|
84
|
+
console.warn('NavigationBar: Se recomienda un máximo de 5 ítems para mejor UX');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// ===== HANDLER DE CLICK =====
|
|
88
|
+
const handleItemClick = (item: NavigationBarItem) => {
|
|
89
|
+
if (item.disabled) return;
|
|
90
|
+
|
|
91
|
+
// Llamar onClick del ítem individual si existe
|
|
92
|
+
if (item.onClick) {
|
|
93
|
+
item.onClick(item.id);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Llamar onItemClick global si existe
|
|
97
|
+
if (onItemClick) {
|
|
98
|
+
onItemClick(item.id);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// ===== RENDERIZAR ÍTEM =====
|
|
103
|
+
const renderItem = (item: NavigationBarItem) => {
|
|
104
|
+
const isActive = item.active || item.id === activeItemId;
|
|
105
|
+
|
|
106
|
+
// ===== CLASES DEL CONTENEDOR DEL ÍTEM =====
|
|
107
|
+
const itemContainerClasses = `
|
|
108
|
+
flex-1
|
|
109
|
+
flex
|
|
110
|
+
flex-col
|
|
111
|
+
items-center
|
|
112
|
+
gap-1
|
|
113
|
+
px-0.5
|
|
114
|
+
py-0
|
|
115
|
+
min-w-0
|
|
116
|
+
cursor-pointer
|
|
117
|
+
transition-all
|
|
118
|
+
duration-150
|
|
119
|
+
${item.disabled ? 'opacity-50 cursor-not-allowed pointer-events-none' : ''}
|
|
120
|
+
`
|
|
121
|
+
.replace(/\s+/g, ' ')
|
|
122
|
+
.trim();
|
|
123
|
+
|
|
124
|
+
// ===== CLASES DEL ICON CONTAINER =====
|
|
125
|
+
// Fondo azul claro cuando está activo (rgb(219, 238, 254) = #dbeefe = primary-custom-100)
|
|
126
|
+
// En dark mode usa el mismo color opaco según Figma
|
|
127
|
+
const iconContainerClasses = `
|
|
128
|
+
flex
|
|
129
|
+
items-center
|
|
130
|
+
justify-center
|
|
131
|
+
px-4
|
|
132
|
+
py-1
|
|
133
|
+
rounded-full
|
|
134
|
+
overflow-hidden
|
|
135
|
+
transition-all
|
|
136
|
+
duration-150
|
|
137
|
+
${
|
|
138
|
+
isActive
|
|
139
|
+
? 'bg-primary-custom-100 dark:bg-primary-custom-100'
|
|
140
|
+
: 'bg-transparent hover:bg-hover-overlay dark:hover:bg-hover-overlay-dark'
|
|
141
|
+
}
|
|
142
|
+
`
|
|
143
|
+
.replace(/\s+/g, ' ')
|
|
144
|
+
.trim();
|
|
145
|
+
|
|
146
|
+
// ===== CLASES DEL LABEL =====
|
|
147
|
+
// Label XXSmall: 10px Bold, line-height 12px (según typography.md y Figma)
|
|
148
|
+
const labelClasses = `
|
|
149
|
+
font-['SiesaBT:Bold',sans-serif]
|
|
150
|
+
text-[10px]
|
|
151
|
+
leading-[12px]
|
|
152
|
+
font-bold
|
|
153
|
+
text-center
|
|
154
|
+
w-full
|
|
155
|
+
min-w-0
|
|
156
|
+
text-content-primary
|
|
157
|
+
dark:text-dark-content-primary
|
|
158
|
+
transition-colors
|
|
159
|
+
duration-150
|
|
160
|
+
`
|
|
161
|
+
.replace(/\s+/g, ' ')
|
|
162
|
+
.trim();
|
|
163
|
+
|
|
164
|
+
// ===== CLASES DEL ICONO =====
|
|
165
|
+
// Iconos de 16x16px según Figma
|
|
166
|
+
const iconClasses = `
|
|
167
|
+
w-4
|
|
168
|
+
h-4
|
|
169
|
+
shrink-0
|
|
170
|
+
text-content-primary
|
|
171
|
+
dark:text-dark-content-primary
|
|
172
|
+
transition-colors
|
|
173
|
+
duration-150
|
|
174
|
+
`
|
|
175
|
+
.replace(/\s+/g, ' ')
|
|
176
|
+
.trim();
|
|
177
|
+
|
|
178
|
+
return (
|
|
179
|
+
<button
|
|
180
|
+
key={item.id}
|
|
181
|
+
type="button"
|
|
182
|
+
className={itemContainerClasses}
|
|
183
|
+
onClick={() => handleItemClick(item)}
|
|
184
|
+
disabled={item.disabled}
|
|
185
|
+
aria-label={item.ariaLabel || item.label}
|
|
186
|
+
aria-current={isActive ? 'page' : undefined}
|
|
187
|
+
>
|
|
188
|
+
{/* Icon Container */}
|
|
189
|
+
<div className={iconContainerClasses}>
|
|
190
|
+
<span className={iconClasses}>{item.icon}</span>
|
|
191
|
+
</div>
|
|
192
|
+
|
|
193
|
+
{/* Label */}
|
|
194
|
+
<span className={labelClasses}>{item.label}</span>
|
|
195
|
+
</button>
|
|
196
|
+
);
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
// ===== CLASES DEL CONTENEDOR PRINCIPAL =====
|
|
200
|
+
const containerClasses = `
|
|
201
|
+
bg-bg-primary
|
|
202
|
+
dark:bg-dark-bg-primary
|
|
203
|
+
p-4
|
|
204
|
+
w-full
|
|
205
|
+
transition-colors
|
|
206
|
+
duration-150
|
|
207
|
+
`
|
|
208
|
+
.replace(/\s+/g, ' ')
|
|
209
|
+
.trim();
|
|
210
|
+
|
|
211
|
+
// ===== CLASES DEL MENU (Contenedor de ítems) =====
|
|
212
|
+
const menuClasses = `
|
|
213
|
+
flex
|
|
214
|
+
items-start
|
|
215
|
+
justify-center
|
|
216
|
+
w-full
|
|
217
|
+
`
|
|
218
|
+
.replace(/\s+/g, ' ')
|
|
219
|
+
.trim();
|
|
220
|
+
|
|
221
|
+
// ===== CLASES DEL DESTINATIONS (Contenedor con gap) =====
|
|
222
|
+
const destinationsClasses = `
|
|
223
|
+
flex-1
|
|
224
|
+
flex
|
|
225
|
+
items-start
|
|
226
|
+
gap-2
|
|
227
|
+
min-h-0
|
|
228
|
+
min-w-0
|
|
229
|
+
`
|
|
230
|
+
.replace(/\s+/g, ' ')
|
|
231
|
+
.trim();
|
|
232
|
+
|
|
233
|
+
return (
|
|
234
|
+
<nav
|
|
235
|
+
className={`${containerClasses} ${className}`.trim()}
|
|
236
|
+
role="navigation"
|
|
237
|
+
aria-label={ariaLabel}
|
|
238
|
+
>
|
|
239
|
+
<div className={menuClasses}>
|
|
240
|
+
<div className={destinationsClasses}>
|
|
241
|
+
{items.map((item) => renderItem(item))}
|
|
242
|
+
</div>
|
|
243
|
+
</div>
|
|
244
|
+
</nav>
|
|
245
|
+
);
|
|
246
|
+
};
|
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
import type { ReactNode } from 'react';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Interfaz para un ítem individual del Navigation Bar
|
|
5
|
-
*/
|
|
6
|
-
export interface NavigationBarItem {
|
|
7
|
-
/**
|
|
8
|
-
* Identificador único del ítem
|
|
9
|
-
*/
|
|
10
|
-
id: string;
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Icono del ítem (componente React)
|
|
14
|
-
*/
|
|
15
|
-
icon: ReactNode;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Label del ítem (texto debajo del icono)
|
|
19
|
-
*/
|
|
20
|
-
label: string;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Si el ítem está activo
|
|
24
|
-
* @default false
|
|
25
|
-
*/
|
|
26
|
-
active?: boolean;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Si el ítem está deshabilitado
|
|
30
|
-
* @default false
|
|
31
|
-
*/
|
|
32
|
-
disabled?: boolean;
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Función onClick del ítem
|
|
36
|
-
*/
|
|
37
|
-
onClick?: (id: string) => void;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* Etiqueta accesible para lectores de pantalla
|
|
41
|
-
*/
|
|
42
|
-
ariaLabel?: string;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Props del componente NavigationBar
|
|
47
|
-
*/
|
|
48
|
-
export interface NavigationBarProps {
|
|
49
|
-
/**
|
|
50
|
-
* Lista de ítems del navigation bar (máximo 5 ítems recomendado)
|
|
51
|
-
*/
|
|
52
|
-
items: NavigationBarItem[];
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* ID del ítem actualmente activo
|
|
56
|
-
*/
|
|
57
|
-
activeItemId?: string;
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Función que se ejecuta cuando se hace click en un ítem
|
|
61
|
-
*/
|
|
62
|
-
onItemClick?: (id: string) => void;
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Clases CSS adicionales para el contenedor
|
|
66
|
-
*/
|
|
67
|
-
className?: string;
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Etiqueta accesible para el navigation bar
|
|
71
|
-
* @default 'Navigation Bar'
|
|
72
|
-
*/
|
|
73
|
-
ariaLabel?: string;
|
|
74
|
-
}
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Interfaz para un ítem individual del Navigation Bar
|
|
5
|
+
*/
|
|
6
|
+
export interface NavigationBarItem {
|
|
7
|
+
/**
|
|
8
|
+
* Identificador único del ítem
|
|
9
|
+
*/
|
|
10
|
+
id: string;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Icono del ítem (componente React)
|
|
14
|
+
*/
|
|
15
|
+
icon: ReactNode;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Label del ítem (texto debajo del icono)
|
|
19
|
+
*/
|
|
20
|
+
label: string;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Si el ítem está activo
|
|
24
|
+
* @default false
|
|
25
|
+
*/
|
|
26
|
+
active?: boolean;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Si el ítem está deshabilitado
|
|
30
|
+
* @default false
|
|
31
|
+
*/
|
|
32
|
+
disabled?: boolean;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Función onClick del ítem
|
|
36
|
+
*/
|
|
37
|
+
onClick?: (id: string) => void;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Etiqueta accesible para lectores de pantalla
|
|
41
|
+
*/
|
|
42
|
+
ariaLabel?: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Props del componente NavigationBar
|
|
47
|
+
*/
|
|
48
|
+
export interface NavigationBarProps {
|
|
49
|
+
/**
|
|
50
|
+
* Lista de ítems del navigation bar (máximo 5 ítems recomendado)
|
|
51
|
+
*/
|
|
52
|
+
items: NavigationBarItem[];
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* ID del ítem actualmente activo
|
|
56
|
+
*/
|
|
57
|
+
activeItemId?: string;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Función que se ejecuta cuando se hace click en un ítem
|
|
61
|
+
*/
|
|
62
|
+
onItemClick?: (id: string) => void;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Clases CSS adicionales para el contenedor
|
|
66
|
+
*/
|
|
67
|
+
className?: string;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Etiqueta accesible para el navigation bar
|
|
71
|
+
* @default 'Navigation Bar'
|
|
72
|
+
*/
|
|
73
|
+
ariaLabel?: string;
|
|
74
|
+
}
|