siesa-ui-kit 1.0.5 → 1.0.7
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 +115 -89
- 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/{src/components/Button/index.ts → dist/components/Button/index.d.ts} +4 -3
- 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/{src/components/Dropdown/index.ts → dist/components/Dropdown/index.d.ts} +4 -8
- 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/{src/components/Input/index.ts → dist/components/Input/index.d.ts} +3 -2
- 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/{src/components/LoginView/index.ts → dist/components/LoginView/index.d.ts} +4 -3
- 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/{src/components/NavigationBar/index.ts → dist/components/NavigationBar/index.d.ts} +3 -2
- 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/{src/components/NavigationRail/index.ts → dist/components/NavigationRail/index.d.ts} +3 -2
- 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/{src/components/Notification/index.ts → dist/components/Notification/index.d.ts} +3 -3
- 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/{src/components/POSConvention/POSConvention.types.ts → dist/components/POSConvention/POSConvention.types.d.ts} +37 -38
- 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/{src/components/POSConvention/index.ts → dist/components/POSConvention/index.d.ts} +4 -3
- 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/{src/components/POSNumberButton/index.ts → dist/components/POSNumberButton/index.d.ts} +3 -3
- 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/{src/components/POSProductButton/index.ts → dist/components/POSProductButton/index.d.ts} +3 -2
- 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/{src/components/POSProductCard/index.ts → dist/components/POSProductCard/index.d.ts} +3 -2
- 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/{src/components/POSProductSidebarItems/index.ts → dist/components/POSProductSidebarItems/index.d.ts} +4 -3
- 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/{src/components/Pagination/index.ts → dist/components/Pagination/index.d.ts} +4 -3
- 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/{src/components/Select/index.ts → dist/components/Select/index.d.ts} +4 -3
- 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/{src/components/SignUpView/index.ts → dist/components/SignUpView/index.d.ts} +4 -3
- 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/{src/context/index.ts → dist/context/index.d.ts} +2 -1
- 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 +1273 -0
- package/dist/siesa-ui-kit.cjs.map +1 -0
- package/dist/siesa-ui-kit.mjs +4510 -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/{src/views/RecoverPasswordView/index.ts → dist/views/RecoverPasswordView/index.d.ts} +3 -2
- 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/package.json +93 -83
- package/bin/install.cjs +0 -502
- package/bin/prepare-publish.cjs +0 -28
- package/bin/restore-folders.cjs +0 -28
- package/claude/agents/siesa-ui-kit-specialist.md +0 -2401
- package/claude/prompts/component-template.md +0 -121
- package/claude/settings.local.json +0 -61
- package/docs/border-radius.md +0 -1261
- package/docs/colors.md +0 -832
- package/docs/dark-mode-guide.md +0 -1426
- package/docs/filters.md +0 -1243
- package/docs/icons.md +0 -1283
- package/docs/shadows.md +0 -1377
- package/docs/spacing.md +0 -1684
- package/docs/typography.md +0 -1268
- package/postcss.config.cjs +0 -6
- package/public/,Business Logo.png +0 -0
- package/public/.Siesa Logo.png +0 -0
- package/public/bg_siesa.png +0 -0
- package/public/siesa_logo_mobile.png +0 -0
- package/public/vite.svg +0 -1
- package/src/App.css +0 -42
- package/src/App.tsx +0 -8
- package/src/ButtonTest.tsx +0 -147
- package/src/assets/fonts/README.md +0 -261
- package/src/assets/fonts/SiesaBT/SiesaBT-Bold.otf +0 -0
- package/src/assets/fonts/SiesaBT/SiesaBT-Light.otf +0 -0
- package/src/assets/fonts/SiesaBT/SiesaBT-Regular.otf +0 -0
- package/src/assets/react.svg +0 -1
- package/src/components/Alert/Alert.stories.tsx +0 -332
- package/src/components/Alert/Alert.tsx +0 -106
- package/src/components/Alert/Alert.types.ts +0 -54
- package/src/components/Avatar/Avatar.stories.tsx +0 -494
- package/src/components/Avatar/Avatar.tsx +0 -143
- package/src/components/Avatar/Avatar.types.ts +0 -53
- package/src/components/Badge/Badge.stories.tsx +0 -339
- package/src/components/Badge/Badge.tsx +0 -278
- package/src/components/Badge/Badge.types.ts +0 -58
- package/src/components/Button/Button.stories.tsx +0 -950
- package/src/components/Button/Button.tsx +0 -337
- package/src/components/Button/Button.types.ts +0 -180
- package/src/components/Button/icons.tsx +0 -87
- package/src/components/Checkbox/Checkbox.stories.tsx +0 -453
- package/src/components/Checkbox/Checkbox.tsx +0 -208
- package/src/components/Checkbox/Checkbox.types.ts +0 -61
- package/src/components/DescriptionList/DescriptionList.stories.tsx +0 -250
- package/src/components/DescriptionList/DescriptionList.tsx +0 -96
- package/src/components/DescriptionList/DescriptionList.types.ts +0 -29
- package/src/components/Divider/Divider.stories.tsx +0 -263
- package/src/components/Divider/Divider.tsx +0 -80
- package/src/components/Divider/Divider.types.ts +0 -24
- package/src/components/Dropdown/Dropdown.stories.tsx +0 -552
- package/src/components/Dropdown/Dropdown.tsx +0 -422
- package/src/components/Dropdown/Dropdown.types.ts +0 -146
- package/src/components/Dropdown/README.md +0 -266
- package/src/components/Dropdown/icons.tsx +0 -72
- package/src/components/Input/Input.stories.tsx +0 -583
- package/src/components/Input/Input.tsx +0 -204
- package/src/components/Input/Input.types.ts +0 -80
- package/src/components/Input/icons.tsx +0 -145
- package/src/components/LoginView/LoginView.stories.tsx +0 -148
- package/src/components/LoginView/LoginView.tsx +0 -426
- package/src/components/LoginView/LoginView.types.ts +0 -52
- package/src/components/LoginView/README.md +0 -396
- package/src/components/LoginView/icons.tsx +0 -85
- package/src/components/Navbar/Navbar.stories.tsx +0 -810
- package/src/components/Navbar/Navbar.tsx +0 -755
- package/src/components/Navbar/Navbar.types.ts +0 -219
- package/src/components/Navbar/README.md +0 -279
- package/src/components/Navbar/icons.tsx +0 -102
- package/src/components/Navbar/index.ts +0 -8
- package/src/components/NavigationBar/NavigationBar.stories.tsx +0 -406
- package/src/components/NavigationBar/NavigationBar.tsx +0 -246
- package/src/components/NavigationBar/NavigationBar.types.ts +0 -74
- package/src/components/NavigationBar/README.md +0 -469
- package/src/components/NavigationRail/NavigationRail.stories.tsx +0 -417
- package/src/components/NavigationRail/NavigationRail.tsx +0 -418
- package/src/components/NavigationRail/NavigationRail.types.ts +0 -109
- package/src/components/NavigationRail/README.md +0 -224
- package/src/components/Notification/Notification.stories.tsx +0 -513
- package/src/components/Notification/Notification.tsx +0 -145
- package/src/components/Notification/Notification.types.ts +0 -142
- package/src/components/Notification/README.md +0 -409
- package/src/components/POSConvention/POSConvention.stories.tsx +0 -235
- package/src/components/POSConvention/POSConvention.tsx +0 -129
- package/src/components/POSConvention/README.md +0 -123
- package/src/components/POSConvention/icons.tsx +0 -45
- package/src/components/POSLocationButton/POSLocationButton.stories.tsx +0 -531
- package/src/components/POSLocationButton/POSLocationButton.tsx +0 -247
- package/src/components/POSLocationButton/POSLocationButton.types.ts +0 -87
- package/src/components/POSLocationButton/README.md +0 -253
- package/src/components/POSLocationButton/icons.tsx +0 -120
- package/src/components/POSLocationButton/index.ts +0 -14
- package/src/components/POSNumberButton/POSNumberButton.stories.tsx +0 -415
- package/src/components/POSNumberButton/POSNumberButton.tsx +0 -179
- package/src/components/POSNumberButton/POSNumberButton.types.ts +0 -51
- package/src/components/POSNumberButton/README.md +0 -321
- package/src/components/POSProductButton/POSProductButton.stories.tsx +0 -318
- package/src/components/POSProductButton/POSProductButton.tsx +0 -152
- package/src/components/POSProductButton/POSProductButton.types.ts +0 -46
- package/src/components/POSProductButton/README.md +0 -269
- package/src/components/POSProductCard/POSProductCard.stories.tsx +0 -642
- package/src/components/POSProductCard/POSProductCard.tsx +0 -208
- package/src/components/POSProductCard/POSProductCard.types.ts +0 -76
- package/src/components/POSProductCard/README.md +0 -179
- package/src/components/POSProductCard/icons.tsx +0 -26
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +0 -753
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +0 -332
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +0 -119
- package/src/components/POSProductSidebarItems/README.md +0 -198
- package/src/components/POSProductSidebarItems/icons.tsx +0 -21
- package/src/components/POSTable/POSTable.stories.tsx +0 -737
- package/src/components/POSTable/POSTable.tsx +0 -401
- package/src/components/POSTable/POSTable.types.ts +0 -83
- package/src/components/POSTable/README.md +0 -286
- package/src/components/POSTable/index.ts +0 -7
- package/src/components/Pagination/Pagination.stories.tsx +0 -555
- package/src/components/Pagination/Pagination.tsx +0 -286
- package/src/components/Pagination/Pagination.types.ts +0 -93
- package/src/components/Pagination/README.md +0 -298
- package/src/components/Pagination/icons.tsx +0 -47
- package/src/components/Quantity/Quantity.stories.tsx +0 -457
- package/src/components/Quantity/Quantity.tsx +0 -289
- package/src/components/Quantity/Quantity.types.ts +0 -70
- package/src/components/Radio/Radio.stories.tsx +0 -523
- package/src/components/Radio/Radio.tsx +0 -170
- package/src/components/Radio/Radio.types.ts +0 -122
- package/src/components/Select/README.md +0 -299
- package/src/components/Select/Select.stories.tsx +0 -673
- package/src/components/Select/Select.tsx +0 -454
- package/src/components/Select/Select.types.ts +0 -148
- package/src/components/Select/icons.tsx +0 -50
- package/src/components/SignUpView/SignUpView.stories.tsx +0 -129
- package/src/components/SignUpView/SignUpView.tsx +0 -503
- package/src/components/SignUpView/SignUpView.types.ts +0 -58
- package/src/components/SignUpView/icons.tsx +0 -71
- package/src/components/Switch/README.md +0 -112
- package/src/components/Switch/Switch.stories.tsx +0 -550
- package/src/components/Switch/Switch.tsx +0 -246
- package/src/components/Switch/Switch.types.ts +0 -67
- package/src/components/Table/README.md +0 -369
- package/src/components/Table/Table.stories.tsx +0 -805
- package/src/components/Table/Table.tsx +0 -688
- package/src/components/Table/Table.types.ts +0 -204
- package/src/components/Table/index.ts +0 -9
- package/src/components/Tabs/README.md +0 -201
- package/src/components/Tabs/Tabs.stories.tsx +0 -580
- package/src/components/Tabs/Tabs.tsx +0 -356
- package/src/components/Tabs/Tabs.types.ts +0 -127
- package/src/components/Tabs/icons.tsx +0 -129
- package/src/components/Tabs/index.ts +0 -11
- package/src/components/Textarea/Textarea.stories.tsx +0 -535
- package/src/components/Textarea/Textarea.tsx +0 -188
- package/src/components/Textarea/Textarea.types.ts +0 -54
- package/src/context/ThemeContext.tsx +0 -99
- package/src/index.css +0 -29
- package/src/index.ts +0 -39
- package/src/main.tsx +0 -10
- package/src/views/ProductsView/ProductsView.stories.tsx +0 -344
- package/src/views/ProductsView/ProductsView.tsx +0 -480
- package/src/views/ProductsView/ProductsView.types.ts +0 -238
- package/src/views/ProductsView/README.md +0 -312
- package/src/views/ProductsView/icons.tsx +0 -38
- package/src/views/ProductsView/index.ts +0 -8
- package/src/views/RecoverPasswordView/README.md +0 -269
- package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +0 -131
- package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +0 -376
- package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +0 -56
- package/src/views/RecoverPasswordView/icons.tsx +0 -17
- package/src/views/TableLayoutView/README.md +0 -268
- package/src/views/TableLayoutView/TableLayoutView.stories.tsx +0 -235
- package/src/views/TableLayoutView/TableLayoutView.tsx +0 -461
- package/src/views/TableLayoutView/TableLayoutView.types.ts +0 -209
- package/src/views/TableLayoutView/icons.tsx +0 -113
- package/src/views/TableLayoutView/index.ts +0 -6
- package/storybook/main.ts +0 -20
- package/storybook/preview.tsx +0 -84
- package/storybook/vitest.setup.ts +0 -7
- package/tailwind.config.js +0 -128
|
@@ -1,406 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import { useState } from 'react';
|
|
3
|
-
import { NavigationBar } from './NavigationBar';
|
|
4
|
-
import type { NavigationBarItem } from './NavigationBar.types';
|
|
5
|
-
|
|
6
|
-
// ===== ICONOS DE EJEMPLO =====
|
|
7
|
-
// Iconos simples de heroicons-micro (16x16px)
|
|
8
|
-
const HomeIcon = () => (
|
|
9
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
10
|
-
<path
|
|
11
|
-
d="M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.495V14.5m-7-3c0-2.485 0-3.729.586-4.664.586-.936 1.586-1.479 3.586-2.564l.328-.179C7.712 3.348 8.26 3 8.76 3c.5 0 1.048.348 2.26 1.093l.328.179c2 1.085 3 1.628 3.586 2.564.586.935.586 2.179.586 4.664v1c0 2.8 0 4.2-.545 5.27a5 5 0 0 1-2.185 2.185C11.7 20.5 10.3 20.5 7.5 20.5h1c-2.8 0-4.2 0-5.27-.545a5 5 0 0 1-2.185-2.185C.5 16.7.5 15.3.5 12.5v-1Z"
|
|
12
|
-
stroke="currentColor"
|
|
13
|
-
strokeWidth="1.5"
|
|
14
|
-
strokeLinecap="round"
|
|
15
|
-
strokeLinejoin="round"
|
|
16
|
-
/>
|
|
17
|
-
</svg>
|
|
18
|
-
);
|
|
19
|
-
|
|
20
|
-
const SearchIcon = () => (
|
|
21
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
22
|
-
<path
|
|
23
|
-
d="M14 14l-2.9-2.9M12.667 7.333A5.333 5.333 0 1 1 2 7.333a5.333 5.333 0 0 1 10.667 0Z"
|
|
24
|
-
stroke="currentColor"
|
|
25
|
-
strokeWidth="1.5"
|
|
26
|
-
strokeLinecap="round"
|
|
27
|
-
strokeLinejoin="round"
|
|
28
|
-
/>
|
|
29
|
-
</svg>
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
const HeartIcon = () => (
|
|
33
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
34
|
-
<path
|
|
35
|
-
d="M13.732 3.268A4 4 0 0 0 8.4 2.4L8 2.8l-.4-.4a4 4 0 0 0-5.332.932 4 4 0 0 0 .532 5.732l5.2 5.2 5.2-5.2a4 4 0 0 0 .532-5.796Z"
|
|
36
|
-
stroke="currentColor"
|
|
37
|
-
strokeWidth="1.5"
|
|
38
|
-
strokeLinecap="round"
|
|
39
|
-
strokeLinejoin="round"
|
|
40
|
-
/>
|
|
41
|
-
</svg>
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
const BellIcon = () => (
|
|
45
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
46
|
-
<path
|
|
47
|
-
d="M6 13.333a2 2 0 1 0 4 0M11.333 5.333a3.333 3.333 0 1 0-6.666 0c0 3.773-1.334 5.334-1.334 5.334h9.334s-1.334-1.56-1.334-5.334Z"
|
|
48
|
-
stroke="currentColor"
|
|
49
|
-
strokeWidth="1.5"
|
|
50
|
-
strokeLinecap="round"
|
|
51
|
-
strokeLinejoin="round"
|
|
52
|
-
/>
|
|
53
|
-
</svg>
|
|
54
|
-
);
|
|
55
|
-
|
|
56
|
-
const UserIcon = () => (
|
|
57
|
-
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
58
|
-
<path
|
|
59
|
-
d="M13.333 14v-1.333A2.667 2.667 0 0 0 10.667 10H5.333a2.667 2.667 0 0 0-2.666 2.667V14M8 7.333A2.667 2.667 0 1 0 8 2a2.667 2.667 0 0 0 0 5.333Z"
|
|
60
|
-
stroke="currentColor"
|
|
61
|
-
strokeWidth="1.5"
|
|
62
|
-
strokeLinecap="round"
|
|
63
|
-
strokeLinejoin="round"
|
|
64
|
-
/>
|
|
65
|
-
</svg>
|
|
66
|
-
);
|
|
67
|
-
|
|
68
|
-
const meta = {
|
|
69
|
-
title: 'Siesa UI Kit/NavigationBar',
|
|
70
|
-
component: NavigationBar,
|
|
71
|
-
parameters: {
|
|
72
|
-
layout: 'fullscreen',
|
|
73
|
-
docs: {
|
|
74
|
-
description: {
|
|
75
|
-
component:
|
|
76
|
-
'Barra de navegación inferior (Bottom Navigation Bar) para aplicaciones móviles. Permite al usuario navegar entre 3-5 vistas principales de la aplicación.',
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
tags: ['autodocs'],
|
|
81
|
-
argTypes: {
|
|
82
|
-
items: {
|
|
83
|
-
control: 'object',
|
|
84
|
-
description: 'Lista de ítems del navigation bar (máximo 5 recomendado)',
|
|
85
|
-
table: {
|
|
86
|
-
type: { summary: 'NavigationBarItem[]' },
|
|
87
|
-
category: 'Contenido',
|
|
88
|
-
},
|
|
89
|
-
},
|
|
90
|
-
activeItemId: {
|
|
91
|
-
control: 'text',
|
|
92
|
-
description: 'ID del ítem actualmente activo',
|
|
93
|
-
table: {
|
|
94
|
-
type: { summary: 'string' },
|
|
95
|
-
category: 'Estado',
|
|
96
|
-
},
|
|
97
|
-
},
|
|
98
|
-
onItemClick: {
|
|
99
|
-
action: 'itemClicked',
|
|
100
|
-
description: 'Función que se ejecuta cuando se hace click en un ítem',
|
|
101
|
-
table: {
|
|
102
|
-
type: { summary: '(id: string) => void' },
|
|
103
|
-
category: 'Comportamiento',
|
|
104
|
-
},
|
|
105
|
-
},
|
|
106
|
-
className: {
|
|
107
|
-
control: 'text',
|
|
108
|
-
description: 'Clases CSS adicionales',
|
|
109
|
-
table: {
|
|
110
|
-
type: { summary: 'string' },
|
|
111
|
-
category: 'Apariencia',
|
|
112
|
-
},
|
|
113
|
-
},
|
|
114
|
-
ariaLabel: {
|
|
115
|
-
control: 'text',
|
|
116
|
-
description: 'Etiqueta accesible para el navigation bar',
|
|
117
|
-
table: {
|
|
118
|
-
type: { summary: 'string' },
|
|
119
|
-
category: 'Accesibilidad',
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
|
-
},
|
|
123
|
-
} satisfies Meta<typeof NavigationBar>;
|
|
124
|
-
|
|
125
|
-
export default meta;
|
|
126
|
-
type Story = StoryObj<typeof meta>;
|
|
127
|
-
|
|
128
|
-
// ===== DATOS DE EJEMPLO =====
|
|
129
|
-
const sampleItems: NavigationBarItem[] = [
|
|
130
|
-
{ id: 'home', icon: <HomeIcon />, label: 'Inicio', active: true },
|
|
131
|
-
{ id: 'search', icon: <SearchIcon />, label: 'Buscar' },
|
|
132
|
-
{ id: 'favorites', icon: <HeartIcon />, label: 'Favoritos' },
|
|
133
|
-
{ id: 'notifications', icon: <BellIcon />, label: 'Alertas' },
|
|
134
|
-
{ id: 'profile', icon: <UserIcon />, label: 'Perfil' },
|
|
135
|
-
];
|
|
136
|
-
|
|
137
|
-
// ============================================
|
|
138
|
-
// 1. PLAYGROUND INTERACTIVO
|
|
139
|
-
// ============================================
|
|
140
|
-
export const Playground: Story = {
|
|
141
|
-
args: {
|
|
142
|
-
items: sampleItems,
|
|
143
|
-
activeItemId: 'home',
|
|
144
|
-
ariaLabel: 'Navegación Principal',
|
|
145
|
-
},
|
|
146
|
-
render: (args) => {
|
|
147
|
-
const [activeId, setActiveId] = useState(args.activeItemId || 'home');
|
|
148
|
-
|
|
149
|
-
return (
|
|
150
|
-
<div className="w-full flex items-end bg-background-secondary dark:bg-dark-bg-primary">
|
|
151
|
-
<NavigationBar
|
|
152
|
-
{...args}
|
|
153
|
-
activeItemId={activeId}
|
|
154
|
-
onItemClick={(id) => {
|
|
155
|
-
setActiveId(id);
|
|
156
|
-
args.onItemClick?.(id);
|
|
157
|
-
}}
|
|
158
|
-
/>
|
|
159
|
-
</div>
|
|
160
|
-
);
|
|
161
|
-
},
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
// ============================================
|
|
165
|
-
// 2. VARIANTES DE CANTIDAD DE ÍTEMS
|
|
166
|
-
// ============================================
|
|
167
|
-
export const VariantesDeItems: Story = {
|
|
168
|
-
args: {
|
|
169
|
-
items: [],
|
|
170
|
-
},
|
|
171
|
-
render: () => (
|
|
172
|
-
<div className="space-y-8 p-6 bg-background-secondary dark:bg-dark-bg-primary">
|
|
173
|
-
{/* 3 Items */}
|
|
174
|
-
<div>
|
|
175
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
176
|
-
3 Ítems (Mínimo Recomendado)
|
|
177
|
-
</h3>
|
|
178
|
-
<div className="bg-bg-primary dark:bg-dark-bg-primary rounded-2xl overflow-hidden">
|
|
179
|
-
<NavigationBar
|
|
180
|
-
items={[
|
|
181
|
-
{ id: 'home', icon: <HomeIcon />, label: 'Inicio', active: true },
|
|
182
|
-
{ id: 'search', icon: <SearchIcon />, label: 'Buscar' },
|
|
183
|
-
{ id: 'profile', icon: <UserIcon />, label: 'Perfil' },
|
|
184
|
-
]}
|
|
185
|
-
activeItemId="home"
|
|
186
|
-
/>
|
|
187
|
-
</div>
|
|
188
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
189
|
-
Ideal para aplicaciones simples con pocas secciones principales
|
|
190
|
-
</p>
|
|
191
|
-
</div>
|
|
192
|
-
|
|
193
|
-
{/* 4 Items */}
|
|
194
|
-
<div>
|
|
195
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
196
|
-
4 Ítems (Óptimo)
|
|
197
|
-
</h3>
|
|
198
|
-
<div className="bg-bg-primary dark:bg-dark-bg-primary rounded-2xl overflow-hidden">
|
|
199
|
-
<NavigationBar
|
|
200
|
-
items={[
|
|
201
|
-
{ id: 'home', icon: <HomeIcon />, label: 'Inicio', active: true },
|
|
202
|
-
{ id: 'search', icon: <SearchIcon />, label: 'Buscar' },
|
|
203
|
-
{ id: 'favorites', icon: <HeartIcon />, label: 'Favoritos' },
|
|
204
|
-
{ id: 'profile', icon: <UserIcon />, label: 'Perfil' },
|
|
205
|
-
]}
|
|
206
|
-
activeItemId="home"
|
|
207
|
-
/>
|
|
208
|
-
</div>
|
|
209
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
210
|
-
Balance perfecto entre funcionalidad y usabilidad
|
|
211
|
-
</p>
|
|
212
|
-
</div>
|
|
213
|
-
|
|
214
|
-
{/* 5 Items */}
|
|
215
|
-
<div>
|
|
216
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
217
|
-
5 Ítems (Máximo Recomendado)
|
|
218
|
-
</h3>
|
|
219
|
-
<div className="bg-bg-primary dark:bg-dark-bg-primary rounded-2xl overflow-hidden">
|
|
220
|
-
<NavigationBar items={sampleItems} activeItemId="home" />
|
|
221
|
-
</div>
|
|
222
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
223
|
-
Máximo de ítems para mantener buena experiencia de usuario
|
|
224
|
-
</p>
|
|
225
|
-
</div>
|
|
226
|
-
|
|
227
|
-
{/* Tips */}
|
|
228
|
-
<div className="mt-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
|
|
229
|
-
<p className="text-xs text-content-primary dark:text-dark-content-primary">
|
|
230
|
-
<strong>💡 Consejos:</strong>
|
|
231
|
-
<br />• Usa entre 3 y 5 ítems para mejor usabilidad
|
|
232
|
-
<br />• El primer ítem suele ser "Inicio" o la vista principal
|
|
233
|
-
<br />• Evita labels muy largos (máximo 10 caracteres)
|
|
234
|
-
<br />• Los iconos deben ser simples y reconocibles
|
|
235
|
-
</p>
|
|
236
|
-
</div>
|
|
237
|
-
</div>
|
|
238
|
-
),
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
// ============================================
|
|
242
|
-
// 3. ESTADOS
|
|
243
|
-
// ============================================
|
|
244
|
-
export const Estados: Story = {
|
|
245
|
-
args: {
|
|
246
|
-
items: [],
|
|
247
|
-
},
|
|
248
|
-
render: () => (
|
|
249
|
-
<div className="space-y-8 p-6 bg-background-secondary dark:bg-dark-bg-primary">
|
|
250
|
-
{/* Estado Normal - Primer ítem activo */}
|
|
251
|
-
<div>
|
|
252
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
253
|
-
Estado Normal (Primer Ítem Activo)
|
|
254
|
-
</h3>
|
|
255
|
-
<div className="bg-bg-primary dark:bg-dark-bg-primary rounded-2xl overflow-hidden">
|
|
256
|
-
<NavigationBar
|
|
257
|
-
items={[
|
|
258
|
-
{ id: 'home', icon: <HomeIcon />, label: 'Inicio', active: true },
|
|
259
|
-
{ id: 'search', icon: <SearchIcon />, label: 'Buscar' },
|
|
260
|
-
{ id: 'favorites', icon: <HeartIcon />, label: 'Favoritos' },
|
|
261
|
-
{ id: 'profile', icon: <UserIcon />, label: 'Perfil' },
|
|
262
|
-
]}
|
|
263
|
-
activeItemId="home"
|
|
264
|
-
/>
|
|
265
|
-
</div>
|
|
266
|
-
</div>
|
|
267
|
-
|
|
268
|
-
{/* Estado con ítem central activo */}
|
|
269
|
-
<div>
|
|
270
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
271
|
-
Ítem Central Activo
|
|
272
|
-
</h3>
|
|
273
|
-
<div className="bg-bg-primary dark:bg-dark-bg-primary rounded-2xl overflow-hidden">
|
|
274
|
-
<NavigationBar
|
|
275
|
-
items={[
|
|
276
|
-
{ id: 'home', icon: <HomeIcon />, label: 'Inicio' },
|
|
277
|
-
{ id: 'search', icon: <SearchIcon />, label: 'Buscar' },
|
|
278
|
-
{ id: 'favorites', icon: <HeartIcon />, label: 'Favoritos', active: true },
|
|
279
|
-
{ id: 'profile', icon: <UserIcon />, label: 'Perfil' },
|
|
280
|
-
]}
|
|
281
|
-
activeItemId="favorites"
|
|
282
|
-
/>
|
|
283
|
-
</div>
|
|
284
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
285
|
-
El ítem activo tiene fondo azul claro (light mode) o azul oscuro transparente (dark
|
|
286
|
-
mode)
|
|
287
|
-
</p>
|
|
288
|
-
</div>
|
|
289
|
-
|
|
290
|
-
{/* Estado con ítem deshabilitado */}
|
|
291
|
-
<div>
|
|
292
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
293
|
-
Con Ítem Deshabilitado
|
|
294
|
-
</h3>
|
|
295
|
-
<div className="bg-bg-primary dark:bg-dark-bg-primary rounded-2xl overflow-hidden">
|
|
296
|
-
<NavigationBar
|
|
297
|
-
items={[
|
|
298
|
-
{ id: 'home', icon: <HomeIcon />, label: 'Inicio', active: true },
|
|
299
|
-
{ id: 'search', icon: <SearchIcon />, label: 'Buscar' },
|
|
300
|
-
{
|
|
301
|
-
id: 'favorites',
|
|
302
|
-
icon: <HeartIcon />,
|
|
303
|
-
label: 'Favoritos',
|
|
304
|
-
disabled: true,
|
|
305
|
-
},
|
|
306
|
-
{ id: 'profile', icon: <UserIcon />, label: 'Perfil' },
|
|
307
|
-
]}
|
|
308
|
-
activeItemId="home"
|
|
309
|
-
/>
|
|
310
|
-
</div>
|
|
311
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
312
|
-
Los ítems deshabilitados tienen opacidad reducida y no responden a clicks
|
|
313
|
-
</p>
|
|
314
|
-
</div>
|
|
315
|
-
|
|
316
|
-
{/* Estado hover */}
|
|
317
|
-
<div>
|
|
318
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
319
|
-
Estado Hover
|
|
320
|
-
</h3>
|
|
321
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mb-2">
|
|
322
|
-
Pasa el mouse sobre los ítems inactivos para ver el efecto de hover
|
|
323
|
-
</p>
|
|
324
|
-
<div className="bg-bg-primary dark:bg-dark-bg-primary rounded-2xl overflow-hidden">
|
|
325
|
-
<NavigationBar
|
|
326
|
-
items={[
|
|
327
|
-
{ id: 'home', icon: <HomeIcon />, label: 'Inicio', active: true },
|
|
328
|
-
{ id: 'search', icon: <SearchIcon />, label: 'Buscar' },
|
|
329
|
-
{ id: 'favorites', icon: <HeartIcon />, label: 'Favoritos' },
|
|
330
|
-
{ id: 'profile', icon: <UserIcon />, label: 'Perfil' },
|
|
331
|
-
]}
|
|
332
|
-
activeItemId="home"
|
|
333
|
-
/>
|
|
334
|
-
</div>
|
|
335
|
-
</div>
|
|
336
|
-
</div>
|
|
337
|
-
),
|
|
338
|
-
};
|
|
339
|
-
|
|
340
|
-
// ============================================
|
|
341
|
-
// 4. EJEMPLOS DE USO
|
|
342
|
-
// ============================================
|
|
343
|
-
export const EjemplosDeUso: Story = {
|
|
344
|
-
args: {
|
|
345
|
-
items: [],
|
|
346
|
-
},
|
|
347
|
-
render: () => {
|
|
348
|
-
const [activeTab1, setActiveTab1] = useState('home');
|
|
349
|
-
const [activeTab2, setActiveTab2] = useState('home');
|
|
350
|
-
|
|
351
|
-
return (
|
|
352
|
-
<div className="space-y-8 p-6 bg-background-secondary dark:bg-dark-bg-primary">
|
|
353
|
-
{/* Ejemplo 1: E-commerce */}
|
|
354
|
-
<div>
|
|
355
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
356
|
-
App de E-commerce
|
|
357
|
-
</h3>
|
|
358
|
-
<div className="bg-bg-primary dark:bg-dark-bg-primary rounded-2xl overflow-hidden">
|
|
359
|
-
<NavigationBar
|
|
360
|
-
items={[
|
|
361
|
-
{ id: 'home', icon: <HomeIcon />, label: 'Inicio' },
|
|
362
|
-
{ id: 'search', icon: <SearchIcon />, label: 'Buscar' },
|
|
363
|
-
{ id: 'favorites', icon: <HeartIcon />, label: 'Favoritos' },
|
|
364
|
-
{ id: 'profile', icon: <UserIcon />, label: 'Cuenta' },
|
|
365
|
-
]}
|
|
366
|
-
activeItemId={activeTab1}
|
|
367
|
-
onItemClick={setActiveTab1}
|
|
368
|
-
/>
|
|
369
|
-
</div>
|
|
370
|
-
</div>
|
|
371
|
-
|
|
372
|
-
{/* Ejemplo 2: Red Social */}
|
|
373
|
-
<div>
|
|
374
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
375
|
-
Red Social
|
|
376
|
-
</h3>
|
|
377
|
-
<div className="bg-bg-primary dark:bg-dark-bg-primary rounded-2xl overflow-hidden">
|
|
378
|
-
<NavigationBar
|
|
379
|
-
items={[
|
|
380
|
-
{ id: 'home', icon: <HomeIcon />, label: 'Inicio' },
|
|
381
|
-
{ id: 'search', icon: <SearchIcon />, label: 'Explorar' },
|
|
382
|
-
{ id: 'notifications', icon: <BellIcon />, label: 'Alertas' },
|
|
383
|
-
{ id: 'favorites', icon: <HeartIcon />, label: 'Guardados' },
|
|
384
|
-
{ id: 'profile', icon: <UserIcon />, label: 'Perfil' },
|
|
385
|
-
]}
|
|
386
|
-
activeItemId={activeTab2}
|
|
387
|
-
onItemClick={setActiveTab2}
|
|
388
|
-
/>
|
|
389
|
-
</div>
|
|
390
|
-
</div>
|
|
391
|
-
|
|
392
|
-
{/* Tips */}
|
|
393
|
-
<div className="mt-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
|
|
394
|
-
<p className="text-xs text-content-primary dark:text-dark-content-primary">
|
|
395
|
-
<strong>💡 Cuándo usar NavigationBar:</strong>
|
|
396
|
-
<br />• Aplicaciones móviles con 3-5 secciones principales
|
|
397
|
-
<br />• Navegación persistente entre vistas de igual jerarquía
|
|
398
|
-
<br />• Apps donde el usuario necesita cambiar frecuentemente entre secciones
|
|
399
|
-
<br />• NO usar en web desktop (considera tabs o sidebar en su lugar)
|
|
400
|
-
</p>
|
|
401
|
-
</div>
|
|
402
|
-
</div>
|
|
403
|
-
);
|
|
404
|
-
},
|
|
405
|
-
};
|
|
406
|
-
|
|
@@ -1,246 +0,0 @@
|
|
|
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
|
-
};
|