siesa-ui-kit 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -28
- package/claude/settings.local.json +7 -61
- package/dist/ButtonTest.d.ts +6 -0
- package/dist/ButtonTest.d.ts.map +1 -0
- package/dist/components/Alert/Alert.d.ts +23 -0
- package/dist/components/Alert/Alert.d.ts.map +1 -0
- package/dist/components/Alert/Alert.types.d.ts +46 -0
- package/dist/components/Alert/Alert.types.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.d.ts +41 -0
- package/dist/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.types.d.ts +46 -0
- package/dist/components/Avatar/Avatar.types.d.ts.map +1 -0
- package/dist/components/Badge/Badge.d.ts +42 -0
- package/dist/components/Badge/Badge.d.ts.map +1 -0
- package/dist/components/Badge/Badge.types.d.ts +32 -0
- package/dist/components/Badge/Badge.types.d.ts.map +1 -0
- package/dist/components/Button/Button.d.ts +84 -0
- package/dist/components/Button/Button.d.ts.map +1 -0
- package/dist/components/Button/Button.types.d.ts +162 -0
- package/dist/components/Button/Button.types.d.ts.map +1 -0
- package/dist/components/Button/icons.d.ts +26 -0
- package/dist/components/Button/icons.d.ts.map +1 -0
- package/dist/components/Button/index.d.ts +4 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +31 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts +53 -0
- package/dist/components/Checkbox/Checkbox.types.d.ts.map +1 -0
- package/dist/components/DescriptionList/DescriptionList.d.ts +38 -0
- package/dist/components/DescriptionList/DescriptionList.d.ts.map +1 -0
- package/dist/components/DescriptionList/DescriptionList.types.d.ts +27 -0
- package/dist/components/DescriptionList/DescriptionList.types.d.ts.map +1 -0
- package/dist/components/Divider/Divider.d.ts +33 -0
- package/dist/components/Divider/Divider.d.ts.map +1 -0
- package/dist/components/Divider/Divider.types.d.ts +22 -0
- package/dist/components/Divider/Divider.types.d.ts.map +1 -0
- package/dist/components/Dropdown/Dropdown.d.ts +66 -0
- package/dist/components/Dropdown/Dropdown.d.ts.map +1 -0
- package/dist/components/Dropdown/Dropdown.types.d.ts +124 -0
- package/dist/components/Dropdown/Dropdown.types.d.ts.map +1 -0
- package/dist/components/Dropdown/icons.d.ts +10 -0
- package/dist/components/Dropdown/icons.d.ts.map +1 -0
- package/dist/components/Dropdown/index.d.ts +4 -0
- package/dist/components/Dropdown/index.d.ts.map +1 -0
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts +101 -0
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts.map +1 -0
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts +95 -0
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts.map +1 -0
- package/dist/components/DropdownItemCollapsible/icons.d.ts +19 -0
- package/dist/components/DropdownItemCollapsible/icons.d.ts.map +1 -0
- package/dist/components/DropdownItemCollapsible/index.d.ts +9 -0
- package/dist/components/DropdownItemCollapsible/index.d.ts.map +1 -0
- package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts +75 -0
- package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts.map +1 -0
- package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts +85 -0
- package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts.map +1 -0
- package/dist/components/DropdownItemHeading/icons.d.ts +48 -0
- package/dist/components/DropdownItemHeading/icons.d.ts.map +1 -0
- package/dist/components/DropdownItemHeading/index.d.ts +4 -0
- package/dist/components/DropdownItemHeading/index.d.ts.map +1 -0
- package/dist/components/Input/Input.d.ts +40 -0
- package/dist/components/Input/Input.d.ts.map +1 -0
- package/dist/components/Input/Input.types.d.ts +71 -0
- package/dist/components/Input/Input.types.d.ts.map +1 -0
- package/dist/components/Input/icons.d.ts +15 -0
- package/dist/components/Input/icons.d.ts.map +1 -0
- package/dist/components/Input/index.d.ts +3 -0
- package/dist/components/Input/index.d.ts.map +1 -0
- package/dist/components/LoginView/LoginView.d.ts +36 -0
- package/dist/components/LoginView/LoginView.d.ts.map +1 -0
- package/dist/components/LoginView/LoginView.types.d.ts +46 -0
- package/dist/components/LoginView/LoginView.types.d.ts.map +1 -0
- package/dist/components/LoginView/icons.d.ts +18 -0
- package/dist/components/LoginView/icons.d.ts.map +1 -0
- package/dist/components/LoginView/index.d.ts +4 -0
- package/dist/components/LoginView/index.d.ts.map +1 -0
- package/dist/components/Navbar/Navbar.d.ts +63 -0
- package/dist/components/Navbar/Navbar.d.ts.map +1 -0
- package/dist/components/Navbar/Navbar.types.d.ts +194 -0
- package/dist/components/Navbar/Navbar.types.d.ts.map +1 -0
- package/dist/components/Navbar/icons.d.ts +12 -0
- package/dist/components/Navbar/icons.d.ts.map +1 -0
- package/dist/components/Navbar/index.d.ts +4 -0
- package/dist/components/Navbar/index.d.ts.map +1 -0
- package/dist/components/NavigationBar/NavigationBar.d.ts +75 -0
- package/dist/components/NavigationBar/NavigationBar.d.ts.map +1 -0
- package/dist/components/NavigationBar/NavigationBar.types.d.ts +63 -0
- package/dist/components/NavigationBar/NavigationBar.types.d.ts.map +1 -0
- package/dist/components/NavigationBar/index.d.ts +3 -0
- package/dist/components/NavigationBar/index.d.ts.map +1 -0
- package/dist/components/NavigationRail/NavigationRail.d.ts +7 -0
- package/dist/components/NavigationRail/NavigationRail.d.ts.map +1 -0
- package/dist/components/NavigationRail/NavigationRail.types.d.ts +92 -0
- package/dist/components/NavigationRail/NavigationRail.types.d.ts.map +1 -0
- package/dist/components/NavigationRail/index.d.ts +3 -0
- package/dist/components/NavigationRail/index.d.ts.map +1 -0
- package/dist/components/NavigationRailItem/NavigationRailItem.d.ts +90 -0
- package/dist/components/NavigationRailItem/NavigationRailItem.d.ts.map +1 -0
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts +155 -0
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts.map +1 -0
- package/dist/components/NavigationRailItem/index.d.ts +3 -0
- package/dist/components/NavigationRailItem/index.d.ts.map +1 -0
- package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts +124 -0
- package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts.map +1 -0
- package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts +154 -0
- package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts.map +1 -0
- package/dist/components/NavigationRailPanel/index.d.ts +3 -0
- package/dist/components/NavigationRailPanel/index.d.ts.map +1 -0
- package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts +99 -0
- package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts.map +1 -0
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts +111 -0
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +1 -0
- package/dist/components/NavigationRailTypes/icons.d.ts +58 -0
- package/dist/components/NavigationRailTypes/icons.d.ts.map +1 -0
- package/dist/components/NavigationRailTypes/index.d.ts +4 -0
- package/dist/components/NavigationRailTypes/index.d.ts.map +1 -0
- package/dist/components/Notification/Notification.d.ts +52 -0
- package/dist/components/Notification/Notification.d.ts.map +1 -0
- package/dist/components/Notification/Notification.types.d.ts +138 -0
- package/dist/components/Notification/Notification.types.d.ts.map +1 -0
- package/dist/components/Notification/index.d.ts +3 -0
- package/dist/components/Notification/index.d.ts.map +1 -0
- package/dist/components/POSConvention/POSConvention.d.ts +55 -0
- package/dist/components/POSConvention/POSConvention.d.ts.map +1 -0
- package/dist/components/POSConvention/POSConvention.types.d.ts +37 -0
- package/dist/components/POSConvention/POSConvention.types.d.ts.map +1 -0
- package/dist/components/POSConvention/icons.d.ts +21 -0
- package/dist/components/POSConvention/icons.d.ts.map +1 -0
- package/dist/components/POSConvention/index.d.ts +4 -0
- package/dist/components/POSConvention/index.d.ts.map +1 -0
- package/dist/components/POSLocationButton/POSLocationButton.d.ts +73 -0
- package/dist/components/POSLocationButton/POSLocationButton.d.ts.map +1 -0
- package/dist/components/POSLocationButton/POSLocationButton.types.d.ts +75 -0
- package/dist/components/POSLocationButton/POSLocationButton.types.d.ts.map +1 -0
- package/dist/components/POSLocationButton/icons.d.ts +37 -0
- package/dist/components/POSLocationButton/icons.d.ts.map +1 -0
- package/dist/components/POSLocationButton/index.d.ts +4 -0
- package/dist/components/POSLocationButton/index.d.ts.map +1 -0
- package/dist/components/POSNumberButton/POSNumberButton.d.ts +61 -0
- package/dist/components/POSNumberButton/POSNumberButton.d.ts.map +1 -0
- package/dist/components/POSNumberButton/POSNumberButton.types.d.ts +43 -0
- package/dist/components/POSNumberButton/POSNumberButton.types.d.ts.map +1 -0
- package/dist/components/POSNumberButton/index.d.ts +3 -0
- package/dist/components/POSNumberButton/index.d.ts.map +1 -0
- package/dist/components/POSProductButton/POSProductButton.d.ts +59 -0
- package/dist/components/POSProductButton/POSProductButton.d.ts.map +1 -0
- package/dist/components/POSProductButton/POSProductButton.types.d.ts +40 -0
- package/dist/components/POSProductButton/POSProductButton.types.d.ts.map +1 -0
- package/dist/components/POSProductButton/index.d.ts +3 -0
- package/dist/components/POSProductButton/index.d.ts.map +1 -0
- package/dist/components/POSProductCard/POSProductCard.d.ts +68 -0
- package/dist/components/POSProductCard/POSProductCard.d.ts.map +1 -0
- package/dist/components/POSProductCard/POSProductCard.types.d.ts +67 -0
- package/dist/components/POSProductCard/POSProductCard.types.d.ts.map +1 -0
- package/dist/components/POSProductCard/icons.d.ts +10 -0
- package/dist/components/POSProductCard/icons.d.ts.map +1 -0
- package/dist/components/POSProductCard/index.d.ts +3 -0
- package/dist/components/POSProductCard/index.d.ts.map +1 -0
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts +57 -0
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts.map +1 -0
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts +85 -0
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts.map +1 -0
- package/dist/components/POSProductSidebarItems/icons.d.ts +9 -0
- package/dist/components/POSProductSidebarItems/icons.d.ts.map +1 -0
- package/dist/components/POSProductSidebarItems/index.d.ts +4 -0
- package/dist/components/POSProductSidebarItems/index.d.ts.map +1 -0
- package/dist/components/POSTable/POSTable.d.ts +75 -0
- package/dist/components/POSTable/POSTable.d.ts.map +1 -0
- package/dist/components/POSTable/POSTable.types.d.ts +71 -0
- package/dist/components/POSTable/POSTable.types.d.ts.map +1 -0
- package/dist/components/POSTable/index.d.ts +3 -0
- package/dist/components/POSTable/index.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.d.ts +29 -0
- package/dist/components/Pagination/Pagination.d.ts.map +1 -0
- package/dist/components/Pagination/Pagination.types.d.ts +79 -0
- package/dist/components/Pagination/Pagination.types.d.ts.map +1 -0
- package/dist/components/Pagination/icons.d.ts +18 -0
- package/dist/components/Pagination/icons.d.ts.map +1 -0
- package/dist/components/Pagination/index.d.ts +4 -0
- package/dist/components/Pagination/index.d.ts.map +1 -0
- package/dist/components/Quantity/Quantity.d.ts +38 -0
- package/dist/components/Quantity/Quantity.d.ts.map +1 -0
- package/dist/components/Quantity/Quantity.types.d.ts +59 -0
- package/dist/components/Quantity/Quantity.types.d.ts.map +1 -0
- package/dist/components/Radio/Radio.d.ts +45 -0
- package/dist/components/Radio/Radio.d.ts.map +1 -0
- package/dist/components/Radio/Radio.types.d.ts +115 -0
- package/dist/components/Radio/Radio.types.d.ts.map +1 -0
- package/dist/components/Select/Select.d.ts +37 -0
- package/dist/components/Select/Select.d.ts.map +1 -0
- package/dist/components/Select/Select.types.d.ts +124 -0
- package/dist/components/Select/Select.types.d.ts.map +1 -0
- package/dist/components/Select/icons.d.ts +16 -0
- package/dist/components/Select/icons.d.ts.map +1 -0
- package/dist/components/Select/index.d.ts +4 -0
- package/dist/components/Select/index.d.ts.map +1 -0
- package/dist/components/SignUpView/SignUpView.d.ts +38 -0
- package/dist/components/SignUpView/SignUpView.d.ts.map +1 -0
- package/dist/components/SignUpView/SignUpView.types.d.ts +51 -0
- package/dist/components/SignUpView/SignUpView.types.d.ts.map +1 -0
- package/dist/components/SignUpView/icons.d.ts +18 -0
- package/dist/components/SignUpView/icons.d.ts.map +1 -0
- package/dist/components/SignUpView/index.d.ts +4 -0
- package/dist/components/SignUpView/index.d.ts.map +1 -0
- package/dist/components/Switch/Switch.d.ts +46 -0
- package/dist/components/Switch/Switch.d.ts.map +1 -0
- package/dist/components/Switch/Switch.types.d.ts +58 -0
- package/dist/components/Switch/Switch.types.d.ts.map +1 -0
- package/dist/components/Table/Table.d.ts +64 -0
- package/dist/components/Table/Table.d.ts.map +1 -0
- package/dist/components/Table/Table.types.d.ts +173 -0
- package/dist/components/Table/Table.types.d.ts.map +1 -0
- package/dist/components/Table/index.d.ts +3 -0
- package/dist/components/Table/index.d.ts.map +1 -0
- package/dist/components/Tabs/Tabs.d.ts +76 -0
- package/dist/components/Tabs/Tabs.d.ts.map +1 -0
- package/dist/components/Tabs/Tabs.types.d.ts +107 -0
- package/dist/components/Tabs/Tabs.types.d.ts.map +1 -0
- package/dist/components/Tabs/icons.d.ts +45 -0
- package/dist/components/Tabs/icons.d.ts.map +1 -0
- package/dist/components/Tabs/index.d.ts +4 -0
- package/dist/components/Tabs/index.d.ts.map +1 -0
- package/dist/components/Textarea/Textarea.d.ts +38 -0
- package/dist/components/Textarea/Textarea.d.ts.map +1 -0
- package/dist/components/Textarea/Textarea.types.d.ts +46 -0
- package/dist/components/Textarea/Textarea.types.d.ts.map +1 -0
- package/dist/context/ThemeContext.d.ts +46 -0
- package/dist/context/ThemeContext.d.ts.map +1 -0
- package/dist/context/index.d.ts +2 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/siesa-ui-kit.cjs +1260 -0
- package/dist/siesa-ui-kit.cjs.map +1 -0
- package/dist/siesa-ui-kit.mjs +4496 -0
- package/dist/siesa-ui-kit.mjs.map +1 -0
- package/dist/views/ListView/ListView.d.ts +47 -0
- package/dist/views/ListView/ListView.d.ts.map +1 -0
- package/dist/views/ListView/ListView.types.d.ts +177 -0
- package/dist/views/ListView/ListView.types.d.ts.map +1 -0
- package/dist/views/ListView/icons.d.ts +60 -0
- package/dist/views/ListView/icons.d.ts.map +1 -0
- package/dist/views/ListView/index.d.ts +3 -0
- package/dist/views/ListView/index.d.ts.map +1 -0
- package/dist/views/LoginView/LoginView.d.ts +36 -0
- package/dist/views/LoginView/LoginView.d.ts.map +1 -0
- package/dist/views/LoginView/LoginView.types.d.ts +46 -0
- package/dist/views/LoginView/LoginView.types.d.ts.map +1 -0
- package/dist/views/LoginView/icons.d.ts +18 -0
- package/dist/views/LoginView/icons.d.ts.map +1 -0
- package/dist/views/LoginView/index.d.ts +4 -0
- package/dist/views/LoginView/index.d.ts.map +1 -0
- package/dist/views/ProductsView/ProductsView.d.ts +56 -0
- package/dist/views/ProductsView/ProductsView.d.ts.map +1 -0
- package/dist/views/ProductsView/ProductsView.types.d.ts +184 -0
- package/dist/views/ProductsView/ProductsView.types.d.ts.map +1 -0
- package/dist/views/ProductsView/icons.d.ts +12 -0
- package/dist/views/ProductsView/icons.d.ts.map +1 -0
- package/dist/views/ProductsView/index.d.ts +3 -0
- package/dist/views/ProductsView/index.d.ts.map +1 -0
- package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts +34 -0
- package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts.map +1 -0
- package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts +50 -0
- package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts.map +1 -0
- package/dist/views/RecoverPasswordView/icons.d.ts +9 -0
- package/dist/views/RecoverPasswordView/icons.d.ts.map +1 -0
- package/dist/views/RecoverPasswordView/index.d.ts +3 -0
- package/dist/views/RecoverPasswordView/index.d.ts.map +1 -0
- package/dist/views/SignUpView/SignUpView.d.ts +38 -0
- package/dist/views/SignUpView/SignUpView.d.ts.map +1 -0
- package/dist/views/SignUpView/SignUpView.types.d.ts +51 -0
- package/dist/views/SignUpView/SignUpView.types.d.ts.map +1 -0
- package/dist/views/SignUpView/icons.d.ts +18 -0
- package/dist/views/SignUpView/icons.d.ts.map +1 -0
- package/dist/views/SignUpView/index.d.ts +4 -0
- package/dist/views/SignUpView/index.d.ts.map +1 -0
- package/dist/views/TableLayoutView/TableLayoutView.d.ts +46 -0
- package/dist/views/TableLayoutView/TableLayoutView.d.ts.map +1 -0
- package/dist/views/TableLayoutView/TableLayoutView.types.d.ts +170 -0
- package/dist/views/TableLayoutView/TableLayoutView.types.d.ts.map +1 -0
- package/dist/views/TableLayoutView/icons.d.ts +27 -0
- package/dist/views/TableLayoutView/icons.d.ts.map +1 -0
- package/dist/views/TableLayoutView/index.d.ts +3 -0
- package/dist/views/TableLayoutView/index.d.ts.map +1 -0
- package/docs/border-radius.md +1261 -1261
- package/docs/colors.md +832 -832
- package/docs/dark-mode-guide.md +1426 -1426
- package/docs/filters.md +1243 -1243
- package/docs/icons.md +1283 -1283
- package/docs/shadows.md +1377 -1377
- package/docs/spacing.md +1684 -1684
- package/docs/typography.md +1268 -1268
- package/package.json +33 -6
- package/postcss.config.cjs +6 -6
- package/src/App.css +42 -42
- package/src/App.tsx +8 -8
- package/src/ButtonTest.tsx +147 -147
- package/src/assets/fonts/README.md +261 -261
- package/src/components/Alert/Alert.stories.tsx +332 -332
- package/src/components/Alert/Alert.tsx +106 -106
- package/src/components/Alert/Alert.types.ts +54 -54
- package/src/components/Avatar/Avatar.tsx +143 -143
- package/src/components/Avatar/Avatar.types.ts +53 -53
- package/src/components/Badge/Badge.stories.tsx +339 -339
- package/src/components/Badge/Badge.tsx +278 -278
- package/src/components/Badge/Badge.types.ts +58 -58
- package/src/components/Button/icons.tsx +87 -87
- package/src/components/Button/index.ts +3 -3
- package/src/components/Checkbox/Checkbox.stories.tsx +453 -453
- package/src/components/Checkbox/Checkbox.tsx +208 -208
- package/src/components/Checkbox/Checkbox.types.ts +61 -61
- package/src/components/DescriptionList/DescriptionList.tsx +96 -96
- package/src/components/DescriptionList/DescriptionList.types.ts +29 -29
- package/src/components/Divider/Divider.tsx +80 -80
- package/src/components/Divider/Divider.types.ts +24 -24
- package/src/components/Dropdown/Dropdown.stories.tsx +552 -552
- package/src/components/Dropdown/Dropdown.tsx +422 -422
- package/src/components/Dropdown/Dropdown.types.ts +146 -146
- package/src/components/Dropdown/README.md +266 -266
- package/src/components/Dropdown/icons.tsx +72 -72
- package/src/components/Dropdown/index.ts +8 -8
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +317 -0
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +287 -0
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +111 -0
- package/src/components/DropdownItemCollapsible/README.md +264 -0
- package/src/components/DropdownItemCollapsible/icons.tsx +57 -0
- package/src/components/DropdownItemCollapsible/index.ts +12 -0
- package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +386 -0
- package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +216 -0
- package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +93 -0
- package/src/components/DropdownItemHeading/README.md +573 -0
- package/src/components/DropdownItemHeading/icons.tsx +125 -0
- package/src/components/DropdownItemHeading/index.ts +3 -0
- package/src/components/Input/Input.tsx +204 -204
- package/src/components/Input/Input.types.ts +80 -80
- package/src/components/Input/icons.tsx +145 -145
- package/src/components/Input/index.ts +2 -2
- package/src/components/Navbar/icons.tsx +102 -102
- package/src/components/NavigationBar/NavigationBar.stories.tsx +406 -406
- package/src/components/NavigationBar/NavigationBar.tsx +246 -246
- package/src/components/NavigationBar/NavigationBar.types.ts +74 -74
- package/src/components/NavigationBar/README.md +469 -469
- package/src/components/NavigationBar/index.ts +2 -2
- package/src/components/NavigationRail/NavigationRail.stories.tsx +417 -417
- package/src/components/NavigationRail/NavigationRail.tsx +418 -418
- package/src/components/NavigationRail/NavigationRail.types.ts +109 -109
- package/src/components/NavigationRail/README.md +224 -224
- package/src/components/NavigationRail/index.ts +2 -2
- package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +667 -0
- package/src/components/NavigationRailItem/NavigationRailItem.tsx +313 -0
- package/src/components/NavigationRailItem/NavigationRailItem.types.ts +167 -0
- package/src/components/NavigationRailItem/README.md +476 -0
- package/src/components/NavigationRailItem/index.ts +2 -0
- package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +462 -0
- package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +332 -0
- package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +178 -0
- package/src/components/NavigationRailPanel/README.md +461 -0
- package/src/components/NavigationRailPanel/index.ts +6 -0
- package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +528 -0
- package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +378 -0
- package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +130 -0
- package/src/components/NavigationRailTypes/README.md +573 -0
- package/src/components/NavigationRailTypes/icons.tsx +141 -0
- package/src/components/NavigationRailTypes/index.ts +7 -0
- package/src/components/Notification/index.ts +3 -3
- package/src/components/POSProductButton/POSProductButton.tsx +152 -152
- package/src/components/POSProductButton/POSProductButton.types.ts +46 -46
- package/src/components/POSProductButton/README.md +269 -269
- package/src/components/POSProductButton/index.ts +2 -2
- package/src/components/POSTable/POSTable.types.ts +83 -83
- package/src/components/POSTable/index.ts +7 -7
- package/src/components/Pagination/Pagination.stories.tsx +555 -555
- package/src/components/Pagination/Pagination.tsx +286 -286
- package/src/components/Pagination/Pagination.types.ts +93 -93
- package/src/components/Pagination/README.md +298 -298
- package/src/components/Pagination/icons.tsx +47 -47
- package/src/components/Pagination/index.ts +3 -3
- package/src/components/Quantity/Quantity.tsx +289 -289
- package/src/components/Quantity/Quantity.types.ts +70 -70
- package/src/components/Radio/Radio.tsx +170 -170
- package/src/components/Radio/Radio.types.ts +122 -122
- package/src/components/Select/README.md +299 -299
- package/src/components/Select/Select.stories.tsx +673 -673
- package/src/components/Select/Select.types.ts +148 -148
- package/src/components/Select/icons.tsx +50 -50
- package/src/components/Select/index.ts +3 -3
- package/src/components/Table/README.md +369 -369
- package/src/components/Table/Table.tsx +688 -688
- package/src/components/Table/Table.types.ts +204 -204
- package/src/components/Table/index.ts +9 -9
- package/src/components/Textarea/Textarea.tsx +188 -188
- package/src/components/Textarea/Textarea.types.ts +54 -54
- package/src/context/ThemeContext.tsx +99 -99
- package/src/context/index.ts +1 -1
- package/src/index.css +29 -29
- package/src/index.ts +63 -0
- package/src/main.tsx +10 -10
- package/src/views/ListView/ListView.stories.tsx +329 -0
- package/src/views/ListView/ListView.tsx +570 -0
- package/src/views/ListView/ListView.types.ts +211 -0
- package/src/views/ListView/icons.tsx +282 -0
- package/src/views/ListView/index.ts +11 -0
- package/src/views/LoginView/LoginView.stories.tsx +148 -0
- package/src/views/LoginView/LoginView.tsx +426 -0
- package/src/views/LoginView/LoginView.types.ts +52 -0
- package/src/views/LoginView/README.md +396 -0
- package/src/views/LoginView/icons.tsx +85 -0
- package/src/views/LoginView/index.ts +3 -0
- package/src/views/RecoverPasswordView/README.md +269 -269
- package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +131 -131
- package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +56 -56
- package/src/views/RecoverPasswordView/icons.tsx +17 -17
- package/src/views/RecoverPasswordView/index.ts +2 -2
- package/src/views/SignUpView/SignUpView.stories.tsx +129 -0
- package/src/views/SignUpView/SignUpView.tsx +503 -0
- package/src/views/SignUpView/SignUpView.types.ts +58 -0
- package/src/views/SignUpView/icons.tsx +71 -0
- package/src/views/SignUpView/index.ts +3 -0
- package/claude/agents/siesa-ui-kit-specialist.md +0 -2401
- package/claude/prompts/component-template.md +0 -121
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { Dropdown, DropdownItem, DropdownHeading, DropdownDivider } from './Dropdown';
|
|
2
|
-
export type {
|
|
3
|
-
DropdownProps,
|
|
4
|
-
DropdownItemProps,
|
|
5
|
-
DropdownHeadingProps,
|
|
6
|
-
DropdownDividerProps,
|
|
7
|
-
} from './Dropdown.types';
|
|
8
|
-
export { ChevronDownIcon, CogIcon, UserIcon, BellIcon, CreditCardIcon } from './icons';
|
|
1
|
+
export { Dropdown, DropdownItem, DropdownHeading, DropdownDivider } from './Dropdown';
|
|
2
|
+
export type {
|
|
3
|
+
DropdownProps,
|
|
4
|
+
DropdownItemProps,
|
|
5
|
+
DropdownHeadingProps,
|
|
6
|
+
DropdownDividerProps,
|
|
7
|
+
} from './Dropdown.types';
|
|
8
|
+
export { ChevronDownIcon, CogIcon, UserIcon, BellIcon, CreditCardIcon } from './icons';
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { DropdownItemCollapsible } from './DropdownItemCollapsible';
|
|
3
|
+
import { UserIcon } from './icons';
|
|
4
|
+
|
|
5
|
+
const meta = {
|
|
6
|
+
title: 'Components/DropdownItemCollapsible',
|
|
7
|
+
component: DropdownItemCollapsible,
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: 'padded',
|
|
10
|
+
backgrounds: {
|
|
11
|
+
default: 'light',
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
tags: ['autodocs'],
|
|
15
|
+
} satisfies Meta<typeof DropdownItemCollapsible>;
|
|
16
|
+
|
|
17
|
+
export default meta;
|
|
18
|
+
type Story = StoryObj<typeof meta>;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Item colapsable básico sin encabezado ni divisor
|
|
22
|
+
* Muestra estructura simple con header colapsable
|
|
23
|
+
*/
|
|
24
|
+
export const Basic: Story = {
|
|
25
|
+
render: () => (
|
|
26
|
+
<DropdownItemCollapsible
|
|
27
|
+
label="Users"
|
|
28
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
29
|
+
children={[
|
|
30
|
+
{
|
|
31
|
+
label: 'Active Users',
|
|
32
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
label: 'Inactive Users',
|
|
36
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
37
|
+
},
|
|
38
|
+
]}
|
|
39
|
+
/>
|
|
40
|
+
),
|
|
41
|
+
args: {
|
|
42
|
+
label: 'Users',
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Item colapsable con encabezado de sección
|
|
48
|
+
* Útil para agrupar items relacionados
|
|
49
|
+
*/
|
|
50
|
+
export const WithHeading: Story = {
|
|
51
|
+
render: () => (
|
|
52
|
+
<DropdownItemCollapsible
|
|
53
|
+
label="Customers"
|
|
54
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
55
|
+
showHeading={true}
|
|
56
|
+
headingLabel="SECTION 1"
|
|
57
|
+
children={[
|
|
58
|
+
{
|
|
59
|
+
label: 'Enterprise',
|
|
60
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
label: 'SMB',
|
|
64
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
label: 'Startup',
|
|
68
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
69
|
+
},
|
|
70
|
+
]}
|
|
71
|
+
showDivider={true}
|
|
72
|
+
/>
|
|
73
|
+
),
|
|
74
|
+
args: {
|
|
75
|
+
label: 'Customers',
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Item colapsable expandido por defecto
|
|
81
|
+
*/
|
|
82
|
+
export const DefaultOpen: Story = {
|
|
83
|
+
render: () => (
|
|
84
|
+
<DropdownItemCollapsible
|
|
85
|
+
label="Departments"
|
|
86
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
87
|
+
defaultOpen={true}
|
|
88
|
+
children={[
|
|
89
|
+
{
|
|
90
|
+
label: 'Sales',
|
|
91
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
label: 'Marketing',
|
|
95
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
label: 'Engineering',
|
|
99
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
label: 'Operations',
|
|
103
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
104
|
+
},
|
|
105
|
+
]}
|
|
106
|
+
/>
|
|
107
|
+
),
|
|
108
|
+
args: {
|
|
109
|
+
label: 'Departments',
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Item deshabilitado
|
|
115
|
+
* No se puede expandir ni interactuar
|
|
116
|
+
*/
|
|
117
|
+
export const Disabled: Story = {
|
|
118
|
+
render: () => (
|
|
119
|
+
<DropdownItemCollapsible
|
|
120
|
+
label="Archived"
|
|
121
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
122
|
+
disabled={true}
|
|
123
|
+
children={[
|
|
124
|
+
{
|
|
125
|
+
label: 'Old Item 1',
|
|
126
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
label: 'Old Item 2',
|
|
130
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
131
|
+
},
|
|
132
|
+
]}
|
|
133
|
+
/>
|
|
134
|
+
),
|
|
135
|
+
args: {
|
|
136
|
+
label: 'Archived',
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Item simple sin items anidados (no colapsable)
|
|
142
|
+
* Actúa como un botón normal
|
|
143
|
+
*/
|
|
144
|
+
export const Simple: Story = {
|
|
145
|
+
args: {
|
|
146
|
+
label: 'Single Item',
|
|
147
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
148
|
+
isCollapsible: false,
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Item sin icono
|
|
154
|
+
*/
|
|
155
|
+
export const WithoutIcon: Story = {
|
|
156
|
+
render: () => (
|
|
157
|
+
<DropdownItemCollapsible
|
|
158
|
+
label="No Icon Item"
|
|
159
|
+
children={[
|
|
160
|
+
{
|
|
161
|
+
label: 'Child 1',
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
label: 'Child 2',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
label: 'Child 3',
|
|
168
|
+
},
|
|
169
|
+
]}
|
|
170
|
+
/>
|
|
171
|
+
),
|
|
172
|
+
args: {
|
|
173
|
+
label: 'No Icon Item',
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Items anidados sin iconos
|
|
179
|
+
*/
|
|
180
|
+
export const ChildrenWithoutIcons: Story = {
|
|
181
|
+
render: () => (
|
|
182
|
+
<DropdownItemCollapsible
|
|
183
|
+
label="Groups"
|
|
184
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
185
|
+
children={[
|
|
186
|
+
{
|
|
187
|
+
label: 'Admins',
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
label: 'Users',
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
label: 'Guests',
|
|
194
|
+
},
|
|
195
|
+
]}
|
|
196
|
+
/>
|
|
197
|
+
),
|
|
198
|
+
args: {
|
|
199
|
+
label: 'Groups',
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Múltiples items colapsables para simular dropdown completo
|
|
205
|
+
*/
|
|
206
|
+
export const MultipleItems: Story = {
|
|
207
|
+
args: {
|
|
208
|
+
label: 'Multi Demo',
|
|
209
|
+
},
|
|
210
|
+
render: () => (
|
|
211
|
+
<div className="flex flex-col gap-0 w-56 bg-bg-primary dark:bg-dark-bg-primary rounded-lg border border-border-primary dark:border-dark-border-primary p-2">
|
|
212
|
+
<DropdownItemCollapsible
|
|
213
|
+
label="Users"
|
|
214
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
215
|
+
showHeading={true}
|
|
216
|
+
headingLabel="RESOURCES"
|
|
217
|
+
showDivider={true}
|
|
218
|
+
children={[
|
|
219
|
+
{
|
|
220
|
+
label: 'Active Users',
|
|
221
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
label: 'Inactive Users',
|
|
225
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
226
|
+
},
|
|
227
|
+
]}
|
|
228
|
+
/>
|
|
229
|
+
|
|
230
|
+
<DropdownItemCollapsible
|
|
231
|
+
label="Departments"
|
|
232
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
233
|
+
showDivider={true}
|
|
234
|
+
children={[
|
|
235
|
+
{
|
|
236
|
+
label: 'Sales',
|
|
237
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
label: 'Marketing',
|
|
241
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
label: 'Engineering',
|
|
245
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
246
|
+
},
|
|
247
|
+
]}
|
|
248
|
+
/>
|
|
249
|
+
|
|
250
|
+
<DropdownItemCollapsible
|
|
251
|
+
label="Settings"
|
|
252
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
253
|
+
showDivider={false}
|
|
254
|
+
isCollapsible={false}
|
|
255
|
+
/>
|
|
256
|
+
</div>
|
|
257
|
+
),
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Ejemplo con callbacks
|
|
262
|
+
*/
|
|
263
|
+
export const WithCallbacks: Story = {
|
|
264
|
+
render: () => (
|
|
265
|
+
<DropdownItemCollapsible
|
|
266
|
+
label="Actions"
|
|
267
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
268
|
+
defaultOpen={false}
|
|
269
|
+
children={[
|
|
270
|
+
{
|
|
271
|
+
label: 'Edit',
|
|
272
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
273
|
+
onClick: () => console.log('Edit clicked'),
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
label: 'Delete',
|
|
277
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
278
|
+
onClick: () => console.log('Delete clicked'),
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
label: 'Archive',
|
|
282
|
+
disabled: true,
|
|
283
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
284
|
+
},
|
|
285
|
+
]}
|
|
286
|
+
onOpenChange={(open) => console.log('Toggle state:', open)}
|
|
287
|
+
/>
|
|
288
|
+
),
|
|
289
|
+
args: {
|
|
290
|
+
label: 'Actions',
|
|
291
|
+
},
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Item con muchos items anidados
|
|
296
|
+
*/
|
|
297
|
+
export const ManyChildren: Story = {
|
|
298
|
+
render: () => (
|
|
299
|
+
<DropdownItemCollapsible
|
|
300
|
+
label="Countries"
|
|
301
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
302
|
+
children={[
|
|
303
|
+
{ label: 'United States' },
|
|
304
|
+
{ label: 'Canada' },
|
|
305
|
+
{ label: 'Mexico' },
|
|
306
|
+
{ label: 'Brazil' },
|
|
307
|
+
{ label: 'Argentina' },
|
|
308
|
+
{ label: 'Chile' },
|
|
309
|
+
{ label: 'Colombia' },
|
|
310
|
+
{ label: 'Peru' },
|
|
311
|
+
]}
|
|
312
|
+
/>
|
|
313
|
+
),
|
|
314
|
+
args: {
|
|
315
|
+
label: 'Countries',
|
|
316
|
+
},
|
|
317
|
+
};
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import type {
|
|
3
|
+
DropdownItemCollapsibleProps,
|
|
4
|
+
DropdownItemCollapsibleChildProps,
|
|
5
|
+
} from './DropdownItemCollapsible.types';
|
|
6
|
+
import { ChevronDownIcon } from './icons';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Componente DropdownItemCollapsible del sistema de diseño Siesa
|
|
10
|
+
*
|
|
11
|
+
* Item colapsable para uso dentro de Dropdowns que permite agrupar
|
|
12
|
+
* items relacionados en secciones expandibles.
|
|
13
|
+
*
|
|
14
|
+
* **Características:**
|
|
15
|
+
* - Soporte completo para expandir/colapsar
|
|
16
|
+
* - Iconos personalizables en header y children
|
|
17
|
+
* - Items anidados indentados automáticamente
|
|
18
|
+
* - Dark mode completo con inversión de colores
|
|
19
|
+
* - Estados: default, hover, active, disabled
|
|
20
|
+
* - Focus rings adaptativos
|
|
21
|
+
* - Animación suave de rotación del chevron
|
|
22
|
+
*
|
|
23
|
+
* **Estados visuales:**
|
|
24
|
+
* - `collapsed`: Muestra solo el header con chevron apuntando down
|
|
25
|
+
* - `expanded`: Muestra header y lista de items anidados
|
|
26
|
+
* - `disabled`: Opacidad 50%, sin interacción
|
|
27
|
+
* - `hover`: Fondo de hover sutil, color primario del icono
|
|
28
|
+
* - `active`: Item anidado seleccionado con fondo custom-primary
|
|
29
|
+
*
|
|
30
|
+
* **Espaciado según Figma:**
|
|
31
|
+
* - Header padding: px-4 py-2 (16px horizontal, 8px vertical)
|
|
32
|
+
* - Item anidado padding: pl-6 pr-4 py-2 (24px left, 16px right, 8px vertical)
|
|
33
|
+
* - Gap entre elementos: gap-3 (12px)
|
|
34
|
+
* - Gap interno (icon + text): gap-3 (12px)
|
|
35
|
+
* - Indent entre niveles: 8px adicional por nivel
|
|
36
|
+
* - Divisor: borde top de 1px con spacing-0.5 (2px) arriba
|
|
37
|
+
* - Sección heading: pt-3 pb-1 px-0 (12px top, 4px bottom, sin horizontal)
|
|
38
|
+
*
|
|
39
|
+
* **Tipografía:**
|
|
40
|
+
* - Header: Paragraph/Small (14px, Regular, line-height 20px) - text-content-primary
|
|
41
|
+
* - Items anidados: Paragraph/Small (14px, Regular, line-height 20px) - text-content-primary
|
|
42
|
+
* - Heading: Paragraph/Tiny (12px, Regular, line-height 16px) - text-content-tertiary
|
|
43
|
+
*
|
|
44
|
+
* **Colores (Light Mode):**
|
|
45
|
+
* - Header text: content-primary (#18181b)
|
|
46
|
+
* - Header icon: content-secondary (#a1a1aa)
|
|
47
|
+
* - Header hover: bg-background-custom-primary (#dbeefe)
|
|
48
|
+
* - Header text hover: content-custom-primary (#0e79fd)
|
|
49
|
+
* - Item text: content-primary (#18181b)
|
|
50
|
+
* - Item hover: bg-transparent (sin fondo)
|
|
51
|
+
* - Divider: border-border-primary (#e4e4e7)
|
|
52
|
+
* - Heading text: content-tertiary (#71717a)
|
|
53
|
+
*
|
|
54
|
+
* **Colores (Dark Mode):**
|
|
55
|
+
* - Header text: content-primary/dark (#fafafa)
|
|
56
|
+
* - Header icon: content-secondary/dark (#a1a1aa)
|
|
57
|
+
* - Header hover: bg-background-custom-primary/dark (#0e5ab0)
|
|
58
|
+
* - Header text hover: content-custom-primary/dark (#bfe2fe)
|
|
59
|
+
* - Item text: content-primary/dark (#fafafa)
|
|
60
|
+
* - Divider: border-border-primary/dark (#3f3f46)
|
|
61
|
+
* - Heading text: content-tertiary/dark (#a1a1aa)
|
|
62
|
+
*
|
|
63
|
+
* **Border radius:**
|
|
64
|
+
* - Todos los items: rounded-lg (8px)
|
|
65
|
+
*
|
|
66
|
+
* **Sombras:**
|
|
67
|
+
* - Ninguna (usado dentro de dropdowns)
|
|
68
|
+
*
|
|
69
|
+
* @see docs/colors.md - Sistema de colores
|
|
70
|
+
* @see docs/typography.md - Sistema tipográfico
|
|
71
|
+
* @see docs/spacing.md - Sistema de espaciado
|
|
72
|
+
* @see https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=6135-34374
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```tsx
|
|
76
|
+
* // Item colapsable simple
|
|
77
|
+
* <DropdownItemCollapsible
|
|
78
|
+
* label="Users"
|
|
79
|
+
* icon={<UserIcon />}
|
|
80
|
+
* children={[
|
|
81
|
+
* { label: "Active Users", icon: <CheckIcon /> },
|
|
82
|
+
* { label: "Inactive Users", icon: <CloseIcon /> },
|
|
83
|
+
* ]}
|
|
84
|
+
* />
|
|
85
|
+
*
|
|
86
|
+
* // Con encabezado de sección
|
|
87
|
+
* <DropdownItemCollapsible
|
|
88
|
+
* label="Customers"
|
|
89
|
+
* icon={<BuildingIcon />}
|
|
90
|
+
* showHeading={true}
|
|
91
|
+
* headingLabel="SECTION 1"
|
|
92
|
+
* children={[...]}
|
|
93
|
+
* />
|
|
94
|
+
*
|
|
95
|
+
* // Item no colapsable (actúa como botón normal)
|
|
96
|
+
* <DropdownItemCollapsible
|
|
97
|
+
* label="Single Item"
|
|
98
|
+
* icon={<StarIcon />}
|
|
99
|
+
* isCollapsible={false}
|
|
100
|
+
* onClick={() => console.log('clicked')}
|
|
101
|
+
* />
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export const DropdownItemCollapsible: React.FC<DropdownItemCollapsibleProps> = ({
|
|
105
|
+
label,
|
|
106
|
+
icon,
|
|
107
|
+
children = [],
|
|
108
|
+
defaultOpen = false,
|
|
109
|
+
disabled = false,
|
|
110
|
+
onOpenChange,
|
|
111
|
+
onClick,
|
|
112
|
+
isCollapsible = children.length > 0,
|
|
113
|
+
showHeading = false,
|
|
114
|
+
headingLabel,
|
|
115
|
+
showDivider = true,
|
|
116
|
+
className = '',
|
|
117
|
+
}) => {
|
|
118
|
+
const [isOpen, setIsOpen] = useState(defaultOpen);
|
|
119
|
+
|
|
120
|
+
const handleToggle = () => {
|
|
121
|
+
if (disabled || !isCollapsible) return;
|
|
122
|
+
|
|
123
|
+
const newOpen = !isOpen;
|
|
124
|
+
setIsOpen(newOpen);
|
|
125
|
+
onOpenChange?.(newOpen);
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
const handleHeaderClick = (e: React.MouseEvent<HTMLButtonElement>) => {
|
|
129
|
+
if (disabled) return;
|
|
130
|
+
|
|
131
|
+
if (isCollapsible) {
|
|
132
|
+
handleToggle();
|
|
133
|
+
} else {
|
|
134
|
+
onClick?.(e);
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
const handleChildClick = (child: DropdownItemCollapsibleChildProps) => (
|
|
139
|
+
e: React.MouseEvent<HTMLDivElement>,
|
|
140
|
+
) => {
|
|
141
|
+
if (child.disabled) return;
|
|
142
|
+
child.onClick?.(e);
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
return (
|
|
146
|
+
<div className={`flex flex-col gap-0.5 w-full ${className}`}>
|
|
147
|
+
{/* Section Heading */}
|
|
148
|
+
{showHeading && headingLabel && (
|
|
149
|
+
<div className="flex flex-col gap-0 items-start pb-1 pt-3 px-0 w-full">
|
|
150
|
+
<p className="font-['Inter:Regular',sans-serif] font-normal leading-4 not-italic text-xs text-content-tertiary dark:text-content-tertiary w-full">
|
|
151
|
+
{headingLabel}
|
|
152
|
+
</p>
|
|
153
|
+
</div>
|
|
154
|
+
)}
|
|
155
|
+
|
|
156
|
+
{/* Header Button */}
|
|
157
|
+
<button
|
|
158
|
+
onClick={handleHeaderClick}
|
|
159
|
+
disabled={disabled}
|
|
160
|
+
className={[
|
|
161
|
+
// Base
|
|
162
|
+
'flex items-center gap-3 px-4 py-2 w-full',
|
|
163
|
+
'rounded-lg cursor-pointer',
|
|
164
|
+
'transition-all duration-150',
|
|
165
|
+
|
|
166
|
+
// Colores y estados (Light Mode)
|
|
167
|
+
!disabled && 'text-content-primary',
|
|
168
|
+
!disabled && 'hover:bg-primary-custom-100',
|
|
169
|
+
!disabled && 'hover:text-primary-custom-600',
|
|
170
|
+
|
|
171
|
+
// Dark Mode
|
|
172
|
+
!disabled && 'dark:text-content-primary',
|
|
173
|
+
!disabled && 'dark:hover:bg-dark-bg-custom',
|
|
174
|
+
!disabled && 'dark:hover:text-dark-content-custom',
|
|
175
|
+
|
|
176
|
+
// Focus ring
|
|
177
|
+
!disabled && 'focus:outline-none',
|
|
178
|
+
!disabled && 'focus:ring-2',
|
|
179
|
+
!disabled && 'focus:ring-offset-2',
|
|
180
|
+
!disabled && 'focus:ring-primary-custom-400',
|
|
181
|
+
!disabled && 'focus:ring-offset-bg-primary',
|
|
182
|
+
!disabled && 'dark:focus:ring-offset-dark-bg-primary',
|
|
183
|
+
|
|
184
|
+
// Disabled
|
|
185
|
+
disabled && 'opacity-50',
|
|
186
|
+
disabled && 'cursor-not-allowed',
|
|
187
|
+
]
|
|
188
|
+
.filter(Boolean)
|
|
189
|
+
.join(' ')}
|
|
190
|
+
aria-expanded={isOpen && isCollapsible}
|
|
191
|
+
aria-disabled={disabled}
|
|
192
|
+
>
|
|
193
|
+
{/* Icon Wrapper */}
|
|
194
|
+
{icon && (
|
|
195
|
+
<div className="flex items-center justify-center w-4 h-4 shrink-0 text-content-secondary dark:text-content-secondary">
|
|
196
|
+
{icon}
|
|
197
|
+
</div>
|
|
198
|
+
)}
|
|
199
|
+
|
|
200
|
+
{/* Content Wrapper */}
|
|
201
|
+
<div className="flex flex-1 flex-col items-start justify-center gap-0.5">
|
|
202
|
+
<p className="font-['Inter:Regular',sans-serif] font-normal leading-5 not-italic text-sm text-left">
|
|
203
|
+
{label}
|
|
204
|
+
</p>
|
|
205
|
+
</div>
|
|
206
|
+
|
|
207
|
+
{/* Chevron (solo visible si es colapsable) */}
|
|
208
|
+
{isCollapsible && (
|
|
209
|
+
<div
|
|
210
|
+
className={[
|
|
211
|
+
'flex items-center justify-center w-4 h-4 shrink-0',
|
|
212
|
+
'text-content-secondary dark:text-content-secondary',
|
|
213
|
+
'transition-transform duration-200',
|
|
214
|
+
isOpen ? 'rotate-180' : 'rotate-0',
|
|
215
|
+
].join(' ')}
|
|
216
|
+
>
|
|
217
|
+
<ChevronDownIcon className="w-4 h-4" />
|
|
218
|
+
</div>
|
|
219
|
+
)}
|
|
220
|
+
</button>
|
|
221
|
+
|
|
222
|
+
{/* Divider */}
|
|
223
|
+
{showDivider && <div className="w-full h-px bg-border-primary dark:bg-dark-border-primary" />}
|
|
224
|
+
|
|
225
|
+
{/* Children Container (expanded) */}
|
|
226
|
+
{isOpen && isCollapsible && children.length > 0 && (
|
|
227
|
+
<div className="flex flex-col gap-0.5 w-full py-2 px-0">
|
|
228
|
+
{children.map((child, index) => (
|
|
229
|
+
<div
|
|
230
|
+
key={index}
|
|
231
|
+
onClick={handleChildClick(child)}
|
|
232
|
+
className={[
|
|
233
|
+
// Base
|
|
234
|
+
'flex gap-3 items-center pl-6 pr-4 py-2 w-full',
|
|
235
|
+
'rounded-lg cursor-pointer',
|
|
236
|
+
'transition-all duration-150',
|
|
237
|
+
|
|
238
|
+
// Colores y estados (Light Mode)
|
|
239
|
+
!child.disabled && 'text-content-primary',
|
|
240
|
+
!child.disabled && 'hover:bg-primary-custom-100',
|
|
241
|
+
!child.disabled && 'hover:text-primary-custom-600',
|
|
242
|
+
|
|
243
|
+
// Dark Mode
|
|
244
|
+
!child.disabled && 'dark:text-content-primary',
|
|
245
|
+
!child.disabled && 'dark:hover:bg-dark-bg-custom',
|
|
246
|
+
!child.disabled && 'dark:hover:text-dark-content-custom',
|
|
247
|
+
|
|
248
|
+
// Focus ring
|
|
249
|
+
!child.disabled && 'focus:outline-none',
|
|
250
|
+
!child.disabled && 'focus:ring-2',
|
|
251
|
+
!child.disabled && 'focus:ring-offset-2',
|
|
252
|
+
!child.disabled && 'focus:ring-primary-custom-400',
|
|
253
|
+
!child.disabled && 'focus:ring-offset-bg-primary',
|
|
254
|
+
!child.disabled && 'dark:focus:ring-offset-dark-bg-primary',
|
|
255
|
+
|
|
256
|
+
// Disabled
|
|
257
|
+
child.disabled && 'opacity-50',
|
|
258
|
+
child.disabled && 'cursor-not-allowed',
|
|
259
|
+
|
|
260
|
+
// Custom classes
|
|
261
|
+
child.className,
|
|
262
|
+
]
|
|
263
|
+
.filter(Boolean)
|
|
264
|
+
.join(' ')}
|
|
265
|
+
>
|
|
266
|
+
{/* Child Icon Wrapper */}
|
|
267
|
+
{child.icon && (
|
|
268
|
+
<div className="flex items-center justify-center w-4 h-4 shrink-0 text-content-secondary dark:text-content-secondary">
|
|
269
|
+
{child.icon}
|
|
270
|
+
</div>
|
|
271
|
+
)}
|
|
272
|
+
|
|
273
|
+
{/* Child Content Wrapper */}
|
|
274
|
+
<div className="flex flex-1 flex-col items-start justify-center gap-0.5">
|
|
275
|
+
<p className="font-['Inter:Regular',sans-serif] font-normal leading-5 not-italic text-sm text-left">
|
|
276
|
+
{child.label}
|
|
277
|
+
</p>
|
|
278
|
+
</div>
|
|
279
|
+
</div>
|
|
280
|
+
))}
|
|
281
|
+
</div>
|
|
282
|
+
)}
|
|
283
|
+
</div>
|
|
284
|
+
);
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
export default DropdownItemCollapsible;
|