siesa-ui-kit 1.0.4 → 1.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -115
- package/bin/install.cjs +502 -502
- package/bin/prepare-publish.cjs +28 -28
- package/bin/restore-folders.cjs +28 -28
- package/dist/index.cjs +1479 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +1479 -0
- package/dist/index.js.map +1 -0
- package/package.json +92 -111
- package/claude/agents/siesa-ui-kit-specialist.md +0 -2445
- package/claude/prompts/component-template.md +0 -121
- package/claude/prompts/siesa-ui-kit.md +0 -28
- package/claude/settings.local.json +0 -72
- package/dist/ButtonTest.d.ts +0 -6
- package/dist/ButtonTest.d.ts.map +0 -1
- package/dist/components/Alert/Alert.d.ts +0 -23
- package/dist/components/Alert/Alert.d.ts.map +0 -1
- package/dist/components/Alert/Alert.types.d.ts +0 -46
- package/dist/components/Alert/Alert.types.d.ts.map +0 -1
- package/dist/components/Avatar/Avatar.d.ts +0 -41
- package/dist/components/Avatar/Avatar.d.ts.map +0 -1
- package/dist/components/Avatar/Avatar.types.d.ts +0 -46
- package/dist/components/Avatar/Avatar.types.d.ts.map +0 -1
- package/dist/components/Badge/Badge.d.ts +0 -42
- package/dist/components/Badge/Badge.d.ts.map +0 -1
- package/dist/components/Badge/Badge.types.d.ts +0 -32
- package/dist/components/Badge/Badge.types.d.ts.map +0 -1
- package/dist/components/Button/Button.d.ts +0 -84
- package/dist/components/Button/Button.d.ts.map +0 -1
- package/dist/components/Button/Button.types.d.ts +0 -162
- package/dist/components/Button/Button.types.d.ts.map +0 -1
- package/dist/components/Button/icons.d.ts +0 -27
- package/dist/components/Button/icons.d.ts.map +0 -1
- package/dist/components/Button/index.d.ts +0 -4
- package/dist/components/Button/index.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.d.ts +0 -31
- package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.types.d.ts +0 -53
- package/dist/components/Checkbox/Checkbox.types.d.ts.map +0 -1
- package/dist/components/DescriptionList/DescriptionList.d.ts +0 -38
- package/dist/components/DescriptionList/DescriptionList.d.ts.map +0 -1
- package/dist/components/DescriptionList/DescriptionList.types.d.ts +0 -27
- package/dist/components/DescriptionList/DescriptionList.types.d.ts.map +0 -1
- package/dist/components/Divider/Divider.d.ts +0 -33
- package/dist/components/Divider/Divider.d.ts.map +0 -1
- package/dist/components/Divider/Divider.types.d.ts +0 -22
- package/dist/components/Divider/Divider.types.d.ts.map +0 -1
- package/dist/components/Dropdown/Dropdown.d.ts +0 -66
- package/dist/components/Dropdown/Dropdown.d.ts.map +0 -1
- package/dist/components/Dropdown/Dropdown.types.d.ts +0 -124
- package/dist/components/Dropdown/Dropdown.types.d.ts.map +0 -1
- package/dist/components/Dropdown/icons.d.ts +0 -10
- package/dist/components/Dropdown/icons.d.ts.map +0 -1
- package/dist/components/Dropdown/index.d.ts +0 -4
- package/dist/components/Dropdown/index.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts +0 -101
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts +0 -116
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/icons.d.ts +0 -19
- package/dist/components/DropdownItemCollapsible/icons.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/index.d.ts +0 -9
- package/dist/components/DropdownItemCollapsible/index.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts +0 -75
- package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts +0 -85
- package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/icons.d.ts +0 -48
- package/dist/components/DropdownItemHeading/icons.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/index.d.ts +0 -4
- package/dist/components/DropdownItemHeading/index.d.ts.map +0 -1
- package/dist/components/Input/Input.d.ts +0 -40
- package/dist/components/Input/Input.d.ts.map +0 -1
- package/dist/components/Input/Input.types.d.ts +0 -71
- package/dist/components/Input/Input.types.d.ts.map +0 -1
- package/dist/components/Input/icons.d.ts +0 -15
- package/dist/components/Input/icons.d.ts.map +0 -1
- package/dist/components/Input/index.d.ts +0 -3
- package/dist/components/Input/index.d.ts.map +0 -1
- package/dist/components/LoginView/LoginView.d.ts +0 -36
- package/dist/components/LoginView/LoginView.d.ts.map +0 -1
- package/dist/components/LoginView/LoginView.types.d.ts +0 -46
- package/dist/components/LoginView/LoginView.types.d.ts.map +0 -1
- package/dist/components/LoginView/icons.d.ts +0 -18
- package/dist/components/LoginView/icons.d.ts.map +0 -1
- package/dist/components/LoginView/index.d.ts +0 -4
- package/dist/components/LoginView/index.d.ts.map +0 -1
- package/dist/components/Navbar/Navbar.d.ts +0 -63
- package/dist/components/Navbar/Navbar.d.ts.map +0 -1
- package/dist/components/Navbar/Navbar.types.d.ts +0 -194
- package/dist/components/Navbar/Navbar.types.d.ts.map +0 -1
- package/dist/components/Navbar/icons.d.ts +0 -12
- package/dist/components/Navbar/icons.d.ts.map +0 -1
- package/dist/components/Navbar/index.d.ts +0 -4
- package/dist/components/Navbar/index.d.ts.map +0 -1
- package/dist/components/NavigationBar/NavigationBar.d.ts +0 -75
- package/dist/components/NavigationBar/NavigationBar.d.ts.map +0 -1
- package/dist/components/NavigationBar/NavigationBar.types.d.ts +0 -63
- package/dist/components/NavigationBar/NavigationBar.types.d.ts.map +0 -1
- package/dist/components/NavigationBar/index.d.ts +0 -3
- package/dist/components/NavigationBar/index.d.ts.map +0 -1
- package/dist/components/NavigationRail/NavigationRail.d.ts +0 -7
- package/dist/components/NavigationRail/NavigationRail.d.ts.map +0 -1
- package/dist/components/NavigationRail/NavigationRail.types.d.ts +0 -92
- package/dist/components/NavigationRail/NavigationRail.types.d.ts.map +0 -1
- package/dist/components/NavigationRail/index.d.ts +0 -3
- package/dist/components/NavigationRail/index.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts +0 -122
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts +0 -139
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/icons.d.ts +0 -33
- package/dist/components/NavigationRailCommercial/icons.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/index.d.ts +0 -4
- package/dist/components/NavigationRailCommercial/index.d.ts.map +0 -1
- package/dist/components/NavigationRailItem/NavigationRailItem.d.ts +0 -90
- package/dist/components/NavigationRailItem/NavigationRailItem.d.ts.map +0 -1
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts +0 -162
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts.map +0 -1
- package/dist/components/NavigationRailItem/index.d.ts +0 -3
- package/dist/components/NavigationRailItem/index.d.ts.map +0 -1
- package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts +0 -124
- package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts.map +0 -1
- package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts +0 -154
- package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts.map +0 -1
- package/dist/components/NavigationRailPanel/index.d.ts +0 -3
- package/dist/components/NavigationRailPanel/index.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts +0 -99
- package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts +0 -152
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/icons.d.ts +0 -44
- package/dist/components/NavigationRailTypes/icons.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/index.d.ts +0 -4
- package/dist/components/NavigationRailTypes/index.d.ts.map +0 -1
- package/dist/components/Notification/Notification.d.ts +0 -52
- package/dist/components/Notification/Notification.d.ts.map +0 -1
- package/dist/components/Notification/Notification.types.d.ts +0 -138
- package/dist/components/Notification/Notification.types.d.ts.map +0 -1
- package/dist/components/Notification/index.d.ts +0 -3
- package/dist/components/Notification/index.d.ts.map +0 -1
- package/dist/components/POSConvention/POSConvention.d.ts +0 -55
- package/dist/components/POSConvention/POSConvention.d.ts.map +0 -1
- package/dist/components/POSConvention/POSConvention.types.d.ts +0 -37
- package/dist/components/POSConvention/POSConvention.types.d.ts.map +0 -1
- package/dist/components/POSConvention/icons.d.ts +0 -21
- package/dist/components/POSConvention/icons.d.ts.map +0 -1
- package/dist/components/POSConvention/index.d.ts +0 -4
- package/dist/components/POSConvention/index.d.ts.map +0 -1
- package/dist/components/POSLocationButton/POSLocationButton.d.ts +0 -73
- package/dist/components/POSLocationButton/POSLocationButton.d.ts.map +0 -1
- package/dist/components/POSLocationButton/POSLocationButton.types.d.ts +0 -75
- package/dist/components/POSLocationButton/POSLocationButton.types.d.ts.map +0 -1
- package/dist/components/POSLocationButton/icons.d.ts +0 -37
- package/dist/components/POSLocationButton/icons.d.ts.map +0 -1
- package/dist/components/POSLocationButton/index.d.ts +0 -4
- package/dist/components/POSLocationButton/index.d.ts.map +0 -1
- package/dist/components/POSNumberButton/POSNumberButton.d.ts +0 -61
- package/dist/components/POSNumberButton/POSNumberButton.d.ts.map +0 -1
- package/dist/components/POSNumberButton/POSNumberButton.types.d.ts +0 -43
- package/dist/components/POSNumberButton/POSNumberButton.types.d.ts.map +0 -1
- package/dist/components/POSNumberButton/index.d.ts +0 -3
- package/dist/components/POSNumberButton/index.d.ts.map +0 -1
- package/dist/components/POSProductButton/POSProductButton.d.ts +0 -59
- package/dist/components/POSProductButton/POSProductButton.d.ts.map +0 -1
- package/dist/components/POSProductButton/POSProductButton.types.d.ts +0 -40
- package/dist/components/POSProductButton/POSProductButton.types.d.ts.map +0 -1
- package/dist/components/POSProductButton/index.d.ts +0 -3
- package/dist/components/POSProductButton/index.d.ts.map +0 -1
- package/dist/components/POSProductCard/POSProductCard.d.ts +0 -68
- package/dist/components/POSProductCard/POSProductCard.d.ts.map +0 -1
- package/dist/components/POSProductCard/POSProductCard.types.d.ts +0 -67
- package/dist/components/POSProductCard/POSProductCard.types.d.ts.map +0 -1
- package/dist/components/POSProductCard/icons.d.ts +0 -10
- package/dist/components/POSProductCard/icons.d.ts.map +0 -1
- package/dist/components/POSProductCard/index.d.ts +0 -3
- package/dist/components/POSProductCard/index.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts +0 -57
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts +0 -85
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/icons.d.ts +0 -9
- package/dist/components/POSProductSidebarItems/icons.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/index.d.ts +0 -4
- package/dist/components/POSProductSidebarItems/index.d.ts.map +0 -1
- package/dist/components/POSTable/POSTable.d.ts +0 -75
- package/dist/components/POSTable/POSTable.d.ts.map +0 -1
- package/dist/components/POSTable/POSTable.types.d.ts +0 -71
- package/dist/components/POSTable/POSTable.types.d.ts.map +0 -1
- package/dist/components/POSTable/index.d.ts +0 -3
- package/dist/components/POSTable/index.d.ts.map +0 -1
- package/dist/components/Pagination/Pagination.d.ts +0 -29
- package/dist/components/Pagination/Pagination.d.ts.map +0 -1
- package/dist/components/Pagination/Pagination.types.d.ts +0 -79
- package/dist/components/Pagination/Pagination.types.d.ts.map +0 -1
- package/dist/components/Pagination/icons.d.ts +0 -18
- package/dist/components/Pagination/icons.d.ts.map +0 -1
- package/dist/components/Pagination/index.d.ts +0 -4
- package/dist/components/Pagination/index.d.ts.map +0 -1
- package/dist/components/Quantity/Quantity.d.ts +0 -38
- package/dist/components/Quantity/Quantity.d.ts.map +0 -1
- package/dist/components/Quantity/Quantity.types.d.ts +0 -59
- package/dist/components/Quantity/Quantity.types.d.ts.map +0 -1
- package/dist/components/Radio/Radio.d.ts +0 -45
- package/dist/components/Radio/Radio.d.ts.map +0 -1
- package/dist/components/Radio/Radio.types.d.ts +0 -115
- package/dist/components/Radio/Radio.types.d.ts.map +0 -1
- package/dist/components/Select/Select.d.ts +0 -37
- package/dist/components/Select/Select.d.ts.map +0 -1
- package/dist/components/Select/Select.types.d.ts +0 -124
- package/dist/components/Select/Select.types.d.ts.map +0 -1
- package/dist/components/Select/icons.d.ts +0 -20
- package/dist/components/Select/icons.d.ts.map +0 -1
- package/dist/components/Select/index.d.ts +0 -4
- package/dist/components/Select/index.d.ts.map +0 -1
- package/dist/components/SignUpView/SignUpView.d.ts +0 -38
- package/dist/components/SignUpView/SignUpView.d.ts.map +0 -1
- package/dist/components/SignUpView/SignUpView.types.d.ts +0 -51
- package/dist/components/SignUpView/SignUpView.types.d.ts.map +0 -1
- package/dist/components/SignUpView/icons.d.ts +0 -18
- package/dist/components/SignUpView/icons.d.ts.map +0 -1
- package/dist/components/SignUpView/index.d.ts +0 -4
- package/dist/components/SignUpView/index.d.ts.map +0 -1
- package/dist/components/Switch/Switch.d.ts +0 -46
- package/dist/components/Switch/Switch.d.ts.map +0 -1
- package/dist/components/Switch/Switch.types.d.ts +0 -58
- package/dist/components/Switch/Switch.types.d.ts.map +0 -1
- package/dist/components/Table/Table.d.ts +0 -64
- package/dist/components/Table/Table.d.ts.map +0 -1
- package/dist/components/Table/Table.types.d.ts +0 -173
- package/dist/components/Table/Table.types.d.ts.map +0 -1
- package/dist/components/Table/index.d.ts +0 -3
- package/dist/components/Table/index.d.ts.map +0 -1
- package/dist/components/Tabs/Tabs.d.ts +0 -76
- package/dist/components/Tabs/Tabs.d.ts.map +0 -1
- package/dist/components/Tabs/Tabs.types.d.ts +0 -107
- package/dist/components/Tabs/Tabs.types.d.ts.map +0 -1
- package/dist/components/Tabs/icons.d.ts +0 -45
- package/dist/components/Tabs/icons.d.ts.map +0 -1
- package/dist/components/Tabs/index.d.ts +0 -4
- package/dist/components/Tabs/index.d.ts.map +0 -1
- package/dist/components/Textarea/Textarea.d.ts +0 -38
- package/dist/components/Textarea/Textarea.d.ts.map +0 -1
- package/dist/components/Textarea/Textarea.types.d.ts +0 -46
- package/dist/components/Textarea/Textarea.types.d.ts.map +0 -1
- package/dist/context/ThemeContext.d.ts +0 -46
- package/dist/context/ThemeContext.d.ts.map +0 -1
- package/dist/context/index.d.ts +0 -2
- package/dist/context/index.d.ts.map +0 -1
- package/dist/index.d.ts +0 -88
- package/dist/index.d.ts.map +0 -1
- package/dist/siesa-ui-kit.cjs +0 -1474
- package/dist/siesa-ui-kit.cjs.map +0 -1
- package/dist/siesa-ui-kit.mjs +0 -9580
- package/dist/siesa-ui-kit.mjs.map +0 -1
- package/dist/views/LayoutCommercial/LayoutCommercial.d.ts +0 -48
- package/dist/views/LayoutCommercial/LayoutCommercial.d.ts.map +0 -1
- package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts +0 -49
- package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts.map +0 -1
- package/dist/views/LayoutCommercial/index.d.ts +0 -3
- package/dist/views/LayoutCommercial/index.d.ts.map +0 -1
- package/dist/views/ListView/ListView.d.ts +0 -47
- package/dist/views/ListView/ListView.d.ts.map +0 -1
- package/dist/views/ListView/ListView.types.d.ts +0 -177
- package/dist/views/ListView/ListView.types.d.ts.map +0 -1
- package/dist/views/ListView/icons.d.ts +0 -60
- package/dist/views/ListView/icons.d.ts.map +0 -1
- package/dist/views/ListView/index.d.ts +0 -3
- package/dist/views/ListView/index.d.ts.map +0 -1
- package/dist/views/LoginView/LoginView.d.ts +0 -36
- package/dist/views/LoginView/LoginView.d.ts.map +0 -1
- package/dist/views/LoginView/LoginView.types.d.ts +0 -46
- package/dist/views/LoginView/LoginView.types.d.ts.map +0 -1
- package/dist/views/LoginView/icons.d.ts +0 -18
- package/dist/views/LoginView/icons.d.ts.map +0 -1
- package/dist/views/LoginView/index.d.ts +0 -4
- package/dist/views/LoginView/index.d.ts.map +0 -1
- package/dist/views/ProductsView/ProductsView.d.ts +0 -56
- package/dist/views/ProductsView/ProductsView.d.ts.map +0 -1
- package/dist/views/ProductsView/ProductsView.types.d.ts +0 -184
- package/dist/views/ProductsView/ProductsView.types.d.ts.map +0 -1
- package/dist/views/ProductsView/icons.d.ts +0 -12
- package/dist/views/ProductsView/icons.d.ts.map +0 -1
- package/dist/views/ProductsView/index.d.ts +0 -3
- package/dist/views/ProductsView/index.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts +0 -34
- package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts +0 -50
- package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/icons.d.ts +0 -9
- package/dist/views/RecoverPasswordView/icons.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/index.d.ts +0 -3
- package/dist/views/RecoverPasswordView/index.d.ts.map +0 -1
- package/dist/views/SignUpView/SignUpView.d.ts +0 -38
- package/dist/views/SignUpView/SignUpView.d.ts.map +0 -1
- package/dist/views/SignUpView/SignUpView.types.d.ts +0 -51
- package/dist/views/SignUpView/SignUpView.types.d.ts.map +0 -1
- package/dist/views/SignUpView/icons.d.ts +0 -18
- package/dist/views/SignUpView/icons.d.ts.map +0 -1
- package/dist/views/SignUpView/index.d.ts +0 -4
- package/dist/views/SignUpView/index.d.ts.map +0 -1
- package/dist/views/TableLayoutView/TableLayoutView.d.ts +0 -46
- package/dist/views/TableLayoutView/TableLayoutView.d.ts.map +0 -1
- package/dist/views/TableLayoutView/TableLayoutView.types.d.ts +0 -170
- package/dist/views/TableLayoutView/TableLayoutView.types.d.ts.map +0 -1
- package/dist/views/TableLayoutView/icons.d.ts +0 -27
- package/dist/views/TableLayoutView/icons.d.ts.map +0 -1
- package/dist/views/TableLayoutView/index.d.ts +0 -3
- package/dist/views/TableLayoutView/index.d.ts.map +0 -1
- package/docs/border-radius.md +0 -1261
- package/docs/colors.md +0 -832
- package/docs/dark-mode-guide.md +0 -1426
- package/docs/filters.md +0 -1243
- package/docs/icons.md +0 -1264
- package/docs/shadows.md +0 -1377
- package/docs/spacing.md +0 -1684
- package/docs/typography.md +0 -1268
- package/postcss.config.cjs +0 -6
- package/src/App.css +0 -42
- package/src/App.tsx +0 -8
- package/src/ButtonTest.tsx +0 -147
- package/src/assets/fonts/README.md +0 -261
- package/src/assets/fonts/SiesaBT/SiesaBT-Bold.otf +0 -0
- package/src/assets/fonts/SiesaBT/SiesaBT-Light.otf +0 -0
- package/src/assets/fonts/SiesaBT/SiesaBT-Regular.otf +0 -0
- package/src/assets/react.svg +0 -1
- package/src/components/Alert/Alert.stories.tsx +0 -332
- package/src/components/Alert/Alert.tsx +0 -106
- package/src/components/Alert/Alert.types.ts +0 -54
- package/src/components/Avatar/Avatar.stories.tsx +0 -494
- package/src/components/Avatar/Avatar.tsx +0 -143
- package/src/components/Avatar/Avatar.types.ts +0 -53
- package/src/components/Badge/Badge.stories.tsx +0 -339
- package/src/components/Badge/Badge.tsx +0 -278
- package/src/components/Badge/Badge.types.ts +0 -58
- package/src/components/Button/Button.stories.tsx +0 -950
- package/src/components/Button/Button.tsx +0 -337
- package/src/components/Button/Button.types.ts +0 -180
- package/src/components/Button/icons.tsx +0 -48
- package/src/components/Button/index.ts +0 -3
- package/src/components/Checkbox/Checkbox.stories.tsx +0 -453
- package/src/components/Checkbox/Checkbox.tsx +0 -208
- package/src/components/Checkbox/Checkbox.types.ts +0 -61
- package/src/components/DescriptionList/DescriptionList.stories.tsx +0 -250
- package/src/components/DescriptionList/DescriptionList.tsx +0 -96
- package/src/components/DescriptionList/DescriptionList.types.ts +0 -29
- package/src/components/Divider/Divider.stories.tsx +0 -263
- package/src/components/Divider/Divider.tsx +0 -80
- package/src/components/Divider/Divider.types.ts +0 -24
- package/src/components/Dropdown/Dropdown.stories.tsx +0 -552
- package/src/components/Dropdown/Dropdown.tsx +0 -422
- package/src/components/Dropdown/Dropdown.types.ts +0 -146
- package/src/components/Dropdown/README.md +0 -266
- package/src/components/Dropdown/icons.tsx +0 -72
- package/src/components/Dropdown/index.ts +0 -8
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +0 -317
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +0 -307
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +0 -136
- package/src/components/DropdownItemCollapsible/README.md +0 -264
- package/src/components/DropdownItemCollapsible/icons.tsx +0 -57
- package/src/components/DropdownItemCollapsible/index.ts +0 -12
- package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +0 -386
- package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +0 -216
- package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +0 -93
- package/src/components/DropdownItemHeading/README.md +0 -573
- package/src/components/DropdownItemHeading/icons.tsx +0 -125
- package/src/components/DropdownItemHeading/index.ts +0 -3
- package/src/components/Input/Input.stories.tsx +0 -583
- package/src/components/Input/Input.tsx +0 -204
- package/src/components/Input/Input.types.ts +0 -80
- package/src/components/Input/icons.tsx +0 -145
- package/src/components/Input/index.ts +0 -2
- package/src/components/LoginView/LoginView.stories.tsx +0 -148
- package/src/components/LoginView/LoginView.tsx +0 -426
- package/src/components/LoginView/LoginView.types.ts +0 -52
- package/src/components/LoginView/README.md +0 -396
- package/src/components/LoginView/icons.tsx +0 -85
- package/src/components/LoginView/index.ts +0 -3
- package/src/components/Navbar/Navbar.stories.tsx +0 -810
- package/src/components/Navbar/Navbar.tsx +0 -755
- package/src/components/Navbar/Navbar.types.ts +0 -219
- package/src/components/Navbar/README.md +0 -279
- package/src/components/Navbar/icons.tsx +0 -102
- package/src/components/Navbar/index.ts +0 -8
- package/src/components/NavigationBar/NavigationBar.stories.tsx +0 -406
- package/src/components/NavigationBar/NavigationBar.tsx +0 -246
- package/src/components/NavigationBar/NavigationBar.types.ts +0 -74
- package/src/components/NavigationBar/README.md +0 -469
- package/src/components/NavigationBar/index.ts +0 -2
- package/src/components/NavigationRail/NavigationRail.stories.tsx +0 -417
- package/src/components/NavigationRail/NavigationRail.tsx +0 -418
- package/src/components/NavigationRail/NavigationRail.types.ts +0 -109
- package/src/components/NavigationRail/README.md +0 -224
- package/src/components/NavigationRail/index.ts +0 -2
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.stories.tsx +0 -464
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.tsx +0 -301
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.types.ts +0 -162
- package/src/components/NavigationRailCommercial/README.md +0 -251
- package/src/components/NavigationRailCommercial/icons.tsx +0 -54
- package/src/components/NavigationRailCommercial/index.ts +0 -6
- package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +0 -667
- package/src/components/NavigationRailItem/NavigationRailItem.tsx +0 -314
- package/src/components/NavigationRailItem/NavigationRailItem.types.ts +0 -175
- package/src/components/NavigationRailItem/README.md +0 -476
- package/src/components/NavigationRailItem/index.ts +0 -2
- package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +0 -462
- package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +0 -332
- package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +0 -178
- package/src/components/NavigationRailPanel/README.md +0 -461
- package/src/components/NavigationRailPanel/index.ts +0 -6
- package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +0 -682
- package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +0 -363
- package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +0 -178
- package/src/components/NavigationRailTypes/README.md +0 -573
- package/src/components/NavigationRailTypes/icons.tsx +0 -76
- package/src/components/NavigationRailTypes/index.ts +0 -7
- package/src/components/Notification/Notification.stories.tsx +0 -513
- package/src/components/Notification/Notification.tsx +0 -145
- package/src/components/Notification/Notification.types.ts +0 -142
- package/src/components/Notification/README.md +0 -409
- package/src/components/Notification/index.ts +0 -3
- package/src/components/POSConvention/POSConvention.stories.tsx +0 -235
- package/src/components/POSConvention/POSConvention.tsx +0 -129
- package/src/components/POSConvention/POSConvention.types.ts +0 -38
- package/src/components/POSConvention/README.md +0 -123
- package/src/components/POSConvention/icons.tsx +0 -45
- package/src/components/POSConvention/index.ts +0 -3
- package/src/components/POSLocationButton/POSLocationButton.stories.tsx +0 -531
- package/src/components/POSLocationButton/POSLocationButton.tsx +0 -247
- package/src/components/POSLocationButton/POSLocationButton.types.ts +0 -87
- package/src/components/POSLocationButton/README.md +0 -253
- package/src/components/POSLocationButton/icons.tsx +0 -120
- package/src/components/POSLocationButton/index.ts +0 -14
- package/src/components/POSNumberButton/POSNumberButton.stories.tsx +0 -415
- package/src/components/POSNumberButton/POSNumberButton.tsx +0 -179
- package/src/components/POSNumberButton/POSNumberButton.types.ts +0 -51
- package/src/components/POSNumberButton/README.md +0 -321
- package/src/components/POSNumberButton/index.ts +0 -3
- package/src/components/POSProductButton/POSProductButton.stories.tsx +0 -318
- package/src/components/POSProductButton/POSProductButton.tsx +0 -152
- package/src/components/POSProductButton/POSProductButton.types.ts +0 -46
- package/src/components/POSProductButton/README.md +0 -269
- package/src/components/POSProductButton/index.ts +0 -2
- package/src/components/POSProductCard/POSProductCard.stories.tsx +0 -642
- package/src/components/POSProductCard/POSProductCard.tsx +0 -208
- package/src/components/POSProductCard/POSProductCard.types.ts +0 -76
- package/src/components/POSProductCard/README.md +0 -179
- package/src/components/POSProductCard/icons.tsx +0 -26
- package/src/components/POSProductCard/index.ts +0 -2
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +0 -753
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +0 -332
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +0 -119
- package/src/components/POSProductSidebarItems/README.md +0 -198
- package/src/components/POSProductSidebarItems/icons.tsx +0 -21
- package/src/components/POSProductSidebarItems/index.ts +0 -3
- package/src/components/POSTable/POSTable.stories.tsx +0 -737
- package/src/components/POSTable/POSTable.tsx +0 -401
- package/src/components/POSTable/POSTable.types.ts +0 -83
- package/src/components/POSTable/README.md +0 -286
- package/src/components/POSTable/index.ts +0 -7
- package/src/components/Pagination/Pagination.stories.tsx +0 -555
- package/src/components/Pagination/Pagination.tsx +0 -286
- package/src/components/Pagination/Pagination.types.ts +0 -93
- package/src/components/Pagination/README.md +0 -298
- package/src/components/Pagination/icons.tsx +0 -47
- package/src/components/Pagination/index.ts +0 -3
- package/src/components/Quantity/Quantity.stories.tsx +0 -457
- package/src/components/Quantity/Quantity.tsx +0 -289
- package/src/components/Quantity/Quantity.types.ts +0 -70
- package/src/components/Radio/Radio.stories.tsx +0 -523
- package/src/components/Radio/Radio.tsx +0 -170
- package/src/components/Radio/Radio.types.ts +0 -122
- package/src/components/Select/README.md +0 -299
- package/src/components/Select/Select.stories.tsx +0 -705
- package/src/components/Select/Select.tsx +0 -457
- package/src/components/Select/Select.types.ts +0 -148
- package/src/components/Select/icons.tsx +0 -25
- package/src/components/Select/index.ts +0 -3
- package/src/components/SignUpView/SignUpView.stories.tsx +0 -129
- package/src/components/SignUpView/SignUpView.tsx +0 -503
- package/src/components/SignUpView/SignUpView.types.ts +0 -58
- package/src/components/SignUpView/icons.tsx +0 -71
- package/src/components/SignUpView/index.ts +0 -3
- package/src/components/Switch/README.md +0 -112
- package/src/components/Switch/Switch.stories.tsx +0 -550
- package/src/components/Switch/Switch.tsx +0 -246
- package/src/components/Switch/Switch.types.ts +0 -67
- package/src/components/Table/README.md +0 -369
- package/src/components/Table/Table.stories.tsx +0 -805
- package/src/components/Table/Table.tsx +0 -688
- package/src/components/Table/Table.types.ts +0 -204
- package/src/components/Table/index.ts +0 -9
- package/src/components/Tabs/README.md +0 -201
- package/src/components/Tabs/Tabs.stories.tsx +0 -580
- package/src/components/Tabs/Tabs.tsx +0 -356
- package/src/components/Tabs/Tabs.types.ts +0 -127
- package/src/components/Tabs/icons.tsx +0 -129
- package/src/components/Tabs/index.ts +0 -11
- package/src/components/Textarea/Textarea.stories.tsx +0 -535
- package/src/components/Textarea/Textarea.tsx +0 -188
- package/src/components/Textarea/Textarea.types.ts +0 -54
- package/src/context/ThemeContext.tsx +0 -99
- package/src/context/index.ts +0 -1
- package/src/index.css +0 -29
- package/src/index.ts +0 -133
- package/src/main.tsx +0 -10
- package/src/views/LayoutCommercial/LayoutCommercial.stories.tsx +0 -374
- package/src/views/LayoutCommercial/LayoutCommercial.tsx +0 -125
- package/src/views/LayoutCommercial/LayoutCommercial.types.ts +0 -54
- package/src/views/LayoutCommercial/README.md +0 -286
- package/src/views/LayoutCommercial/index.ts +0 -2
- package/src/views/ListView/ListView.stories.tsx +0 -329
- package/src/views/ListView/ListView.tsx +0 -570
- package/src/views/ListView/ListView.types.ts +0 -211
- package/src/views/ListView/icons.tsx +0 -282
- package/src/views/ListView/index.ts +0 -11
- package/src/views/LoginView/LoginView.stories.tsx +0 -148
- package/src/views/LoginView/LoginView.tsx +0 -426
- package/src/views/LoginView/LoginView.types.ts +0 -52
- package/src/views/LoginView/README.md +0 -396
- package/src/views/LoginView/icons.tsx +0 -85
- package/src/views/LoginView/index.ts +0 -3
- package/src/views/ProductsView/ProductsView.stories.tsx +0 -344
- package/src/views/ProductsView/ProductsView.tsx +0 -480
- package/src/views/ProductsView/ProductsView.types.ts +0 -238
- package/src/views/ProductsView/README.md +0 -312
- package/src/views/ProductsView/icons.tsx +0 -38
- package/src/views/ProductsView/index.ts +0 -8
- package/src/views/RecoverPasswordView/README.md +0 -269
- package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +0 -131
- package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +0 -376
- package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +0 -56
- package/src/views/RecoverPasswordView/icons.tsx +0 -17
- package/src/views/RecoverPasswordView/index.ts +0 -2
- package/src/views/SignUpView/SignUpView.stories.tsx +0 -129
- package/src/views/SignUpView/SignUpView.tsx +0 -503
- package/src/views/SignUpView/SignUpView.types.ts +0 -58
- package/src/views/SignUpView/icons.tsx +0 -71
- package/src/views/SignUpView/index.ts +0 -3
- package/src/views/TableLayoutView/README.md +0 -268
- package/src/views/TableLayoutView/TableLayoutView.stories.tsx +0 -235
- package/src/views/TableLayoutView/TableLayoutView.tsx +0 -461
- package/src/views/TableLayoutView/TableLayoutView.types.ts +0 -209
- package/src/views/TableLayoutView/icons.tsx +0 -113
- package/src/views/TableLayoutView/index.ts +0 -6
- package/storybook/main.ts +0 -20
- package/storybook/preview.tsx +0 -84
- package/storybook/vitest.setup.ts +0 -7
- package/tailwind.config.js +0 -128
- /package/{public → dist}/,Business Logo.png +0 -0
- /package/{public → dist}/.Siesa Logo.png +0 -0
- /package/{public → dist}/bg_siesa.png +0 -0
- /package/{public → dist}/siesa_logo_mobile.png +0 -0
- /package/{public → dist}/vite.svg +0 -0
package/docs/shadows.md
DELETED
|
@@ -1,1377 +0,0 @@
|
|
|
1
|
-
# Sistema de Sombras (Shadows) - Siesa UI Kit
|
|
2
|
-
|
|
3
|
-
## 📋 Tabla de Contenidos
|
|
4
|
-
|
|
5
|
-
1. [Introducción](#introducción)
|
|
6
|
-
2. [Drop Shadows](#drop-shadows)
|
|
7
|
-
3. [Inner Shadows](#inner-shadows)
|
|
8
|
-
4. [Sombras Personalizadas](#sombras-personalizadas)
|
|
9
|
-
5. [Guía de Uso](#guía-de-uso)
|
|
10
|
-
6. [Componentes del Sistema](#componentes-del-sistema)
|
|
11
|
-
7. [Ejemplos de Código](#ejemplos-de-código)
|
|
12
|
-
8. [Mejores Prácticas](#mejores-prácticas)
|
|
13
|
-
9. [Referencia Rápida](#referencia-rápida)
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Introducción
|
|
18
|
-
|
|
19
|
-
El sistema de sombras de Siesa UI Kit proporciona profundidad y jerarquía visual a los componentes de la interfaz. Las sombras ayudan a establecer la elevación de elementos y mejorar la experiencia del usuario al crear una interfaz más intuitiva y dimensional.
|
|
20
|
-
|
|
21
|
-
### Objetivos del Sistema
|
|
22
|
-
|
|
23
|
-
- **Jerarquía Visual**: Establecer niveles de elevación claros entre componentes
|
|
24
|
-
- **Profundidad**: Crear sensación de tridimensionalidad en interfaces planas
|
|
25
|
-
- **Consistencia**: Uso uniforme de sombras en todo el sistema
|
|
26
|
-
- **Sutileza**: Sombras suaves que no distraigan del contenido
|
|
27
|
-
- **Accesibilidad**: Sombras que mejoren la usabilidad sin depender solo de ellas
|
|
28
|
-
|
|
29
|
-
### Principios de Diseño
|
|
30
|
-
|
|
31
|
-
1. **Elevación Progresiva**: Las sombras más grandes indican mayor elevación
|
|
32
|
-
2. **Sutileza**: Sombras suaves con opacidad controlada (5% a 25%)
|
|
33
|
-
3. **Múltiples Capas**: Combinación de sombras para efectos más naturales
|
|
34
|
-
4. **Adaptabilidad**: Funciona en modo claro y oscuro
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## Drop Shadows
|
|
39
|
-
|
|
40
|
-
Las **drop shadows** (sombras externas) se usan para elevar elementos sobre el fondo, creando la ilusión de que flotan.
|
|
41
|
-
|
|
42
|
-
### Escala de Drop Shadows
|
|
43
|
-
|
|
44
|
-
| Clase Tailwind | Valor CSS | Elevación | Uso Principal |
|
|
45
|
-
|----------------|-----------|-----------|---------------|
|
|
46
|
-
| `shadow-sm` | `0px 1px 2px 0px rgba(0,0,0,0.05)` | Muy baja | Bordes sutiles, separadores ligeros |
|
|
47
|
-
| `shadow-base` | `0px 1px 2px -1px rgba(0,0,0,0.1), 0px 1px 3px 0px rgba(0,0,0,0.1)` | Baja | **Cards planos, inputs** |
|
|
48
|
-
| `shadow-md` | `0px 2px 4px -2px rgba(0,0,0,0.1), 0px 4px 6px -1px rgba(0,0,0,0.1)` | Media-baja | Cards elevados, dropdowns |
|
|
49
|
-
| `shadow-lg` | `0px 4px 6px -4px rgba(0,0,0,0.1), 0px 10px 15px -3px rgba(0,0,0,0.1)` | Media | **Modales, popovers** |
|
|
50
|
-
| `shadow-xl` | `0px 8px 10px -6px rgba(0,0,0,0.1), 0px 20px 25px -5px rgba(0,0,0,0.1)` | Alta | Modales grandes, overlays |
|
|
51
|
-
| `shadow-2xl` | `0px 25px 50px -12px rgba(0,0,0,0.25)` | Muy alta | Elementos flotantes principales |
|
|
52
|
-
|
|
53
|
-
### Características de las Sombras
|
|
54
|
-
|
|
55
|
-
**Sombras de Capas Múltiples**: La mayoría incluyen 2 sombras para un efecto más natural:
|
|
56
|
-
- **Sombra principal**: Mayor blur, más alejada, simula luz ambiental
|
|
57
|
-
- **Sombra de contacto**: Menor blur, más cercana, define los bordes
|
|
58
|
-
|
|
59
|
-
**Opacidades Controladas**:
|
|
60
|
-
- `0.05` (5%) - Sombras muy sutiles
|
|
61
|
-
- `0.1` (10%) - Sombras estándar (más común)
|
|
62
|
-
- `0.25` (25%) - Sombras dramáticas
|
|
63
|
-
|
|
64
|
-
### Valores Más Comunes
|
|
65
|
-
|
|
66
|
-
En el 80% de los casos, usarás estos 3 valores:
|
|
67
|
-
|
|
68
|
-
1. **`shadow-base`**: Cards y paneles estándar
|
|
69
|
-
2. **`shadow-lg`**: Modales y popovers
|
|
70
|
-
3. **`shadow-xl`**: Overlays importantes
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Inner Shadows
|
|
75
|
-
|
|
76
|
-
Las **inner shadows** (sombras internas) crean la ilusión de profundidad hacia adentro, como si el elemento estuviera hundido.
|
|
77
|
-
|
|
78
|
-
### Escala de Inner Shadows
|
|
79
|
-
|
|
80
|
-
| Clase Tailwind | Valor CSS | Uso Principal |
|
|
81
|
-
|----------------|-----------|---------------|
|
|
82
|
-
| `shadow-inner` | `inset 0 2px 4px 0 rgba(0,0,0,0.05)` | Inputs hundidos, áreas presionadas |
|
|
83
|
-
|
|
84
|
-
### Sombra Inner Personalizada
|
|
85
|
-
|
|
86
|
-
El sistema incluye una sombra inner especial para botones:
|
|
87
|
-
|
|
88
|
-
| Nombre | Valor CSS | Uso |
|
|
89
|
-
|--------|-----------|-----|
|
|
90
|
-
| `shadow-button-inset` | `0px 2px 0px 0px inset rgba(255,255,255,0.15)` | **Botones default** - Efecto de brillo superior |
|
|
91
|
-
|
|
92
|
-
**Nota**: Esta sombra usa **blanco** con 15% de opacidad para crear un efecto de luz desde arriba, dando dimensión a los botones.
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## Sombras Personalizadas
|
|
97
|
-
|
|
98
|
-
Además de las sombras estándar de Tailwind, el sistema incluye sombras personalizadas para casos específicos.
|
|
99
|
-
|
|
100
|
-
### Tabla de Sombras Personalizadas
|
|
101
|
-
|
|
102
|
-
| Nombre | Clase | Valor CSS | Uso |
|
|
103
|
-
|--------|-------|-----------|-----|
|
|
104
|
-
| **Button Inset** | `shadow-button-inset` | `0px 2px 0px 0px inset rgba(255,255,255,0.15)` | Botones default |
|
|
105
|
-
| **Menu** | `shadow-menu` | `0px 4px 4px -1px rgba(12,12,13,0.05), 0px 4px 4px -1px rgba(12,12,13,0.1)` | Menús desplegables, dropdowns |
|
|
106
|
-
| **Base** | `shadow-base` | `0px 1px 2px -1px rgba(0,0,0,0.1), 0px 1px 3px 0px rgba(0,0,0,0.1)` | Cards estándar |
|
|
107
|
-
|
|
108
|
-
### Configuración en Tailwind
|
|
109
|
-
|
|
110
|
-
```javascript
|
|
111
|
-
// tailwind.config.js
|
|
112
|
-
boxShadow: {
|
|
113
|
-
// Personalizada para botones (inner shadow)
|
|
114
|
-
'button-inset': '0px 2px 0px 0px inset rgba(255,255,255,0.15)',
|
|
115
|
-
|
|
116
|
-
// Personalizada para menús
|
|
117
|
-
'menu': '0px 4px 4px -1px rgba(12, 12, 13, 0.05), 0px 4px 4px -1px rgba(12, 12, 13, 0.1)',
|
|
118
|
-
}
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## Guía de Uso
|
|
124
|
-
|
|
125
|
-
### Por Tipo de Componente
|
|
126
|
-
|
|
127
|
-
#### 1. Botones
|
|
128
|
-
|
|
129
|
-
```tsx
|
|
130
|
-
// Botón default con sombra interna
|
|
131
|
-
<button className="rounded-md bg-primary-custom-600 text-white px-4 py-2 shadow-button-inset">
|
|
132
|
-
Guardar
|
|
133
|
-
</button>
|
|
134
|
-
|
|
135
|
-
// Botón elevado con sombra externa
|
|
136
|
-
<button className="rounded-md bg-white border px-4 py-2 shadow-base hover:shadow-md transition-shadow">
|
|
137
|
-
Cancelar
|
|
138
|
-
</button>
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
**Recomendación**:
|
|
142
|
-
- Botones default (rellenos): `shadow-button-inset`
|
|
143
|
-
- Botones outline (sin fondo): `shadow-base` en hover
|
|
144
|
-
|
|
145
|
-
#### 2. Cards
|
|
146
|
-
|
|
147
|
-
```tsx
|
|
148
|
-
// Card plano - shadow-base
|
|
149
|
-
<div className="rounded-2xl border bg-white p-6 shadow-base">
|
|
150
|
-
<h3>Card Estándar</h3>
|
|
151
|
-
<p>Contenido...</p>
|
|
152
|
-
</div>
|
|
153
|
-
|
|
154
|
-
// Card elevado - shadow-md
|
|
155
|
-
<div className="rounded-2xl bg-white p-6 shadow-md">
|
|
156
|
-
<h3>Card Destacado</h3>
|
|
157
|
-
<p>Contenido importante...</p>
|
|
158
|
-
</div>
|
|
159
|
-
|
|
160
|
-
// Card flotante - shadow-lg
|
|
161
|
-
<div className="rounded-2xl bg-white p-6 shadow-lg">
|
|
162
|
-
<h3>Card Flotante</h3>
|
|
163
|
-
<p>Elemento prominente...</p>
|
|
164
|
-
</div>
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
**Recomendación**:
|
|
168
|
-
- Cards de lista: `shadow-base`
|
|
169
|
-
- Cards destacados: `shadow-md`
|
|
170
|
-
- Cards sobre overlay: `shadow-lg` o `shadow-xl`
|
|
171
|
-
|
|
172
|
-
#### 3. Modales y Overlays
|
|
173
|
-
|
|
174
|
-
```tsx
|
|
175
|
-
// Modal pequeño - shadow-lg
|
|
176
|
-
<div className="rounded-3xl bg-white p-6 shadow-lg max-w-md">
|
|
177
|
-
<h2>Modal Pequeño</h2>
|
|
178
|
-
<p>Contenido...</p>
|
|
179
|
-
</div>
|
|
180
|
-
|
|
181
|
-
// Modal grande - shadow-xl
|
|
182
|
-
<div className="rounded-3xl bg-white p-8 shadow-xl max-w-2xl">
|
|
183
|
-
<h2>Modal Grande</h2>
|
|
184
|
-
<p>Contenido extenso...</p>
|
|
185
|
-
</div>
|
|
186
|
-
|
|
187
|
-
// Drawer/Panel lateral - shadow-2xl
|
|
188
|
-
<div className="fixed right-0 top-0 h-full bg-white p-6 shadow-2xl w-96">
|
|
189
|
-
<h2>Panel Lateral</h2>
|
|
190
|
-
<p>Contenido...</p>
|
|
191
|
-
</div>
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
**Recomendación**:
|
|
195
|
-
- Modales pequeños: `shadow-lg`
|
|
196
|
-
- Modales grandes: `shadow-xl`
|
|
197
|
-
- Drawers/Panels: `shadow-2xl`
|
|
198
|
-
|
|
199
|
-
#### 4. Dropdowns y Menus
|
|
200
|
-
|
|
201
|
-
```tsx
|
|
202
|
-
// Dropdown simple - shadow-menu
|
|
203
|
-
<div className="rounded-lg bg-white border shadow-menu">
|
|
204
|
-
<ul>
|
|
205
|
-
<li className="px-4 py-2 hover:bg-gray-100">Opción 1</li>
|
|
206
|
-
<li className="px-4 py-2 hover:bg-gray-100">Opción 2</li>
|
|
207
|
-
</ul>
|
|
208
|
-
</div>
|
|
209
|
-
|
|
210
|
-
// Menú contextual - shadow-md
|
|
211
|
-
<div className="rounded-xl bg-white shadow-md">
|
|
212
|
-
<ul className="py-2">
|
|
213
|
-
<li className="px-4 py-2 hover:bg-gray-100">Editar</li>
|
|
214
|
-
<li className="px-4 py-2 hover:bg-gray-100">Eliminar</li>
|
|
215
|
-
</ul>
|
|
216
|
-
</div>
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
**Recomendación**:
|
|
220
|
-
- Dropdowns estándar: `shadow-menu`
|
|
221
|
-
- Menús contextuales: `shadow-md`
|
|
222
|
-
- Select expandido: `shadow-lg`
|
|
223
|
-
|
|
224
|
-
#### 5. Inputs y Controles
|
|
225
|
-
|
|
226
|
-
```tsx
|
|
227
|
-
// Input enfocado - shadow-base
|
|
228
|
-
<input
|
|
229
|
-
type="text"
|
|
230
|
-
className="rounded-md border px-4 py-2 focus:shadow-base transition-shadow"
|
|
231
|
-
placeholder="Email"
|
|
232
|
-
/>
|
|
233
|
-
|
|
234
|
-
// Input con error - shadow-base + borde rojo
|
|
235
|
-
<input
|
|
236
|
-
type="text"
|
|
237
|
-
className="rounded-md border border-error-border px-4 py-2 shadow-base"
|
|
238
|
-
placeholder="Email"
|
|
239
|
-
/>
|
|
240
|
-
|
|
241
|
-
// Input hundido (inner shadow)
|
|
242
|
-
<input
|
|
243
|
-
type="text"
|
|
244
|
-
className="rounded-md border bg-gray-50 px-4 py-2 shadow-inner"
|
|
245
|
-
placeholder="Búsqueda"
|
|
246
|
-
readOnly
|
|
247
|
-
/>
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
**Recomendación**:
|
|
251
|
-
- Input normal: sin sombra
|
|
252
|
-
- Input focus: `shadow-base`
|
|
253
|
-
- Input disabled/readonly: `shadow-inner`
|
|
254
|
-
|
|
255
|
-
#### 6. Tooltips y Popovers
|
|
256
|
-
|
|
257
|
-
```tsx
|
|
258
|
-
// Tooltip - shadow-lg
|
|
259
|
-
<div className="rounded-lg bg-gray-900 text-white px-3 py-2 text-sm shadow-lg">
|
|
260
|
-
Este es un tooltip
|
|
261
|
-
</div>
|
|
262
|
-
|
|
263
|
-
// Popover - shadow-xl
|
|
264
|
-
<div className="rounded-xl bg-white border p-4 shadow-xl max-w-xs">
|
|
265
|
-
<h4 className="font-bold mb-2">Información</h4>
|
|
266
|
-
<p className="text-sm">Contenido del popover...</p>
|
|
267
|
-
</div>
|
|
268
|
-
```
|
|
269
|
-
|
|
270
|
-
**Recomendación**:
|
|
271
|
-
- Tooltips simples: `shadow-lg`
|
|
272
|
-
- Popovers con contenido: `shadow-xl`
|
|
273
|
-
|
|
274
|
-
### Por Elevación
|
|
275
|
-
|
|
276
|
-
| Elevación | Shadow | Cuándo Usar |
|
|
277
|
-
|-----------|--------|-------------|
|
|
278
|
-
| **Nivel 0** | Sin sombra | Elementos integrados, fondos |
|
|
279
|
-
| **Nivel 1** | `shadow-sm` | Separadores sutiles, bordes suaves |
|
|
280
|
-
| **Nivel 2** | `shadow-base` | **Cards estándar, inputs focus** |
|
|
281
|
-
| **Nivel 3** | `shadow-md` | Cards elevados, dropdowns |
|
|
282
|
-
| **Nivel 4** | `shadow-lg` | **Modales pequeños, popovers** |
|
|
283
|
-
| **Nivel 5** | `shadow-xl` | Modales grandes, overlays |
|
|
284
|
-
| **Nivel 6** | `shadow-2xl` | Drawers, panels laterales |
|
|
285
|
-
|
|
286
|
-
### Transiciones de Sombra
|
|
287
|
-
|
|
288
|
-
Las sombras pueden animarse para crear interacciones fluidas:
|
|
289
|
-
|
|
290
|
-
```tsx
|
|
291
|
-
// Hover que eleva el card
|
|
292
|
-
<div className="rounded-2xl bg-white p-6 shadow-base hover:shadow-lg transition-shadow duration-200">
|
|
293
|
-
Card Interactivo
|
|
294
|
-
</div>
|
|
295
|
-
|
|
296
|
-
// Botón que se hunde al hacer click
|
|
297
|
-
<button className="rounded-md bg-primary-custom-600 px-4 py-2 shadow-md active:shadow-sm transition-shadow">
|
|
298
|
-
Click me
|
|
299
|
-
</button>
|
|
300
|
-
|
|
301
|
-
// Card que se expande
|
|
302
|
-
<div className="rounded-2xl bg-white p-6 shadow-base hover:scale-105 hover:shadow-xl transition-all duration-300">
|
|
303
|
-
Card con efecto
|
|
304
|
-
</div>
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
---
|
|
308
|
-
|
|
309
|
-
## Componentes del Sistema
|
|
310
|
-
|
|
311
|
-
### Uso Actual en Componentes
|
|
312
|
-
|
|
313
|
-
| Componente | Shadow Usada | Ubicación |
|
|
314
|
-
|------------|--------------|-----------|
|
|
315
|
-
| **Button (default)** | `shadow-button-inset` | Button.tsx:67 |
|
|
316
|
-
| **Card** | `shadow-base` o `shadow-md` | (a implementar) |
|
|
317
|
-
| **Modal** | `shadow-lg` o `shadow-xl` | (a implementar) |
|
|
318
|
-
| **Dropdown** | `shadow-menu` o `shadow-md` | (a implementar) |
|
|
319
|
-
| **Tooltip** | `shadow-lg` | (a implementar) |
|
|
320
|
-
| **Input (focus)** | `shadow-base` | (a implementar) |
|
|
321
|
-
|
|
322
|
-
### Configuración Completa
|
|
323
|
-
|
|
324
|
-
```javascript
|
|
325
|
-
// tailwind.config.js
|
|
326
|
-
module.exports = {
|
|
327
|
-
theme: {
|
|
328
|
-
extend: {
|
|
329
|
-
boxShadow: {
|
|
330
|
-
// Sombras personalizadas
|
|
331
|
-
'button-inset': '0px 2px 0px 0px inset rgba(255,255,255,0.15)',
|
|
332
|
-
'menu': '0px 4px 4px -1px rgba(12, 12, 13, 0.05), 0px 4px 4px -1px rgba(12, 12, 13, 0.1)',
|
|
333
|
-
|
|
334
|
-
// Tailwind defaults (para referencia)
|
|
335
|
-
'sm': '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
|
|
336
|
-
'DEFAULT': '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px -1px rgba(0, 0, 0, 0.1)',
|
|
337
|
-
'md': '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1)',
|
|
338
|
-
'lg': '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)',
|
|
339
|
-
'xl': '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1)',
|
|
340
|
-
'2xl': '0 25px 50px -12px rgba(0, 0, 0, 0.25)',
|
|
341
|
-
'inner': 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.05)',
|
|
342
|
-
'none': 'none',
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
}
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
---
|
|
350
|
-
|
|
351
|
-
## Ejemplos de Código
|
|
352
|
-
|
|
353
|
-
### Ejemplo 1: Sistema de Cards con Diferentes Elevaciones
|
|
354
|
-
|
|
355
|
-
```tsx
|
|
356
|
-
export const CardShowcase = () => {
|
|
357
|
-
return (
|
|
358
|
-
<div className="grid grid-cols-3 gap-6 p-8">
|
|
359
|
-
{/* Card Plano - Nivel 2 */}
|
|
360
|
-
<div className="rounded-2xl border border-border-primary bg-white p-6 shadow-base">
|
|
361
|
-
<h3 className="text-xl font-bold mb-2">Card Plano</h3>
|
|
362
|
-
<p className="text-sm text-content-secondary">
|
|
363
|
-
Sombra sutil para cards en lista o grids.
|
|
364
|
-
</p>
|
|
365
|
-
<span className="inline-block mt-4 text-xs font-bold text-content-tertiary">
|
|
366
|
-
shadow-base
|
|
367
|
-
</span>
|
|
368
|
-
</div>
|
|
369
|
-
|
|
370
|
-
{/* Card Elevado - Nivel 3 */}
|
|
371
|
-
<div className="rounded-2xl bg-white p-6 shadow-md">
|
|
372
|
-
<h3 className="text-xl font-bold mb-2">Card Elevado</h3>
|
|
373
|
-
<p className="text-sm text-content-secondary">
|
|
374
|
-
Mayor elevación para cards destacados.
|
|
375
|
-
</p>
|
|
376
|
-
<span className="inline-block mt-4 text-xs font-bold text-content-tertiary">
|
|
377
|
-
shadow-md
|
|
378
|
-
</span>
|
|
379
|
-
</div>
|
|
380
|
-
|
|
381
|
-
{/* Card Flotante - Nivel 4 */}
|
|
382
|
-
<div className="rounded-2xl bg-white p-6 shadow-lg">
|
|
383
|
-
<h3 className="text-xl font-bold mb-2">Card Flotante</h3>
|
|
384
|
-
<p className="text-sm text-content-secondary">
|
|
385
|
-
Máxima elevación para elementos importantes.
|
|
386
|
-
</p>
|
|
387
|
-
<span className="inline-block mt-4 text-xs font-bold text-content-tertiary">
|
|
388
|
-
shadow-lg
|
|
389
|
-
</span>
|
|
390
|
-
</div>
|
|
391
|
-
</div>
|
|
392
|
-
);
|
|
393
|
-
};
|
|
394
|
-
```
|
|
395
|
-
|
|
396
|
-
### Ejemplo 2: Modal con Overlay
|
|
397
|
-
|
|
398
|
-
```tsx
|
|
399
|
-
export const Modal = ({ isOpen, onClose, children, size = 'small' }) => {
|
|
400
|
-
if (!isOpen) return null;
|
|
401
|
-
|
|
402
|
-
const sizeClasses = {
|
|
403
|
-
small: 'max-w-md shadow-lg',
|
|
404
|
-
medium: 'max-w-2xl shadow-xl',
|
|
405
|
-
large: 'max-w-4xl shadow-2xl',
|
|
406
|
-
};
|
|
407
|
-
|
|
408
|
-
return (
|
|
409
|
-
<div className="fixed inset-0 z-50 flex items-center justify-center p-4">
|
|
410
|
-
{/* Overlay - Sin sombra */}
|
|
411
|
-
<div
|
|
412
|
-
className="absolute inset-0 bg-black/50 backdrop-blur-sm"
|
|
413
|
-
onClick={onClose}
|
|
414
|
-
/>
|
|
415
|
-
|
|
416
|
-
{/* Modal - Sombra según tamaño */}
|
|
417
|
-
<div className={`rounded-3xl bg-white relative z-10 ${sizeClasses[size]}`}>
|
|
418
|
-
{/* Header */}
|
|
419
|
-
<div className="flex items-center justify-between p-6 border-b border-border-primary">
|
|
420
|
-
<h2 className="text-2xl font-bold">Modal Title</h2>
|
|
421
|
-
<button
|
|
422
|
-
onClick={onClose}
|
|
423
|
-
className="rounded-full hover:bg-gray-100 p-2 transition-colors"
|
|
424
|
-
>
|
|
425
|
-
<XIcon />
|
|
426
|
-
</button>
|
|
427
|
-
</div>
|
|
428
|
-
|
|
429
|
-
{/* Body */}
|
|
430
|
-
<div className="p-6">{children}</div>
|
|
431
|
-
|
|
432
|
-
{/* Footer */}
|
|
433
|
-
<div className="flex gap-3 justify-end p-6 border-t border-border-primary">
|
|
434
|
-
<button
|
|
435
|
-
onClick={onClose}
|
|
436
|
-
className="rounded-md border border-border-primary bg-white px-4 py-2 font-bold hover:bg-gray-50 transition-colors"
|
|
437
|
-
>
|
|
438
|
-
Cancelar
|
|
439
|
-
</button>
|
|
440
|
-
<button className="rounded-md bg-primary-custom-600 text-white px-4 py-2 font-bold shadow-button-inset hover:bg-primary-custom-500 transition-colors">
|
|
441
|
-
Confirmar
|
|
442
|
-
</button>
|
|
443
|
-
</div>
|
|
444
|
-
</div>
|
|
445
|
-
</div>
|
|
446
|
-
);
|
|
447
|
-
};
|
|
448
|
-
|
|
449
|
-
// Uso
|
|
450
|
-
<Modal isOpen={true} size="medium">
|
|
451
|
-
<p>Contenido del modal...</p>
|
|
452
|
-
</Modal>
|
|
453
|
-
```
|
|
454
|
-
|
|
455
|
-
### Ejemplo 3: Dropdown Menu
|
|
456
|
-
|
|
457
|
-
```tsx
|
|
458
|
-
export const DropdownMenu = ({ trigger, items }) => {
|
|
459
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
460
|
-
|
|
461
|
-
return (
|
|
462
|
-
<div className="relative">
|
|
463
|
-
{/* Trigger */}
|
|
464
|
-
<button
|
|
465
|
-
onClick={() => setIsOpen(!isOpen)}
|
|
466
|
-
className="rounded-md border border-border-primary bg-white px-4 py-2 font-bold hover:bg-gray-50 transition-colors"
|
|
467
|
-
>
|
|
468
|
-
{trigger}
|
|
469
|
-
</button>
|
|
470
|
-
|
|
471
|
-
{/* Menu - shadow-menu personalizada */}
|
|
472
|
-
{isOpen && (
|
|
473
|
-
<div className="absolute top-full mt-2 right-0 rounded-lg bg-white border shadow-menu min-w-[200px] z-10">
|
|
474
|
-
<ul className="py-2">
|
|
475
|
-
{items.map((item, index) => (
|
|
476
|
-
<li key={index}>
|
|
477
|
-
<button
|
|
478
|
-
onClick={() => {
|
|
479
|
-
item.onClick();
|
|
480
|
-
setIsOpen(false);
|
|
481
|
-
}}
|
|
482
|
-
className="w-full text-left px-4 py-2 text-sm hover:bg-gray-100 transition-colors"
|
|
483
|
-
>
|
|
484
|
-
{item.icon && (
|
|
485
|
-
<span className="inline-flex mr-3">{item.icon}</span>
|
|
486
|
-
)}
|
|
487
|
-
{item.label}
|
|
488
|
-
</button>
|
|
489
|
-
</li>
|
|
490
|
-
))}
|
|
491
|
-
</ul>
|
|
492
|
-
</div>
|
|
493
|
-
)}
|
|
494
|
-
</div>
|
|
495
|
-
);
|
|
496
|
-
};
|
|
497
|
-
|
|
498
|
-
// Uso
|
|
499
|
-
<DropdownMenu
|
|
500
|
-
trigger="Acciones"
|
|
501
|
-
items={[
|
|
502
|
-
{ label: 'Editar', onClick: () => console.log('Editar'), icon: <EditIcon /> },
|
|
503
|
-
{ label: 'Duplicar', onClick: () => console.log('Duplicar'), icon: <CopyIcon /> },
|
|
504
|
-
{ label: 'Eliminar', onClick: () => console.log('Eliminar'), icon: <DeleteIcon /> },
|
|
505
|
-
]}
|
|
506
|
-
/>
|
|
507
|
-
```
|
|
508
|
-
|
|
509
|
-
### Ejemplo 4: Card Interactivo con Hover
|
|
510
|
-
|
|
511
|
-
```tsx
|
|
512
|
-
export const ProductCard = ({ product }) => {
|
|
513
|
-
return (
|
|
514
|
-
<div className="rounded-2xl bg-white overflow-hidden shadow-base hover:shadow-lg transition-all duration-300 hover:-translate-y-1 cursor-pointer">
|
|
515
|
-
{/* Imagen */}
|
|
516
|
-
<div className="aspect-square bg-gray-100">
|
|
517
|
-
<img
|
|
518
|
-
src={product.image}
|
|
519
|
-
alt={product.name}
|
|
520
|
-
className="w-full h-full object-cover"
|
|
521
|
-
/>
|
|
522
|
-
</div>
|
|
523
|
-
|
|
524
|
-
{/* Contenido */}
|
|
525
|
-
<div className="p-6">
|
|
526
|
-
<div className="flex items-start justify-between mb-2">
|
|
527
|
-
<h3 className="text-xl font-bold text-content-primary">
|
|
528
|
-
{product.name}
|
|
529
|
-
</h3>
|
|
530
|
-
{product.badge && (
|
|
531
|
-
<span className="rounded px-2 py-1 text-xs font-bold bg-primary-custom-100 text-primary-custom-600">
|
|
532
|
-
{product.badge}
|
|
533
|
-
</span>
|
|
534
|
-
)}
|
|
535
|
-
</div>
|
|
536
|
-
|
|
537
|
-
<p className="text-sm text-content-secondary mb-4">
|
|
538
|
-
{product.description}
|
|
539
|
-
</p>
|
|
540
|
-
|
|
541
|
-
<div className="flex items-center justify-between">
|
|
542
|
-
<span className="text-2xl font-bold text-primary-custom-600">
|
|
543
|
-
${product.price}
|
|
544
|
-
</span>
|
|
545
|
-
<button className="rounded-md bg-primary-custom-600 text-white px-4 py-2 text-sm font-bold shadow-button-inset hover:bg-primary-custom-500 transition-colors">
|
|
546
|
-
Añadir al carrito
|
|
547
|
-
</button>
|
|
548
|
-
</div>
|
|
549
|
-
</div>
|
|
550
|
-
</div>
|
|
551
|
-
);
|
|
552
|
-
};
|
|
553
|
-
```
|
|
554
|
-
|
|
555
|
-
### Ejemplo 5: Input States con Sombras
|
|
556
|
-
|
|
557
|
-
```tsx
|
|
558
|
-
export const InputWithStates = () => {
|
|
559
|
-
const [value, setValue] = useState('');
|
|
560
|
-
const [isFocused, setIsFocused] = useState(false);
|
|
561
|
-
const [hasError, setHasError] = useState(false);
|
|
562
|
-
|
|
563
|
-
return (
|
|
564
|
-
<div className="space-y-6 max-w-md">
|
|
565
|
-
{/* Input Normal */}
|
|
566
|
-
<div>
|
|
567
|
-
<label className="text-sm font-bold mb-2 block">Input Normal</label>
|
|
568
|
-
<input
|
|
569
|
-
type="text"
|
|
570
|
-
className="rounded-md border border-border-primary px-4 py-2 w-full transition-shadow"
|
|
571
|
-
placeholder="Sin foco, sin sombra"
|
|
572
|
-
/>
|
|
573
|
-
</div>
|
|
574
|
-
|
|
575
|
-
{/* Input Focused */}
|
|
576
|
-
<div>
|
|
577
|
-
<label className="text-sm font-bold mb-2 block">Input con Focus</label>
|
|
578
|
-
<input
|
|
579
|
-
type="text"
|
|
580
|
-
className="rounded-md border border-border-primary px-4 py-2 w-full focus:shadow-base focus:border-primary-custom-400 focus:ring-2 focus:ring-primary-custom-400 transition-all"
|
|
581
|
-
placeholder="Click para ver shadow-base"
|
|
582
|
-
/>
|
|
583
|
-
</div>
|
|
584
|
-
|
|
585
|
-
{/* Input con Error */}
|
|
586
|
-
<div>
|
|
587
|
-
<label className="text-sm font-bold mb-2 block">Input con Error</label>
|
|
588
|
-
<input
|
|
589
|
-
type="text"
|
|
590
|
-
className="rounded-md border-2 border-error-border px-4 py-2 w-full shadow-base"
|
|
591
|
-
placeholder="Con error"
|
|
592
|
-
/>
|
|
593
|
-
<p className="text-xs text-error-content mt-1">
|
|
594
|
-
Este campo es requerido
|
|
595
|
-
</p>
|
|
596
|
-
</div>
|
|
597
|
-
|
|
598
|
-
{/* Input Disabled */}
|
|
599
|
-
<div>
|
|
600
|
-
<label className="text-sm font-bold mb-2 block text-content-tertiary">
|
|
601
|
-
Input Disabled
|
|
602
|
-
</label>
|
|
603
|
-
<input
|
|
604
|
-
type="text"
|
|
605
|
-
className="rounded-md border border-border-primary bg-gray-50 px-4 py-2 w-full shadow-inner cursor-not-allowed"
|
|
606
|
-
placeholder="Deshabilitado"
|
|
607
|
-
disabled
|
|
608
|
-
/>
|
|
609
|
-
</div>
|
|
610
|
-
</div>
|
|
611
|
-
);
|
|
612
|
-
};
|
|
613
|
-
```
|
|
614
|
-
|
|
615
|
-
---
|
|
616
|
-
|
|
617
|
-
## Mejores Prácticas
|
|
618
|
-
|
|
619
|
-
### ✅ Hacer
|
|
620
|
-
|
|
621
|
-
1. **Usar elevación apropiada según importancia**
|
|
622
|
-
```tsx
|
|
623
|
-
// ✅ CORRECTO - Jerarquía clara
|
|
624
|
-
<div className="shadow-base">Card normal</div>
|
|
625
|
-
<div className="shadow-lg">Modal importante</div>
|
|
626
|
-
```
|
|
627
|
-
|
|
628
|
-
2. **Combinar con transiciones para interacciones suaves**
|
|
629
|
-
```tsx
|
|
630
|
-
// ✅ CORRECTO - Transición fluida
|
|
631
|
-
<div className="shadow-base hover:shadow-md transition-shadow duration-200">
|
|
632
|
-
Card interactivo
|
|
633
|
-
</div>
|
|
634
|
-
```
|
|
635
|
-
|
|
636
|
-
3. **Usar sombras en conjunto con border-radius**
|
|
637
|
-
```tsx
|
|
638
|
-
// ✅ CORRECTO - Sombra + bordes redondeados
|
|
639
|
-
<div className="rounded-2xl shadow-base">
|
|
640
|
-
Card con bordes suaves
|
|
641
|
-
</div>
|
|
642
|
-
```
|
|
643
|
-
|
|
644
|
-
4. **Aplicar sombras internas para elementos hundidos**
|
|
645
|
-
```tsx
|
|
646
|
-
// ✅ CORRECTO - Input con apariencia hundida
|
|
647
|
-
<input className="rounded-md border bg-gray-50 shadow-inner" readOnly />
|
|
648
|
-
```
|
|
649
|
-
|
|
650
|
-
5. **Usar sombras personalizadas para casos específicos**
|
|
651
|
-
```tsx
|
|
652
|
-
// ✅ CORRECTO - Sombra personalizada de botón
|
|
653
|
-
<button className="rounded-md bg-primary-custom-600 shadow-button-inset">
|
|
654
|
-
Botón Default
|
|
655
|
-
</button>
|
|
656
|
-
```
|
|
657
|
-
|
|
658
|
-
### ❌ Evitar
|
|
659
|
-
|
|
660
|
-
1. **No usar sombras muy oscuras o exageradas**
|
|
661
|
-
```tsx
|
|
662
|
-
// ❌ INCORRECTO - Sombra demasiado dramática
|
|
663
|
-
<div style={{ boxShadow: '0 10px 50px rgba(0,0,0,0.8)' }}>
|
|
664
|
-
Sombra exagerada
|
|
665
|
-
</div>
|
|
666
|
-
|
|
667
|
-
// ✅ CORRECTO - Sombra sutil del sistema
|
|
668
|
-
<div className="shadow-lg">Sombra apropiada</div>
|
|
669
|
-
```
|
|
670
|
-
|
|
671
|
-
2. **No apilar múltiples elementos con sombras grandes**
|
|
672
|
-
```tsx
|
|
673
|
-
// ❌ INCORRECTO - Demasiadas sombras compiten
|
|
674
|
-
<div className="shadow-2xl">
|
|
675
|
-
<div className="shadow-2xl">
|
|
676
|
-
<div className="shadow-2xl">Contenido</div>
|
|
677
|
-
</div>
|
|
678
|
-
</div>
|
|
679
|
-
|
|
680
|
-
// ✅ CORRECTO - Solo el contenedor tiene sombra
|
|
681
|
-
<div className="shadow-2xl">
|
|
682
|
-
<div>
|
|
683
|
-
<div>Contenido</div>
|
|
684
|
-
</div>
|
|
685
|
-
</div>
|
|
686
|
-
```
|
|
687
|
-
|
|
688
|
-
3. **No usar sombras en elementos muy pequeños**
|
|
689
|
-
```tsx
|
|
690
|
-
// ❌ INCORRECTO - Badge pequeño con sombra grande
|
|
691
|
-
<span className="text-xs px-2 py-0.5 shadow-xl">Badge</span>
|
|
692
|
-
|
|
693
|
-
// ✅ CORRECTO - Sin sombra o sombra mínima
|
|
694
|
-
<span className="text-xs px-2 py-0.5 rounded bg-blue-100">Badge</span>
|
|
695
|
-
```
|
|
696
|
-
|
|
697
|
-
4. **No omitir transiciones en cambios de sombra**
|
|
698
|
-
```tsx
|
|
699
|
-
// ❌ INCORRECTO - Cambio abrupto
|
|
700
|
-
<div className="shadow-base hover:shadow-xl">Card</div>
|
|
701
|
-
|
|
702
|
-
// ✅ CORRECTO - Con transición
|
|
703
|
-
<div className="shadow-base hover:shadow-xl transition-shadow">Card</div>
|
|
704
|
-
```
|
|
705
|
-
|
|
706
|
-
5. **No usar sombras como único indicador de interactividad**
|
|
707
|
-
```tsx
|
|
708
|
-
// ❌ INCORRECTO - Solo sombra para hover
|
|
709
|
-
<button className="hover:shadow-lg">Click</button>
|
|
710
|
-
|
|
711
|
-
// ✅ CORRECTO - Múltiples indicadores
|
|
712
|
-
<button className="rounded-md bg-primary-custom-600 hover:bg-primary-custom-500 hover:shadow-lg transition-all">
|
|
713
|
-
Click
|
|
714
|
-
</button>
|
|
715
|
-
```
|
|
716
|
-
|
|
717
|
-
### Accesibilidad
|
|
718
|
-
|
|
719
|
-
1. **No depender solo de sombras para comunicar estados**
|
|
720
|
-
- Combinar con colores, bordes, iconos
|
|
721
|
-
- Las sombras pueden no ser visibles en todos los contextos
|
|
722
|
-
|
|
723
|
-
2. **Asegurar contraste suficiente**
|
|
724
|
-
- Las sombras no deben reducir el contraste del texto
|
|
725
|
-
- Verificar WCAG 2.1 AA (4.5:1 para texto normal)
|
|
726
|
-
|
|
727
|
-
3. **Considerar usuarios con baja visión**
|
|
728
|
-
- Sombras muy sutiles pueden no ser percibidas
|
|
729
|
-
- Usar indicadores adicionales para estados importantes
|
|
730
|
-
|
|
731
|
-
4. **Dark Mode**
|
|
732
|
-
- Las sombras negras funcionan bien en fondos claros y oscuros
|
|
733
|
-
- No necesitas sombras diferentes para dark mode en la mayoría de casos
|
|
734
|
-
|
|
735
|
-
### Performance
|
|
736
|
-
|
|
737
|
-
1. **Las sombras CSS son eficientes**
|
|
738
|
-
- ✅ No requieren imágenes adicionales
|
|
739
|
-
- ✅ Son hardware-accelerated en la mayoría de navegadores
|
|
740
|
-
|
|
741
|
-
2. **Evitar blur excesivo**
|
|
742
|
-
- Valores de blur muy altos pueden impactar performance
|
|
743
|
-
- El sistema usa valores optimizados (1px a 50px)
|
|
744
|
-
|
|
745
|
-
3. **Animar solo transform y opacity cuando sea posible**
|
|
746
|
-
```tsx
|
|
747
|
-
// ✅ MEJOR PERFORMANCE - Animar transform
|
|
748
|
-
<div className="shadow-base hover:scale-105 transition-transform">
|
|
749
|
-
Card
|
|
750
|
-
</div>
|
|
751
|
-
|
|
752
|
-
// ⚠️ ACEPTABLE - Animar shadow
|
|
753
|
-
<div className="shadow-base hover:shadow-lg transition-shadow">
|
|
754
|
-
Card
|
|
755
|
-
</div>
|
|
756
|
-
```
|
|
757
|
-
|
|
758
|
-
---
|
|
759
|
-
|
|
760
|
-
## Dark Mode
|
|
761
|
-
|
|
762
|
-
Las sombras en dark mode requieren consideraciones especiales para mantener la profundidad visual sin que las sombras negras se vuelvan invisibles sobre fondos oscuros.
|
|
763
|
-
|
|
764
|
-
### Configuración de Tailwind CSS
|
|
765
|
-
|
|
766
|
-
El modo oscuro en Siesa UI Kit se basa en la estrategia de clases de Tailwind CSS:
|
|
767
|
-
|
|
768
|
-
```javascript
|
|
769
|
-
// tailwind.config.js
|
|
770
|
-
module.exports = {
|
|
771
|
-
darkMode: 'class', // ✅ Estrategia basada en clases (NO 'media')
|
|
772
|
-
// ...resto de la configuración
|
|
773
|
-
}
|
|
774
|
-
```
|
|
775
|
-
|
|
776
|
-
Con esta configuración, el modo oscuro se activa añadiendo la clase `.dark` al elemento `<html>`:
|
|
777
|
-
|
|
778
|
-
```html
|
|
779
|
-
<!-- Modo claro -->
|
|
780
|
-
<html>
|
|
781
|
-
<body>
|
|
782
|
-
<!-- Contenido en modo claro -->
|
|
783
|
-
</body>
|
|
784
|
-
</html>
|
|
785
|
-
|
|
786
|
-
<!-- Modo oscuro -->
|
|
787
|
-
<html class="dark">
|
|
788
|
-
<body>
|
|
789
|
-
<!-- Contenido en modo oscuro -->
|
|
790
|
-
</body>
|
|
791
|
-
</html>
|
|
792
|
-
```
|
|
793
|
-
|
|
794
|
-
### El Modificador `dark:`
|
|
795
|
-
|
|
796
|
-
El modificador `dark:` de Tailwind funciona como un **prefijo condicional** que aplica estilos solo cuando la clase `.dark` está presente en un elemento padre.
|
|
797
|
-
|
|
798
|
-
#### Principios para Sombras en Dark Mode
|
|
799
|
-
|
|
800
|
-
```tsx
|
|
801
|
-
// Patrón básico - Sombras funcionan bien en ambos modos
|
|
802
|
-
<div className="rounded-2xl bg-white dark:bg-dark-bg-primary shadow-base p-6">
|
|
803
|
-
Card con sombra adaptable
|
|
804
|
-
</div>
|
|
805
|
-
|
|
806
|
-
// Las sombras negras (rgba(0,0,0,...)) funcionan bien en ambos modos
|
|
807
|
-
// porque el contraste se mantiene sobre fondos oscuros
|
|
808
|
-
```
|
|
809
|
-
|
|
810
|
-
**Nota Importante**: Las sombras negras con opacidad baja (5%-10%) funcionan bien tanto en fondos claros como oscuros, por lo que **generalmente NO necesitas cambiar las sombras en dark mode**.
|
|
811
|
-
|
|
812
|
-
### Cuándo Ajustar Sombras en Dark Mode
|
|
813
|
-
|
|
814
|
-
Hay casos específicos donde puedes querer ajustar las sombras:
|
|
815
|
-
|
|
816
|
-
#### 1. Aumentar Opacidad en Dark Mode
|
|
817
|
-
|
|
818
|
-
Para elementos que necesitan destacarse más en dark mode:
|
|
819
|
-
|
|
820
|
-
```tsx
|
|
821
|
-
// Aumentar intensidad de sombra en dark mode
|
|
822
|
-
<div className="
|
|
823
|
-
rounded-2xl
|
|
824
|
-
bg-white dark:bg-dark-bg-primary
|
|
825
|
-
shadow-base dark:shadow-lg
|
|
826
|
-
p-6
|
|
827
|
-
">
|
|
828
|
-
Card con sombra más intensa en dark mode
|
|
829
|
-
</div>
|
|
830
|
-
|
|
831
|
-
// Modal que necesita más prominencia en dark mode
|
|
832
|
-
<div className="
|
|
833
|
-
rounded-3xl
|
|
834
|
-
bg-white dark:bg-dark-bg-primary
|
|
835
|
-
shadow-xl dark:shadow-2xl
|
|
836
|
-
p-8
|
|
837
|
-
">
|
|
838
|
-
Modal destacado en dark mode
|
|
839
|
-
</div>
|
|
840
|
-
```
|
|
841
|
-
|
|
842
|
-
#### 2. Sombras de Color en Dark Mode
|
|
843
|
-
|
|
844
|
-
Sombras de color (para efectos especiales) pueden necesitar ajuste:
|
|
845
|
-
|
|
846
|
-
```tsx
|
|
847
|
-
// Sombra de color ajustada para dark mode
|
|
848
|
-
<button className="
|
|
849
|
-
rounded-md
|
|
850
|
-
bg-primary-custom-600 dark:bg-dark-bg-inverse
|
|
851
|
-
shadow-[0_4px_14px_0_rgba(14,121,253,0.4)]
|
|
852
|
-
dark:shadow-[0_4px_14px_0_rgba(147,209,253,0.3)]
|
|
853
|
-
px-4 py-2
|
|
854
|
-
">
|
|
855
|
-
Botón con sombra de color
|
|
856
|
-
</button>
|
|
857
|
-
```
|
|
858
|
-
|
|
859
|
-
### Combinando Sombras con Otros Estados
|
|
860
|
-
|
|
861
|
-
El modificador `dark:` se puede combinar con hover, focus, y otros estados:
|
|
862
|
-
|
|
863
|
-
```tsx
|
|
864
|
-
// Dark mode + Hover
|
|
865
|
-
<div className="
|
|
866
|
-
rounded-2xl
|
|
867
|
-
bg-white dark:bg-dark-bg-primary
|
|
868
|
-
shadow-base dark:shadow-md
|
|
869
|
-
hover:shadow-lg dark:hover:shadow-xl
|
|
870
|
-
transition-shadow
|
|
871
|
-
p-6
|
|
872
|
-
">
|
|
873
|
-
Card con hover effect en ambos modos
|
|
874
|
-
</div>
|
|
875
|
-
|
|
876
|
-
// Dark mode + Focus en inputs
|
|
877
|
-
<input className="
|
|
878
|
-
rounded-md
|
|
879
|
-
border border-border-primary dark:border-dark-border-primary
|
|
880
|
-
focus:shadow-lg dark:focus:shadow-xl
|
|
881
|
-
focus:ring-2 focus:ring-primary-custom-400/20 dark:focus:ring-dark-border-custom/20
|
|
882
|
-
" />
|
|
883
|
-
```
|
|
884
|
-
|
|
885
|
-
### Orden de Modificadores
|
|
886
|
-
|
|
887
|
-
Tailwind CSS recomienda un orden específico:
|
|
888
|
-
|
|
889
|
-
**Formato**: `{responsive}:{dark}:{state}:{utility}`
|
|
890
|
-
|
|
891
|
-
```tsx
|
|
892
|
-
// ✅ CORRECTO - Orden: responsive → dark → state → utility
|
|
893
|
-
<div className="
|
|
894
|
-
shadow-base
|
|
895
|
-
md:shadow-md
|
|
896
|
-
md:dark:shadow-lg
|
|
897
|
-
md:dark:hover:shadow-xl
|
|
898
|
-
transition-shadow
|
|
899
|
-
">
|
|
900
|
-
Card con orden correcto
|
|
901
|
-
</div>
|
|
902
|
-
|
|
903
|
-
// ❌ INCORRECTO - Orden equivocado
|
|
904
|
-
<div className="
|
|
905
|
-
dark:md:hover:shadow-xl
|
|
906
|
-
shadow-base
|
|
907
|
-
">
|
|
908
|
-
Orden confuso
|
|
909
|
-
</div>
|
|
910
|
-
```
|
|
911
|
-
|
|
912
|
-
### Tabla de Sombras por Modo
|
|
913
|
-
|
|
914
|
-
| Componente | Light Mode | Dark Mode | Razón |
|
|
915
|
-
|------------|------------|-----------|-------|
|
|
916
|
-
| **Card estándar** | `shadow-base` | `shadow-base` | Mismo valor - funciona bien |
|
|
917
|
-
| **Card elevado** | `shadow-md` | `shadow-md` o `shadow-lg` | Opcional: aumentar en dark |
|
|
918
|
-
| **Modal pequeño** | `shadow-lg` | `shadow-lg` o `shadow-xl` | Opcional: aumentar en dark |
|
|
919
|
-
| **Modal grande** | `shadow-xl` | `shadow-xl` o `shadow-2xl` | Opcional: aumentar en dark |
|
|
920
|
-
| **Dropdown** | `shadow-menu` | `shadow-menu` o `shadow-lg` | Opcional: aumentar en dark |
|
|
921
|
-
| **Button inset** | `shadow-button-inset` | `shadow-button-inset` | Mismo valor |
|
|
922
|
-
|
|
923
|
-
### Ejemplos Completos
|
|
924
|
-
|
|
925
|
-
#### Ejemplo 1: Cards con Sombras Adaptativas
|
|
926
|
-
|
|
927
|
-
```tsx
|
|
928
|
-
export const CardWithShadow = () => {
|
|
929
|
-
return (
|
|
930
|
-
<div className="
|
|
931
|
-
rounded-2xl
|
|
932
|
-
bg-white dark:bg-dark-bg-primary
|
|
933
|
-
border border-border-primary dark:border-dark-border-primary
|
|
934
|
-
shadow-base dark:shadow-md
|
|
935
|
-
p-6
|
|
936
|
-
hover:shadow-lg dark:hover:shadow-xl
|
|
937
|
-
transition-all
|
|
938
|
-
">
|
|
939
|
-
<h3 className="
|
|
940
|
-
text-content-primary dark:text-dark-content-primary
|
|
941
|
-
font-bold text-xl mb-4
|
|
942
|
-
">
|
|
943
|
-
Card Title
|
|
944
|
-
</h3>
|
|
945
|
-
<p className="
|
|
946
|
-
text-content-secondary dark:text-content-secondary
|
|
947
|
-
mb-4
|
|
948
|
-
">
|
|
949
|
-
Card content con sombra que se adapta al modo oscuro
|
|
950
|
-
</p>
|
|
951
|
-
<button className="
|
|
952
|
-
rounded-md
|
|
953
|
-
bg-primary-custom-600 dark:bg-dark-bg-inverse
|
|
954
|
-
text-primary-inverse-content dark:text-dark-content-inverse
|
|
955
|
-
shadow-button-inset
|
|
956
|
-
px-4 py-2
|
|
957
|
-
font-bold
|
|
958
|
-
">
|
|
959
|
-
Action
|
|
960
|
-
</button>
|
|
961
|
-
</div>
|
|
962
|
-
);
|
|
963
|
-
};
|
|
964
|
-
```
|
|
965
|
-
|
|
966
|
-
#### Ejemplo 2: Modal con Sombras Intensas en Dark Mode
|
|
967
|
-
|
|
968
|
-
```tsx
|
|
969
|
-
export const AdaptiveModal = ({ isOpen, onClose }) => {
|
|
970
|
-
if (!isOpen) return null;
|
|
971
|
-
|
|
972
|
-
return (
|
|
973
|
-
<div className="fixed inset-0 z-50 flex items-center justify-center p-4">
|
|
974
|
-
{/* Overlay */}
|
|
975
|
-
<div
|
|
976
|
-
className="absolute inset-0 bg-black/50 dark:bg-black/70 backdrop-blur-sm"
|
|
977
|
-
onClick={onClose}
|
|
978
|
-
/>
|
|
979
|
-
|
|
980
|
-
{/* Modal */}
|
|
981
|
-
<div className="
|
|
982
|
-
relative z-10
|
|
983
|
-
rounded-3xl
|
|
984
|
-
bg-white dark:bg-dark-bg-primary
|
|
985
|
-
border border-border-primary dark:border-dark-border-primary
|
|
986
|
-
shadow-xl dark:shadow-2xl
|
|
987
|
-
max-w-md w-full
|
|
988
|
-
">
|
|
989
|
-
{/* Header */}
|
|
990
|
-
<div className="
|
|
991
|
-
flex items-center justify-between
|
|
992
|
-
p-6
|
|
993
|
-
border-b border-border-primary dark:border-dark-border-primary
|
|
994
|
-
">
|
|
995
|
-
<h2 className="
|
|
996
|
-
text-content-primary dark:text-dark-content-primary
|
|
997
|
-
font-bold text-2xl
|
|
998
|
-
">
|
|
999
|
-
Modal Title
|
|
1000
|
-
</h2>
|
|
1001
|
-
<button
|
|
1002
|
-
onClick={onClose}
|
|
1003
|
-
className="
|
|
1004
|
-
rounded-full p-2
|
|
1005
|
-
hover:bg-background-secondary dark:hover:bg-dark-bg-primary
|
|
1006
|
-
transition-colors
|
|
1007
|
-
"
|
|
1008
|
-
>
|
|
1009
|
-
<XIcon className="w-5 h-5" />
|
|
1010
|
-
</button>
|
|
1011
|
-
</div>
|
|
1012
|
-
|
|
1013
|
-
{/* Body */}
|
|
1014
|
-
<div className="p-6">
|
|
1015
|
-
<p className="
|
|
1016
|
-
text-content-secondary dark:text-content-secondary
|
|
1017
|
-
">
|
|
1018
|
-
Modal content adaptado para dark mode con sombras más intensas
|
|
1019
|
-
</p>
|
|
1020
|
-
</div>
|
|
1021
|
-
|
|
1022
|
-
{/* Footer */}
|
|
1023
|
-
<div className="
|
|
1024
|
-
flex gap-3 justify-end
|
|
1025
|
-
p-6
|
|
1026
|
-
border-t border-border-primary dark:border-dark-border-primary
|
|
1027
|
-
">
|
|
1028
|
-
<button
|
|
1029
|
-
onClick={onClose}
|
|
1030
|
-
className="
|
|
1031
|
-
rounded-md
|
|
1032
|
-
border border-border-primary dark:border-dark-border-custom
|
|
1033
|
-
px-4 py-2
|
|
1034
|
-
font-bold
|
|
1035
|
-
text-content-primary dark:text-dark-content-primary
|
|
1036
|
-
hover:bg-background-secondary dark:hover:bg-dark-bg-primary
|
|
1037
|
-
"
|
|
1038
|
-
>
|
|
1039
|
-
Cancel
|
|
1040
|
-
</button>
|
|
1041
|
-
<button className="
|
|
1042
|
-
rounded-md
|
|
1043
|
-
bg-primary-custom-600 dark:bg-dark-bg-inverse
|
|
1044
|
-
text-primary-inverse-content dark:text-dark-content-inverse
|
|
1045
|
-
shadow-button-inset
|
|
1046
|
-
px-4 py-2
|
|
1047
|
-
font-bold
|
|
1048
|
-
">
|
|
1049
|
-
Confirm
|
|
1050
|
-
</button>
|
|
1051
|
-
</div>
|
|
1052
|
-
</div>
|
|
1053
|
-
</div>
|
|
1054
|
-
);
|
|
1055
|
-
};
|
|
1056
|
-
```
|
|
1057
|
-
|
|
1058
|
-
#### Ejemplo 3: Dropdown con Sombra Adaptativa
|
|
1059
|
-
|
|
1060
|
-
```tsx
|
|
1061
|
-
export const DropdownMenu = ({ isOpen, items }) => {
|
|
1062
|
-
if (!isOpen) return null;
|
|
1063
|
-
|
|
1064
|
-
return (
|
|
1065
|
-
<div className="
|
|
1066
|
-
absolute top-full right-0 mt-2
|
|
1067
|
-
rounded-xl
|
|
1068
|
-
bg-white dark:bg-dark-bg-primary
|
|
1069
|
-
border border-border-primary dark:border-dark-border-primary
|
|
1070
|
-
shadow-menu dark:shadow-lg
|
|
1071
|
-
min-w-[200px]
|
|
1072
|
-
py-2
|
|
1073
|
-
">
|
|
1074
|
-
{items.map((item, index) => (
|
|
1075
|
-
<button
|
|
1076
|
-
key={index}
|
|
1077
|
-
className="
|
|
1078
|
-
w-full px-4 py-2
|
|
1079
|
-
text-left
|
|
1080
|
-
text-content-primary dark:text-dark-content-primary
|
|
1081
|
-
hover:bg-background-secondary dark:hover:bg-dark-bg-primary
|
|
1082
|
-
transition-colors
|
|
1083
|
-
"
|
|
1084
|
-
>
|
|
1085
|
-
{item.label}
|
|
1086
|
-
</button>
|
|
1087
|
-
))}
|
|
1088
|
-
</div>
|
|
1089
|
-
);
|
|
1090
|
-
};
|
|
1091
|
-
```
|
|
1092
|
-
|
|
1093
|
-
#### Ejemplo 4: Grid de Cards con Hover
|
|
1094
|
-
|
|
1095
|
-
```tsx
|
|
1096
|
-
export const CardGrid = ({ cards }) => {
|
|
1097
|
-
return (
|
|
1098
|
-
<div className="
|
|
1099
|
-
min-h-screen
|
|
1100
|
-
bg-bg-primary dark:bg-dark-bg-primary
|
|
1101
|
-
p-8
|
|
1102
|
-
">
|
|
1103
|
-
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6">
|
|
1104
|
-
{cards.map((card) => (
|
|
1105
|
-
<div
|
|
1106
|
-
key={card.id}
|
|
1107
|
-
className="
|
|
1108
|
-
rounded-2xl
|
|
1109
|
-
bg-white dark:bg-dark-bg-primary
|
|
1110
|
-
border border-border-primary dark:border-dark-border-primary
|
|
1111
|
-
shadow-base dark:shadow-md
|
|
1112
|
-
hover:shadow-lg dark:hover:shadow-xl
|
|
1113
|
-
hover:scale-105
|
|
1114
|
-
transition-all
|
|
1115
|
-
p-6
|
|
1116
|
-
cursor-pointer
|
|
1117
|
-
"
|
|
1118
|
-
>
|
|
1119
|
-
<h3 className="
|
|
1120
|
-
text-content-primary dark:text-dark-content-primary
|
|
1121
|
-
font-bold text-lg mb-2
|
|
1122
|
-
">
|
|
1123
|
-
{card.title}
|
|
1124
|
-
</h3>
|
|
1125
|
-
<p className="
|
|
1126
|
-
text-content-secondary dark:text-content-secondary
|
|
1127
|
-
text-sm
|
|
1128
|
-
">
|
|
1129
|
-
{card.description}
|
|
1130
|
-
</p>
|
|
1131
|
-
</div>
|
|
1132
|
-
))}
|
|
1133
|
-
</div>
|
|
1134
|
-
</div>
|
|
1135
|
-
);
|
|
1136
|
-
};
|
|
1137
|
-
```
|
|
1138
|
-
|
|
1139
|
-
### Mejores Prácticas para Sombras en Dark Mode
|
|
1140
|
-
|
|
1141
|
-
#### ✅ Hacer
|
|
1142
|
-
|
|
1143
|
-
1. **Usar las sombras estándar en ambos modos (cuando sea suficiente)**
|
|
1144
|
-
```tsx
|
|
1145
|
-
// ✅ CORRECTO - Las sombras negras funcionan bien
|
|
1146
|
-
<div className="shadow-base">Card</div>
|
|
1147
|
-
```
|
|
1148
|
-
|
|
1149
|
-
2. **Aumentar la sombra en dark mode solo si es necesario**
|
|
1150
|
-
```tsx
|
|
1151
|
-
// ✅ CORRECTO - Más prominencia en dark mode
|
|
1152
|
-
<div className="shadow-base dark:shadow-lg">Card destacado</div>
|
|
1153
|
-
```
|
|
1154
|
-
|
|
1155
|
-
3. **Combinar sombras con colores adaptativos**
|
|
1156
|
-
```tsx
|
|
1157
|
-
// ✅ CORRECTO - Todo se adapta
|
|
1158
|
-
<div className="
|
|
1159
|
-
bg-white dark:bg-dark-bg-primary
|
|
1160
|
-
border border-border-primary dark:border-dark-border-primary
|
|
1161
|
-
shadow-base dark:shadow-md
|
|
1162
|
-
">
|
|
1163
|
-
Card completo
|
|
1164
|
-
</div>
|
|
1165
|
-
```
|
|
1166
|
-
|
|
1167
|
-
4. **Ajustar overlay opacities en dark mode**
|
|
1168
|
-
```tsx
|
|
1169
|
-
// ✅ CORRECTO - Overlay más oscuro en dark mode
|
|
1170
|
-
<div className="bg-black/50 dark:bg-black/70 backdrop-blur-sm">
|
|
1171
|
-
Overlay
|
|
1172
|
-
</div>
|
|
1173
|
-
```
|
|
1174
|
-
|
|
1175
|
-
#### ❌ Evitar
|
|
1176
|
-
|
|
1177
|
-
1. **No remover sombras en dark mode**
|
|
1178
|
-
```tsx
|
|
1179
|
-
// ❌ INCORRECTO - Perder profundidad en dark
|
|
1180
|
-
<div className="shadow-base dark:shadow-none">Card</div>
|
|
1181
|
-
|
|
1182
|
-
// ✅ CORRECTO - Mantener o aumentar
|
|
1183
|
-
<div className="shadow-base dark:shadow-md">Card</div>
|
|
1184
|
-
```
|
|
1185
|
-
|
|
1186
|
-
2. **No usar sombras blancas en dark mode**
|
|
1187
|
-
```tsx
|
|
1188
|
-
// ❌ INCORRECTO - Sombras blancas no funcionan bien
|
|
1189
|
-
<div className="dark:shadow-[0_4px_6px_rgba(255,255,255,0.3)]">
|
|
1190
|
-
Card
|
|
1191
|
-
</div>
|
|
1192
|
-
|
|
1193
|
-
// ✅ CORRECTO - Mantener sombras negras o aumentar intensidad
|
|
1194
|
-
<div className="shadow-base dark:shadow-lg">Card</div>
|
|
1195
|
-
```
|
|
1196
|
-
|
|
1197
|
-
3. **No olvidar combinar con colores de fondo y borde**
|
|
1198
|
-
```tsx
|
|
1199
|
-
// ❌ INCORRECTO - Solo cambiar sombra
|
|
1200
|
-
<div className="bg-white shadow-base dark:shadow-lg">
|
|
1201
|
-
Fondo no se adapta
|
|
1202
|
-
</div>
|
|
1203
|
-
|
|
1204
|
-
// ✅ CORRECTO - Adaptar todo
|
|
1205
|
-
<div className="
|
|
1206
|
-
bg-white dark:bg-dark-bg-primary
|
|
1207
|
-
border border-border-primary dark:border-dark-border-primary
|
|
1208
|
-
shadow-base dark:shadow-lg
|
|
1209
|
-
">
|
|
1210
|
-
Todo adaptado
|
|
1211
|
-
</div>
|
|
1212
|
-
```
|
|
1213
|
-
|
|
1214
|
-
### Guía Rápida: Decisiones sobre Sombras en Dark Mode
|
|
1215
|
-
|
|
1216
|
-
| Situación | Recomendación |
|
|
1217
|
-
|-----------|---------------|
|
|
1218
|
-
| **Card de lista** | Mantener `shadow-base` en ambos modos |
|
|
1219
|
-
| **Card destacado** | `shadow-base` → `dark:shadow-md` |
|
|
1220
|
-
| **Modal** | Aumentar un nivel: `shadow-lg` → `dark:shadow-xl` |
|
|
1221
|
-
| **Dropdown** | Aumentar: `shadow-menu` → `dark:shadow-lg` |
|
|
1222
|
-
| **Overlay** | Aumentar opacidad: `bg-black/50` → `dark:bg-black/70` |
|
|
1223
|
-
| **Button inset** | Mantener `shadow-button-inset` en ambos |
|
|
1224
|
-
|
|
1225
|
-
### Recursos Adicionales sobre Dark Mode
|
|
1226
|
-
|
|
1227
|
-
Para más información sobre el modo oscuro:
|
|
1228
|
-
- Ver `docs/dark-mode-guide.md` - Guía completa de Dark Mode en Tailwind CSS
|
|
1229
|
-
- Ver `docs/colors.md` - Sistema de colores completo con tokens dark mode
|
|
1230
|
-
- Ver `docs/border-radius.md` - Border radius con ejemplos de dark mode
|
|
1231
|
-
- Ver `docs/typography.md` - Sistema tipográfico adaptado a dark mode
|
|
1232
|
-
- [Documentación oficial de Tailwind Dark Mode](https://tailwindcss.com/docs/dark-mode)
|
|
1233
|
-
|
|
1234
|
-
---
|
|
1235
|
-
|
|
1236
|
-
## Referencia Rápida
|
|
1237
|
-
|
|
1238
|
-
### Cheat Sheet: Por Componente
|
|
1239
|
-
|
|
1240
|
-
```tsx
|
|
1241
|
-
// ===== BOTONES =====
|
|
1242
|
-
<button className="shadow-button-inset">Button default</button>
|
|
1243
|
-
<button className="shadow-base hover:shadow-md">Button outline</button>
|
|
1244
|
-
|
|
1245
|
-
// ===== CARDS =====
|
|
1246
|
-
<div className="shadow-base">Card estándar</div>
|
|
1247
|
-
<div className="shadow-md">Card elevado</div>
|
|
1248
|
-
<div className="shadow-lg">Card flotante</div>
|
|
1249
|
-
|
|
1250
|
-
// ===== MODALES =====
|
|
1251
|
-
<div className="shadow-lg">Modal pequeño</div>
|
|
1252
|
-
<div className="shadow-xl">Modal grande</div>
|
|
1253
|
-
<div className="shadow-2xl">Drawer/Panel</div>
|
|
1254
|
-
|
|
1255
|
-
// ===== DROPDOWNS =====
|
|
1256
|
-
<div className="shadow-menu">Dropdown simple</div>
|
|
1257
|
-
<div className="shadow-md">Menú contextual</div>
|
|
1258
|
-
|
|
1259
|
-
// ===== INPUTS =====
|
|
1260
|
-
<input className="focus:shadow-base" />
|
|
1261
|
-
<input className="shadow-inner" disabled />
|
|
1262
|
-
|
|
1263
|
-
// ===== TOOLTIPS =====
|
|
1264
|
-
<div className="shadow-lg">Tooltip</div>
|
|
1265
|
-
<div className="shadow-xl">Popover</div>
|
|
1266
|
-
```
|
|
1267
|
-
|
|
1268
|
-
### Cheat Sheet: Por Elevación
|
|
1269
|
-
|
|
1270
|
-
| Nivel | Clase | Uso |
|
|
1271
|
-
|-------|-------|-----|
|
|
1272
|
-
| 0 | Sin sombra | Fondos, elementos integrados |
|
|
1273
|
-
| 1 | `shadow-sm` | Separadores sutiles |
|
|
1274
|
-
| 2 | `shadow-base` | **Cards, inputs focus** |
|
|
1275
|
-
| 3 | `shadow-md` | Cards elevados, dropdowns |
|
|
1276
|
-
| 4 | `shadow-lg` | **Modales, popovers** |
|
|
1277
|
-
| 5 | `shadow-xl` | Modales grandes |
|
|
1278
|
-
| 6 | `shadow-2xl` | Drawers, panels |
|
|
1279
|
-
|
|
1280
|
-
### Cheat Sheet: Valores CSS
|
|
1281
|
-
|
|
1282
|
-
```css
|
|
1283
|
-
/* Drop Shadows */
|
|
1284
|
-
shadow-sm: 0px 1px 2px 0px rgba(0,0,0,0.05)
|
|
1285
|
-
shadow-base: 0px 1px 2px -1px rgba(0,0,0,0.1),
|
|
1286
|
-
0px 1px 3px 0px rgba(0,0,0,0.1)
|
|
1287
|
-
shadow-md: 0px 2px 4px -2px rgba(0,0,0,0.1),
|
|
1288
|
-
0px 4px 6px -1px rgba(0,0,0,0.1)
|
|
1289
|
-
shadow-lg: 0px 4px 6px -4px rgba(0,0,0,0.1),
|
|
1290
|
-
0px 10px 15px -3px rgba(0,0,0,0.1)
|
|
1291
|
-
shadow-xl: 0px 8px 10px -6px rgba(0,0,0,0.1),
|
|
1292
|
-
0px 20px 25px -5px rgba(0,0,0,0.1)
|
|
1293
|
-
shadow-2xl: 0px 25px 50px -12px rgba(0,0,0,0.25)
|
|
1294
|
-
|
|
1295
|
-
/* Inner Shadow */
|
|
1296
|
-
shadow-inner: inset 0 2px 4px 0 rgba(0,0,0,0.05)
|
|
1297
|
-
|
|
1298
|
-
/* Custom */
|
|
1299
|
-
shadow-button-inset: 0px 2px 0px 0px inset rgba(255,255,255,0.15)
|
|
1300
|
-
shadow-menu: 0px 4px 4px -1px rgba(12,12,13,0.05),
|
|
1301
|
-
0px 4px 4px -1px rgba(12,12,13,0.1)
|
|
1302
|
-
```
|
|
1303
|
-
|
|
1304
|
-
### Cheat Sheet: Transiciones
|
|
1305
|
-
|
|
1306
|
-
```tsx
|
|
1307
|
-
// Transición básica
|
|
1308
|
-
<div className="shadow-base hover:shadow-md transition-shadow">...</div>
|
|
1309
|
-
|
|
1310
|
-
// Transición con duración
|
|
1311
|
-
<div className="shadow-base hover:shadow-lg transition-shadow duration-300">...</div>
|
|
1312
|
-
|
|
1313
|
-
// Transición con múltiples propiedades
|
|
1314
|
-
<div className="shadow-base hover:shadow-lg hover:scale-105 transition-all duration-200">...</div>
|
|
1315
|
-
|
|
1316
|
-
// Transición solo en hover out
|
|
1317
|
-
<div className="shadow-lg hover:shadow-base transition-shadow ease-out">...</div>
|
|
1318
|
-
```
|
|
1319
|
-
|
|
1320
|
-
---
|
|
1321
|
-
|
|
1322
|
-
## Recursos Adicionales
|
|
1323
|
-
|
|
1324
|
-
### Enlaces Útiles
|
|
1325
|
-
|
|
1326
|
-
- **Tailwind Box Shadow**: https://tailwindcss.com/docs/box-shadow
|
|
1327
|
-
- **CSS box-shadow**: https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow
|
|
1328
|
-
- **Shadow Generator**: https://shadows.brumm.af
|
|
1329
|
-
- **Material Design Elevation**: https://material.io/design/environment/elevation.html
|
|
1330
|
-
|
|
1331
|
-
### Archivos Relacionados
|
|
1332
|
-
|
|
1333
|
-
- `tailwind.config.js` - Configuración de boxShadow (líneas 114-118)
|
|
1334
|
-
- `src/components/Button/Button.tsx` - Uso de shadow-button-inset (línea 67)
|
|
1335
|
-
- `docs/colors.md` - Sistema de colores
|
|
1336
|
-
- `docs/border-radius.md` - Border radius (combina bien con sombras)
|
|
1337
|
-
- `docs/typography.md` - Sistema tipográfico
|
|
1338
|
-
|
|
1339
|
-
### Herramientas de Testing
|
|
1340
|
-
|
|
1341
|
-
```tsx
|
|
1342
|
-
// Componente para visualizar todas las sombras
|
|
1343
|
-
export const ShadowsDemo = () => {
|
|
1344
|
-
const shadows = [
|
|
1345
|
-
{ name: 'shadow-sm', label: 'Small' },
|
|
1346
|
-
{ name: 'shadow-base', label: 'Base' },
|
|
1347
|
-
{ name: 'shadow-md', label: 'Medium' },
|
|
1348
|
-
{ name: 'shadow-lg', label: 'Large' },
|
|
1349
|
-
{ name: 'shadow-xl', label: 'Extra Large' },
|
|
1350
|
-
{ name: 'shadow-2xl', label: '2X Large' },
|
|
1351
|
-
{ name: 'shadow-inner', label: 'Inner' },
|
|
1352
|
-
{ name: 'shadow-button-inset', label: 'Button Inset' },
|
|
1353
|
-
{ name: 'shadow-menu', label: 'Menu' },
|
|
1354
|
-
];
|
|
1355
|
-
|
|
1356
|
-
return (
|
|
1357
|
-
<div className="grid grid-cols-3 gap-8 p-8 bg-gray-50">
|
|
1358
|
-
{shadows.map((shadow) => (
|
|
1359
|
-
<div key={shadow.name} className="text-center">
|
|
1360
|
-
<div
|
|
1361
|
-
className={`${shadow.name} rounded-lg bg-white w-32 h-32 mx-auto mb-4 flex items-center justify-center`}
|
|
1362
|
-
>
|
|
1363
|
-
<span className="text-sm font-bold">{shadow.label}</span>
|
|
1364
|
-
</div>
|
|
1365
|
-
<p className="font-bold text-sm">{shadow.name}</p>
|
|
1366
|
-
</div>
|
|
1367
|
-
))}
|
|
1368
|
-
</div>
|
|
1369
|
-
);
|
|
1370
|
-
};
|
|
1371
|
-
```
|
|
1372
|
-
|
|
1373
|
-
---
|
|
1374
|
-
|
|
1375
|
-
**Última actualización**: 2025-11-11
|
|
1376
|
-
**Versión**: 1.0.0
|
|
1377
|
-
**Mantenedor**: Siesa UI Kit Team
|