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
|
@@ -0,0 +1,573 @@
|
|
|
1
|
+
# DropdownItemHeading
|
|
2
|
+
|
|
3
|
+
Componente de encabezado especializado para menús dropdown del sistema de diseño Siesa. Muestra un icono, label principal, descripción opcional y acción opcional con soporte completo para dark mode.
|
|
4
|
+
|
|
5
|
+
## 📋 Tabla de Contenidos
|
|
6
|
+
|
|
7
|
+
1. [Descripción](#descripción)
|
|
8
|
+
2. [Especificaciones](#especificaciones)
|
|
9
|
+
3. [Instalación & Uso](#instalación--uso)
|
|
10
|
+
4. [Props](#props)
|
|
11
|
+
5. [Ejemplos](#ejemplos)
|
|
12
|
+
6. [Guía de Componentes Relacionados](#guía-de-componentes-relacionados)
|
|
13
|
+
7. [Mejores Prácticas](#mejores-prácticas)
|
|
14
|
+
8. [Dark Mode](#dark-mode)
|
|
15
|
+
9. [Accesibilidad](#accesibilidad)
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Descripción
|
|
20
|
+
|
|
21
|
+
El componente `DropdownItemHeading` es un encabezado especializado para menús dropdown que proporciona una forma consistente de mostrar encabezados con icono, label, descripción y acciones.
|
|
22
|
+
|
|
23
|
+
### Casos de Uso
|
|
24
|
+
|
|
25
|
+
- Encabezados de secciones en dropdowns
|
|
26
|
+
- Información de usuario con opciones de acción (Clear, Reset)
|
|
27
|
+
- Configuraciones rápidas en menús
|
|
28
|
+
- Menús contextuales con información descriptiva
|
|
29
|
+
|
|
30
|
+
### Características Principales
|
|
31
|
+
|
|
32
|
+
✅ Icono opcional de 16x16px
|
|
33
|
+
✅ Label principal (14px Bold)
|
|
34
|
+
✅ Descripción opcional (12px Regular)
|
|
35
|
+
✅ Acción opcional en la derecha (10px Regular)
|
|
36
|
+
✅ Soporte completo para dark mode
|
|
37
|
+
✅ Focus rings adaptativos
|
|
38
|
+
✅ Tipografía del sistema (Label/Small, Paragraph/Tiny)
|
|
39
|
+
✅ Espaciado consistente (12px gaps)
|
|
40
|
+
✅ Diseño flexible y responsivo
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Especificaciones
|
|
45
|
+
|
|
46
|
+
### Dimensiones
|
|
47
|
+
|
|
48
|
+
| Elemento | Valor |
|
|
49
|
+
|----------|-------|
|
|
50
|
+
| Altura | Flexible (contenido) |
|
|
51
|
+
| Ancho mínimo | 224px / 56 (Tailwind: w-56) |
|
|
52
|
+
| Padding H | 16px (px-4) |
|
|
53
|
+
| Padding V | 8px (py-2) |
|
|
54
|
+
| Border radius | 8px (rounded-lg) |
|
|
55
|
+
|
|
56
|
+
### Tipografía
|
|
57
|
+
|
|
58
|
+
| Elemento | Estilo | Tamaño | Peso | Altura de Línea | Color (Light) | Color (Dark) |
|
|
59
|
+
|----------|--------|--------|------|-----------------|---------------|-------------|
|
|
60
|
+
| Label | Label/Small | 14px | Bold (700) | 20px | #18181b | #bfe2fe |
|
|
61
|
+
| Description | Paragraph/Tiny | 12px | Regular (400) | 16px | #a1a1aa | #93d1fd |
|
|
62
|
+
| Action | Paragraph/XXSmall | 10px | Regular (400) | 12px | #a1a1aa | #93d1fd |
|
|
63
|
+
|
|
64
|
+
### Espaciado
|
|
65
|
+
|
|
66
|
+
| Elemento | Valor |
|
|
67
|
+
|----------|-------|
|
|
68
|
+
| Gap general (icon-content-action) | 12px (gap-3) |
|
|
69
|
+
| Gap entre label y description | 2px (gap-0.5) |
|
|
70
|
+
| Icon wrapper | 16x16px (w-4 h-4) |
|
|
71
|
+
| Content wrapper | flex-1 (flexible) |
|
|
72
|
+
|
|
73
|
+
### Icono
|
|
74
|
+
|
|
75
|
+
| Propiedad | Valor |
|
|
76
|
+
|-----------|-------|
|
|
77
|
+
| Tamaño | 16x16px |
|
|
78
|
+
| Color (Light) | primary-custom-600 (#0e79fd) |
|
|
79
|
+
| Color (Dark) | dark-content-inverse (#bfe2fe) |
|
|
80
|
+
| Icono por defecto | Cog (heroicons/cog-8-tooth) |
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Instalación & Uso
|
|
85
|
+
|
|
86
|
+
### Importación
|
|
87
|
+
|
|
88
|
+
```tsx
|
|
89
|
+
import { DropdownItemHeading } from '@/components/DropdownItemHeading';
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Uso Básico
|
|
93
|
+
|
|
94
|
+
```tsx
|
|
95
|
+
<DropdownItemHeading
|
|
96
|
+
label="My Account"
|
|
97
|
+
description="user@example.com"
|
|
98
|
+
showDescription={true}
|
|
99
|
+
showIcon={true}
|
|
100
|
+
actionLabel="Clear"
|
|
101
|
+
showAction={true}
|
|
102
|
+
/>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Props
|
|
108
|
+
|
|
109
|
+
### Interface `DropdownItemHeadingProps`
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
interface DropdownItemHeadingProps {
|
|
113
|
+
label?: string;
|
|
114
|
+
description?: string;
|
|
115
|
+
showDescription?: boolean;
|
|
116
|
+
icon?: ReactNode;
|
|
117
|
+
showIcon?: boolean;
|
|
118
|
+
actionLabel?: string;
|
|
119
|
+
showAction?: boolean;
|
|
120
|
+
onActionClick?: (event: React.MouseEvent<HTMLDivElement>) => void;
|
|
121
|
+
className?: string;
|
|
122
|
+
[key: string]: unknown;
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Detalle de Props
|
|
127
|
+
|
|
128
|
+
#### `label`
|
|
129
|
+
- **Tipo**: `string`
|
|
130
|
+
- **Default**: `'Label'`
|
|
131
|
+
- **Descripción**: Texto del label principal
|
|
132
|
+
- **Tipografía**: Label/Small (14px Bold)
|
|
133
|
+
- **Dark Mode**: #18181b (light) → #bfe2fe (dark)
|
|
134
|
+
|
|
135
|
+
#### `description`
|
|
136
|
+
- **Tipo**: `string`
|
|
137
|
+
- **Default**: `undefined`
|
|
138
|
+
- **Descripción**: Texto de descripción secundaria
|
|
139
|
+
- **Tipografía**: Paragraph/Tiny (12px Regular)
|
|
140
|
+
- **Dark Mode**: #a1a1aa (light) → #93d1fd (dark)
|
|
141
|
+
|
|
142
|
+
#### `showDescription`
|
|
143
|
+
- **Tipo**: `boolean`
|
|
144
|
+
- **Default**: `true`
|
|
145
|
+
- **Descripción**: Si se debe mostrar la descripción
|
|
146
|
+
|
|
147
|
+
#### `iconType`
|
|
148
|
+
- **Tipo**: `'cog' | 'custom' | null`
|
|
149
|
+
- **Default**: `'cog'`
|
|
150
|
+
- **Descripción**: Tipo de icono a mostrar
|
|
151
|
+
- `'cog'`: Icono de engranaje (heroicons-micro/cog-6-tooth)
|
|
152
|
+
- `'custom'`: Icono personalizado (proporcionar en `icon`)
|
|
153
|
+
- `null`: Sin icono
|
|
154
|
+
|
|
155
|
+
#### `icon`
|
|
156
|
+
- **Tipo**: `ReactNode`
|
|
157
|
+
- **Default**: `undefined`
|
|
158
|
+
- **Descripción**: Icono personalizado a mostrar
|
|
159
|
+
- **Solo se usa**: Cuando `iconType` es `'custom'`
|
|
160
|
+
- **Tamaño recomendado**: 16x16px
|
|
161
|
+
|
|
162
|
+
#### `showIcon`
|
|
163
|
+
- **Tipo**: `boolean`
|
|
164
|
+
- **Default**: `true`
|
|
165
|
+
- **Descripción**: Si se debe mostrar el icono
|
|
166
|
+
|
|
167
|
+
#### `actionLabel`
|
|
168
|
+
- **Tipo**: `string`
|
|
169
|
+
- **Default**: `undefined`
|
|
170
|
+
- **Descripción**: Texto de la acción (derecha)
|
|
171
|
+
- **Tipografía**: Paragraph/XXSmall (10px Regular)
|
|
172
|
+
- **Ejemplos**: "Clear", "Reset", "Manage"
|
|
173
|
+
|
|
174
|
+
#### `showAction`
|
|
175
|
+
- **Tipo**: `boolean`
|
|
176
|
+
- **Default**: `false`
|
|
177
|
+
- **Descripción**: Si se debe mostrar la acción
|
|
178
|
+
|
|
179
|
+
#### `onActionClick`
|
|
180
|
+
- **Tipo**: `(event: React.MouseEvent<HTMLDivElement>) => void`
|
|
181
|
+
- **Default**: `undefined`
|
|
182
|
+
- **Descripción**: Callback ejecutado al hacer click en la acción
|
|
183
|
+
|
|
184
|
+
#### `className`
|
|
185
|
+
- **Tipo**: `string`
|
|
186
|
+
- **Default**: `''`
|
|
187
|
+
- **Descripción**: Clases CSS adicionales para personalización
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Ejemplos
|
|
192
|
+
|
|
193
|
+
### Ejemplo 1: Información de Usuario
|
|
194
|
+
|
|
195
|
+
```tsx
|
|
196
|
+
<DropdownItemHeading
|
|
197
|
+
label="John Doe"
|
|
198
|
+
description="john@example.com"
|
|
199
|
+
showDescription={true}
|
|
200
|
+
iconType="cog"
|
|
201
|
+
showIcon={true}
|
|
202
|
+
actionLabel="Logout"
|
|
203
|
+
showAction={true}
|
|
204
|
+
onActionClick={() => {
|
|
205
|
+
console.log('User logged out');
|
|
206
|
+
// Handle logout logic
|
|
207
|
+
}}
|
|
208
|
+
/>
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Ejemplo 2: Configuración Rápida
|
|
212
|
+
|
|
213
|
+
```tsx
|
|
214
|
+
<DropdownItemHeading
|
|
215
|
+
label="Preferences"
|
|
216
|
+
description="Customize your experience"
|
|
217
|
+
showDescription={true}
|
|
218
|
+
iconType="cog"
|
|
219
|
+
showIcon={true}
|
|
220
|
+
actionLabel="Reset"
|
|
221
|
+
showAction={true}
|
|
222
|
+
onActionClick={handleResetPreferences}
|
|
223
|
+
/>
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Ejemplo 3: Solo Label
|
|
227
|
+
|
|
228
|
+
```tsx
|
|
229
|
+
<DropdownItemHeading
|
|
230
|
+
label="Quick Actions"
|
|
231
|
+
showDescription={false}
|
|
232
|
+
iconType="cog"
|
|
233
|
+
showIcon={true}
|
|
234
|
+
/>
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Ejemplo 4: Sin Icono
|
|
238
|
+
|
|
239
|
+
```tsx
|
|
240
|
+
<DropdownItemHeading
|
|
241
|
+
label="Recent Searches"
|
|
242
|
+
description="Last 5 searches"
|
|
243
|
+
showDescription={true}
|
|
244
|
+
iconType={null}
|
|
245
|
+
showIcon={false}
|
|
246
|
+
actionLabel="Clear"
|
|
247
|
+
showAction={true}
|
|
248
|
+
onActionClick={handleClearSearches}
|
|
249
|
+
/>
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
### Ejemplo 5: Icono Personalizado
|
|
253
|
+
|
|
254
|
+
```tsx
|
|
255
|
+
import UserIcon from '@/assets/icons/user.svg';
|
|
256
|
+
import { DropdownItemHeading } from '@/components/DropdownItemHeading';
|
|
257
|
+
|
|
258
|
+
<DropdownItemHeading
|
|
259
|
+
label="Profile"
|
|
260
|
+
description="user@example.com"
|
|
261
|
+
showDescription={true}
|
|
262
|
+
iconType="custom"
|
|
263
|
+
icon={<UserIcon className="w-4 h-4" />}
|
|
264
|
+
showIcon={true}
|
|
265
|
+
actionLabel="Edit"
|
|
266
|
+
showAction={true}
|
|
267
|
+
onActionClick={handleEditProfile}
|
|
268
|
+
/>
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Ejemplo 6: En Contexto de Dropdown
|
|
272
|
+
|
|
273
|
+
```tsx
|
|
274
|
+
<Dropdown items={[
|
|
275
|
+
{
|
|
276
|
+
isHeading: true,
|
|
277
|
+
children: (
|
|
278
|
+
<DropdownItemHeading
|
|
279
|
+
label="My Account"
|
|
280
|
+
description="user@example.com"
|
|
281
|
+
iconType="cog"
|
|
282
|
+
actionLabel="Logout"
|
|
283
|
+
showAction={true}
|
|
284
|
+
onActionClick={handleLogout}
|
|
285
|
+
/>
|
|
286
|
+
),
|
|
287
|
+
},
|
|
288
|
+
{ isDivider: true },
|
|
289
|
+
{ children: 'Settings', icon: <SettingsIcon /> },
|
|
290
|
+
{ children: 'Help', icon: <HelpIcon /> },
|
|
291
|
+
]} />
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## Guía de Componentes Relacionados
|
|
297
|
+
|
|
298
|
+
### Dropdown
|
|
299
|
+
El componente padre que utiliza `DropdownItemHeading` como encabezado de menú.
|
|
300
|
+
|
|
301
|
+
```tsx
|
|
302
|
+
import { Dropdown, DropdownItemHeading } from '@/components';
|
|
303
|
+
|
|
304
|
+
<Dropdown items={[
|
|
305
|
+
{
|
|
306
|
+
isHeading: true,
|
|
307
|
+
children: <DropdownItemHeading label="Account" description="user@example.com" />,
|
|
308
|
+
},
|
|
309
|
+
]} />
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### Button
|
|
313
|
+
Componente de botón principal del sistema. Usado en acciones secundarias.
|
|
314
|
+
|
|
315
|
+
### Badge
|
|
316
|
+
Para mostrar notificaciones o estados junto a la información.
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Mejores Prácticas
|
|
321
|
+
|
|
322
|
+
### 1. Mantén Labels Concisos
|
|
323
|
+
```tsx
|
|
324
|
+
// ✅ Bien
|
|
325
|
+
<DropdownItemHeading label="My Account" />
|
|
326
|
+
|
|
327
|
+
// ❌ Evitar
|
|
328
|
+
<DropdownItemHeading label="Your Current Account Information and Settings" />
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
### 2. Proporciona Descripción Contextual
|
|
332
|
+
```tsx
|
|
333
|
+
// ✅ Bien
|
|
334
|
+
<DropdownItemHeading
|
|
335
|
+
label="Settings"
|
|
336
|
+
description="Manage your preferences"
|
|
337
|
+
/>
|
|
338
|
+
|
|
339
|
+
// ❌ Evitar
|
|
340
|
+
<DropdownItemHeading
|
|
341
|
+
label="Settings"
|
|
342
|
+
description="This is a menu item"
|
|
343
|
+
/>
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### 3. Usa Acciones Claras
|
|
347
|
+
```tsx
|
|
348
|
+
// ✅ Bien
|
|
349
|
+
actionLabel="Clear"
|
|
350
|
+
actionLabel="Reset"
|
|
351
|
+
actionLabel="Edit"
|
|
352
|
+
|
|
353
|
+
// ❌ Evitar
|
|
354
|
+
actionLabel="Go"
|
|
355
|
+
actionLabel="Do Something"
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
### 4. Maneja Errores en Callbacks
|
|
359
|
+
|
|
360
|
+
```tsx
|
|
361
|
+
<DropdownItemHeading
|
|
362
|
+
actionLabel="Delete"
|
|
363
|
+
onActionClick={async (e) => {
|
|
364
|
+
try {
|
|
365
|
+
await deleteItem();
|
|
366
|
+
console.log('Item deleted');
|
|
367
|
+
} catch (error) {
|
|
368
|
+
console.error('Delete failed:', error);
|
|
369
|
+
}
|
|
370
|
+
}}
|
|
371
|
+
/>
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
### 5. Respeta la Jerarquía Visual
|
|
375
|
+
|
|
376
|
+
```tsx
|
|
377
|
+
// ✅ Bien: Información relevante en descripción
|
|
378
|
+
<DropdownItemHeading
|
|
379
|
+
label="Documents"
|
|
380
|
+
description="3 items, 5.2 MB"
|
|
381
|
+
showDescription={true}
|
|
382
|
+
/>
|
|
383
|
+
|
|
384
|
+
// ❌ Evitar: Información no importante
|
|
385
|
+
<DropdownItemHeading
|
|
386
|
+
label="Documents"
|
|
387
|
+
description="This is a folder location"
|
|
388
|
+
showDescription={true}
|
|
389
|
+
/>
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
### 6. Gestiona Textos Largos
|
|
393
|
+
|
|
394
|
+
```tsx
|
|
395
|
+
// Para textos muy largos, considera truncar en el parent
|
|
396
|
+
<div className="max-w-xs">
|
|
397
|
+
<DropdownItemHeading
|
|
398
|
+
label="Very Long Label That Might Overflow"
|
|
399
|
+
description="Truncated with ellipsis"
|
|
400
|
+
/>
|
|
401
|
+
</div>
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
## Dark Mode
|
|
407
|
+
|
|
408
|
+
El componente tiene soporte completo para dark mode con la estrategia `class` de Tailwind.
|
|
409
|
+
|
|
410
|
+
### Colores en Dark Mode
|
|
411
|
+
|
|
412
|
+
```css
|
|
413
|
+
/* Label */
|
|
414
|
+
.dark .dropdown-item-heading {
|
|
415
|
+
color: #bfe2fe; /* dark-content-inverse */
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
/* Description & Action */
|
|
419
|
+
.dark .dropdown-item-description,
|
|
420
|
+
.dark .dropdown-item-action {
|
|
421
|
+
color: #93d1fd; /* dark-border-inverse */
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/* Icon */
|
|
425
|
+
.dark .dropdown-item-icon {
|
|
426
|
+
color: #bfe2fe; /* dark-content-inverse */
|
|
427
|
+
}
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
### Activar Dark Mode
|
|
431
|
+
|
|
432
|
+
```tsx
|
|
433
|
+
// En el elemento raíz de tu aplicación
|
|
434
|
+
<div className="dark">
|
|
435
|
+
<DropdownItemHeading label="Dark mode enabled" />
|
|
436
|
+
</div>
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
## Accesibilidad
|
|
442
|
+
|
|
443
|
+
### ARIA
|
|
444
|
+
|
|
445
|
+
El componente usa etiquetas semánticas y atributos ARIA:
|
|
446
|
+
|
|
447
|
+
```tsx
|
|
448
|
+
// Acción con keyboard support
|
|
449
|
+
<div
|
|
450
|
+
role="button"
|
|
451
|
+
tabIndex={0}
|
|
452
|
+
onClick={onActionClick}
|
|
453
|
+
onKeyDown={(e) => {
|
|
454
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
|
455
|
+
onActionClick?.(e as any);
|
|
456
|
+
}
|
|
457
|
+
}}
|
|
458
|
+
>
|
|
459
|
+
{actionLabel}
|
|
460
|
+
</div>
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
### Keyboard Navigation
|
|
464
|
+
|
|
465
|
+
- **Tab**: Navega a la acción (si está visible)
|
|
466
|
+
- **Enter / Space**: Activa la acción
|
|
467
|
+
- **Escape**: Cierra el dropdown parent (manejo en Dropdown)
|
|
468
|
+
|
|
469
|
+
### Screen Readers
|
|
470
|
+
|
|
471
|
+
```tsx
|
|
472
|
+
// Íconos son hidden para screen readers
|
|
473
|
+
<svg className="w-4 h-4" aria-hidden="true">
|
|
474
|
+
{/* ... */}
|
|
475
|
+
</svg>
|
|
476
|
+
|
|
477
|
+
// Acciones tienen soporte de keyboard
|
|
478
|
+
<div role="button" tabIndex={0}>
|
|
479
|
+
Clear
|
|
480
|
+
</div>
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
### Colores y Contraste
|
|
484
|
+
|
|
485
|
+
- **Light Mode**: WCAG AAA compliant
|
|
486
|
+
- **Dark Mode**: WCAG AAA compliant
|
|
487
|
+
- Ratio de contraste mínimo: 4.5:1 para texto normal
|
|
488
|
+
- Ratio de contraste mínimo: 3:1 para texto grande
|
|
489
|
+
|
|
490
|
+
---
|
|
491
|
+
|
|
492
|
+
## Especificaciones de Figma
|
|
493
|
+
|
|
494
|
+
**Figma Node**: `6135:32539`
|
|
495
|
+
**Figma File**: [Siesa UI Kit - DropdownItemHeading](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=6135-32539)
|
|
496
|
+
|
|
497
|
+
### Componentes Relacionados en Figma
|
|
498
|
+
|
|
499
|
+
- **Dropdown Item**: `6135:32529`
|
|
500
|
+
- **Dropdown**: `6135:31234`
|
|
501
|
+
- **Button**: `4001:17240`
|
|
502
|
+
|
|
503
|
+
---
|
|
504
|
+
|
|
505
|
+
## Troubleshooting
|
|
506
|
+
|
|
507
|
+
### El texto se corta sin mostrar ellipsis
|
|
508
|
+
|
|
509
|
+
Asegúrate de que el contenedor padre tenga un ancho definido:
|
|
510
|
+
|
|
511
|
+
```tsx
|
|
512
|
+
// ✅ Bien
|
|
513
|
+
<div className="w-56">
|
|
514
|
+
<DropdownItemHeading label="Long label" />
|
|
515
|
+
</div>
|
|
516
|
+
|
|
517
|
+
// ❌ Evitar
|
|
518
|
+
<DropdownItemHeading label="Long label" />
|
|
519
|
+
```
|
|
520
|
+
|
|
521
|
+
### El icono no se muestra en dark mode
|
|
522
|
+
|
|
523
|
+
Verifica que el icono heredar colores correctamente:
|
|
524
|
+
|
|
525
|
+
```tsx
|
|
526
|
+
// ✅ Bien
|
|
527
|
+
<MyIcon className="text-primary-custom-600 dark:text-dark-content-inverse" />
|
|
528
|
+
|
|
529
|
+
// ❌ Evitar
|
|
530
|
+
<MyIcon style={{ color: '#0e79fd' }} />
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
### La acción no responde al click
|
|
534
|
+
|
|
535
|
+
Asegúrate de proporcionar el callback:
|
|
536
|
+
|
|
537
|
+
```tsx
|
|
538
|
+
<DropdownItemHeading
|
|
539
|
+
showAction={true}
|
|
540
|
+
actionLabel="Clear"
|
|
541
|
+
onActionClick={(e) => {
|
|
542
|
+
console.log('Action clicked');
|
|
543
|
+
// Handle action
|
|
544
|
+
}}
|
|
545
|
+
/>
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
---
|
|
549
|
+
|
|
550
|
+
## Referencia de Documentación del Sistema
|
|
551
|
+
|
|
552
|
+
- [Sistema de Colores](../../../docs/colors.md)
|
|
553
|
+
- [Sistema de Tipografía](../../../docs/typography.md)
|
|
554
|
+
- [Sistema de Espaciado](../../../docs/spacing.md)
|
|
555
|
+
- [Sistema de Sombras](../../../docs/shadows.md)
|
|
556
|
+
|
|
557
|
+
---
|
|
558
|
+
|
|
559
|
+
## Cambios Recientes
|
|
560
|
+
|
|
561
|
+
### v1.0.0 (Inicial)
|
|
562
|
+
- ✨ Componente inicial creado
|
|
563
|
+
- ✅ Soporte completo para dark mode
|
|
564
|
+
- ✅ Props opcionales para mostrar/ocultar elementos
|
|
565
|
+
- ✅ Callback de acción
|
|
566
|
+
- ✅ Typografía del sistema
|
|
567
|
+
- ✅ Accesibilidad mejorada
|
|
568
|
+
|
|
569
|
+
---
|
|
570
|
+
|
|
571
|
+
## Licencia
|
|
572
|
+
|
|
573
|
+
Part of Siesa UI Kit - Todos los derechos reservados © Siesa 2024
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Iconos para el componente DropdownItemHeading
|
|
3
|
+
* Usando heroicons-micro según especificaciones de Figma
|
|
4
|
+
*
|
|
5
|
+
* Los iconos se pueden pasar como strings al componente:
|
|
6
|
+
* - 'cog-6-tooth': Icono de engranaje
|
|
7
|
+
* - 'check': Icono de check
|
|
8
|
+
* - 'x': Icono de cerrar
|
|
9
|
+
* - 'chevron-down': Icono de chevron hacia abajo
|
|
10
|
+
*
|
|
11
|
+
* @see DropdownItemHeading.tsx para ver cómo se usan
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import React from 'react';
|
|
15
|
+
|
|
16
|
+
interface IconProps {
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Icono Cog (heroicons-micro/cog-6-tooth)
|
|
22
|
+
* Usado como icono por defecto en DropdownItemHeading
|
|
23
|
+
* Tamaño: 16x16px
|
|
24
|
+
*/
|
|
25
|
+
export const CogIcon = ({ className = 'w-4 h-4' }: IconProps) => (
|
|
26
|
+
<svg
|
|
27
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
28
|
+
viewBox="0 0 16 16"
|
|
29
|
+
fill="currentColor"
|
|
30
|
+
className={className}
|
|
31
|
+
>
|
|
32
|
+
<path
|
|
33
|
+
fillRule="evenodd"
|
|
34
|
+
d="M6.455 1.45A.5.5 0 0 1 6.952 1h2.096a.5.5 0 0 1 .497.45l.186 1.858a4.996 4.996 0 0 1 1.466.848l1.703-.769a.5.5 0 0 1 .639.206l1.047 1.814a.5.5 0 0 1-.14.656l-1.517 1.09a5.026 5.026 0 0 1 0 1.694l1.516 1.09a.5.5 0 0 1 .141.656l-1.047 1.814a.5.5 0 0 1-.639.206l-1.703-.768c-.433.36-.928.649-1.466.847l-.186 1.858a.5.5 0 0 1-.497.45H6.952a.5.5 0 0 1-.497-.45l-.186-1.858a4.993 4.993 0 0 1-1.466-.848l-1.703.769a.5.5 0 0 1-.639-.206l-1.047-1.814a.5.5 0 0 1 .14-.656l1.517-1.09a5.033 5.033 0 0 1 0-1.694l-1.516-1.09a.5.5 0 0 1-.141-.656L2.461 3.39a.5.5 0 0 1 .639-.206l1.703.768c.433-.36.928-.649 1.466-.847l.186-1.858ZM8 11a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z"
|
|
35
|
+
clipRule="evenodd"
|
|
36
|
+
/>
|
|
37
|
+
</svg>
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Icono Check (heroicons-micro/check)
|
|
42
|
+
*/
|
|
43
|
+
export const CheckIcon = ({ className = 'w-4 h-4' }: IconProps) => (
|
|
44
|
+
<svg
|
|
45
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
46
|
+
viewBox="0 0 16 16"
|
|
47
|
+
fill="currentColor"
|
|
48
|
+
className={className}
|
|
49
|
+
>
|
|
50
|
+
<path
|
|
51
|
+
fillRule="evenodd"
|
|
52
|
+
d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 1 1-1.06-1.06L12.69 4.22a.75.75 0 0 1 1.06 0Z"
|
|
53
|
+
clipRule="evenodd"
|
|
54
|
+
/>
|
|
55
|
+
<path
|
|
56
|
+
fillRule="evenodd"
|
|
57
|
+
d="M2.22 9.28a.75.75 0 0 0 0 1.06l2.5 2.5a.75.75 0 1 0 1.06-1.06l-2.5-2.5a.75.75 0 0 0-1.06 0Z"
|
|
58
|
+
clipRule="evenodd"
|
|
59
|
+
/>
|
|
60
|
+
</svg>
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Icono X (heroicons-micro/x-mark)
|
|
65
|
+
*/
|
|
66
|
+
export const XIcon = ({ className = 'w-4 h-4' }: IconProps) => (
|
|
67
|
+
<svg
|
|
68
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
69
|
+
viewBox="0 0 16 16"
|
|
70
|
+
fill="currentColor"
|
|
71
|
+
className={className}
|
|
72
|
+
>
|
|
73
|
+
<path d="M5.28 4.22a.75.75 0 0 0-1.06 1.06L6.94 8l-2.72 2.72a.75.75 0 1 0 1.06 1.06L8 9.06l2.72 2.72a.75.75 0 1 0 1.06-1.06L9.06 8l2.72-2.72a.75.75 0 0 0-1.06-1.06L8 6.94 5.28 4.22Z" />
|
|
74
|
+
</svg>
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Icono ChevronDown (heroicons-micro/chevron-down)
|
|
79
|
+
*/
|
|
80
|
+
export const ChevronDownIcon = ({ className = 'w-4 h-4' }: IconProps) => (
|
|
81
|
+
<svg
|
|
82
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
83
|
+
viewBox="0 0 16 16"
|
|
84
|
+
fill="currentColor"
|
|
85
|
+
className={className}
|
|
86
|
+
>
|
|
87
|
+
<path
|
|
88
|
+
fillRule="evenodd"
|
|
89
|
+
d="M4.22 6.22a.75.75 0 0 1 1.06 0L8 8.94l2.72-2.72a.75.75 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 7.28a.75.75 0 0 1 0-1.06Z"
|
|
90
|
+
clipRule="evenodd"
|
|
91
|
+
/>
|
|
92
|
+
</svg>
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Mapeo de nombres de iconos a componentes
|
|
97
|
+
* Permite usar strings para referenciar iconos
|
|
98
|
+
*/
|
|
99
|
+
export const iconMap: Record<string, React.FC<IconProps>> = {
|
|
100
|
+
'cog-6-tooth': CogIcon,
|
|
101
|
+
'check': CheckIcon,
|
|
102
|
+
'x': XIcon,
|
|
103
|
+
'chevron-down': ChevronDownIcon,
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Obtener un icono por su nombre
|
|
108
|
+
* @param iconName - Nombre del icono (ej: 'cog-6-tooth', 'check', 'x', 'chevron-down')
|
|
109
|
+
* @param className - Clases CSS adicionales
|
|
110
|
+
* @returns Componente del icono o null si no existe
|
|
111
|
+
*/
|
|
112
|
+
export const getIcon = (
|
|
113
|
+
iconName: string | null | undefined,
|
|
114
|
+
className?: string
|
|
115
|
+
): React.ReactNode => {
|
|
116
|
+
if (!iconName) return null;
|
|
117
|
+
|
|
118
|
+
const IconComponent = iconMap[iconName];
|
|
119
|
+
if (!IconComponent) {
|
|
120
|
+
console.warn(`Icon "${iconName}" not found in iconMap`);
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
return <IconComponent className={className} />;
|
|
125
|
+
};
|