siesa-ui-kit 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +89 -115
- package/bin/install.cjs +502 -502
- package/bin/prepare-publish.cjs +28 -28
- package/bin/restore-folders.cjs +28 -28
- package/claude/agents/siesa-ui-kit-specialist.md +2401 -2445
- package/claude/prompts/component-template.md +121 -121
- package/claude/settings.local.json +61 -72
- package/docs/border-radius.md +1261 -1261
- package/docs/colors.md +832 -832
- package/docs/dark-mode-guide.md +1426 -1426
- package/docs/filters.md +1243 -1243
- package/docs/icons.md +1283 -1264
- package/docs/shadows.md +1377 -1377
- package/docs/spacing.md +1684 -1684
- package/docs/typography.md +1268 -1268
- package/package.json +83 -111
- package/postcss.config.cjs +6 -6
- package/src/App.css +42 -42
- package/src/App.tsx +8 -8
- package/src/ButtonTest.tsx +147 -147
- package/src/assets/fonts/README.md +261 -261
- package/src/components/Alert/Alert.stories.tsx +332 -332
- package/src/components/Alert/Alert.tsx +106 -106
- package/src/components/Alert/Alert.types.ts +54 -54
- package/src/components/Avatar/Avatar.stories.tsx +494 -494
- package/src/components/Avatar/Avatar.tsx +143 -143
- package/src/components/Avatar/Avatar.types.ts +53 -53
- package/src/components/Badge/Badge.stories.tsx +339 -339
- package/src/components/Badge/Badge.tsx +278 -278
- package/src/components/Badge/Badge.types.ts +58 -58
- package/src/components/Button/Button.stories.tsx +950 -950
- package/src/components/Button/Button.tsx +337 -337
- package/src/components/Button/Button.types.ts +180 -180
- package/src/components/Button/icons.tsx +87 -48
- package/src/components/Button/index.ts +3 -3
- package/src/components/Checkbox/Checkbox.stories.tsx +453 -453
- package/src/components/Checkbox/Checkbox.tsx +208 -208
- package/src/components/Checkbox/Checkbox.types.ts +61 -61
- package/src/components/DescriptionList/DescriptionList.stories.tsx +250 -250
- package/src/components/DescriptionList/DescriptionList.tsx +96 -96
- package/src/components/DescriptionList/DescriptionList.types.ts +29 -29
- package/src/components/Divider/Divider.stories.tsx +263 -263
- package/src/components/Divider/Divider.tsx +80 -80
- package/src/components/Divider/Divider.types.ts +24 -24
- package/src/components/Dropdown/Dropdown.stories.tsx +552 -552
- package/src/components/Dropdown/Dropdown.tsx +422 -422
- package/src/components/Dropdown/Dropdown.types.ts +146 -146
- package/src/components/Dropdown/README.md +266 -266
- package/src/components/Dropdown/icons.tsx +72 -72
- package/src/components/Dropdown/index.ts +8 -8
- package/src/components/Input/Input.stories.tsx +583 -583
- package/src/components/Input/Input.tsx +204 -204
- package/src/components/Input/Input.types.ts +80 -80
- package/src/components/Input/icons.tsx +145 -145
- package/src/components/Input/index.ts +2 -2
- package/src/components/LoginView/LoginView.stories.tsx +148 -148
- package/src/components/LoginView/LoginView.tsx +426 -426
- package/src/components/LoginView/LoginView.types.ts +52 -52
- package/src/components/LoginView/README.md +396 -396
- package/src/components/LoginView/icons.tsx +85 -85
- package/src/components/LoginView/index.ts +3 -3
- package/src/components/Navbar/Navbar.stories.tsx +810 -810
- package/src/components/Navbar/Navbar.tsx +755 -755
- package/src/components/Navbar/Navbar.types.ts +219 -219
- package/src/components/Navbar/README.md +279 -279
- package/src/components/Navbar/icons.tsx +102 -102
- package/src/components/Navbar/index.ts +8 -8
- package/src/components/NavigationBar/NavigationBar.stories.tsx +406 -406
- package/src/components/NavigationBar/NavigationBar.tsx +246 -246
- package/src/components/NavigationBar/NavigationBar.types.ts +74 -74
- package/src/components/NavigationBar/README.md +469 -469
- package/src/components/NavigationBar/index.ts +2 -2
- package/src/components/NavigationRail/NavigationRail.stories.tsx +417 -417
- package/src/components/NavigationRail/NavigationRail.tsx +418 -418
- package/src/components/NavigationRail/NavigationRail.types.ts +109 -109
- package/src/components/NavigationRail/README.md +224 -224
- package/src/components/NavigationRail/index.ts +2 -2
- package/src/components/Notification/Notification.stories.tsx +513 -513
- package/src/components/Notification/Notification.tsx +145 -145
- package/src/components/Notification/Notification.types.ts +142 -142
- package/src/components/Notification/README.md +409 -409
- package/src/components/Notification/index.ts +3 -3
- package/src/components/POSConvention/POSConvention.stories.tsx +235 -235
- package/src/components/POSConvention/POSConvention.tsx +129 -129
- package/src/components/POSConvention/POSConvention.types.ts +38 -38
- package/src/components/POSConvention/README.md +123 -123
- package/src/components/POSConvention/icons.tsx +45 -45
- package/src/components/POSConvention/index.ts +3 -3
- package/src/components/POSLocationButton/POSLocationButton.stories.tsx +531 -531
- package/src/components/POSLocationButton/POSLocationButton.tsx +247 -247
- package/src/components/POSLocationButton/POSLocationButton.types.ts +87 -87
- package/src/components/POSLocationButton/README.md +253 -253
- package/src/components/POSLocationButton/icons.tsx +120 -120
- package/src/components/POSLocationButton/index.ts +14 -14
- package/src/components/POSNumberButton/POSNumberButton.stories.tsx +415 -415
- package/src/components/POSNumberButton/POSNumberButton.tsx +179 -179
- package/src/components/POSNumberButton/POSNumberButton.types.ts +51 -51
- package/src/components/POSNumberButton/README.md +321 -321
- package/src/components/POSNumberButton/index.ts +3 -3
- package/src/components/POSProductButton/POSProductButton.stories.tsx +318 -318
- package/src/components/POSProductButton/POSProductButton.tsx +152 -152
- package/src/components/POSProductButton/POSProductButton.types.ts +46 -46
- package/src/components/POSProductButton/README.md +269 -269
- package/src/components/POSProductButton/index.ts +2 -2
- package/src/components/POSProductCard/POSProductCard.stories.tsx +642 -642
- package/src/components/POSProductCard/POSProductCard.tsx +208 -208
- package/src/components/POSProductCard/POSProductCard.types.ts +76 -76
- package/src/components/POSProductCard/README.md +179 -179
- package/src/components/POSProductCard/icons.tsx +26 -26
- package/src/components/POSProductCard/index.ts +2 -2
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +753 -753
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +332 -332
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +119 -119
- package/src/components/POSProductSidebarItems/README.md +198 -198
- package/src/components/POSProductSidebarItems/icons.tsx +21 -21
- package/src/components/POSProductSidebarItems/index.ts +3 -3
- package/src/components/POSTable/POSTable.stories.tsx +737 -737
- package/src/components/POSTable/POSTable.tsx +401 -401
- package/src/components/POSTable/POSTable.types.ts +83 -83
- package/src/components/POSTable/README.md +286 -286
- package/src/components/POSTable/index.ts +7 -7
- package/src/components/Pagination/Pagination.stories.tsx +555 -555
- package/src/components/Pagination/Pagination.tsx +286 -286
- package/src/components/Pagination/Pagination.types.ts +93 -93
- package/src/components/Pagination/README.md +298 -298
- package/src/components/Pagination/icons.tsx +47 -47
- package/src/components/Pagination/index.ts +3 -3
- package/src/components/Quantity/Quantity.stories.tsx +457 -457
- package/src/components/Quantity/Quantity.tsx +289 -289
- package/src/components/Quantity/Quantity.types.ts +70 -70
- package/src/components/Radio/Radio.stories.tsx +523 -523
- package/src/components/Radio/Radio.tsx +170 -170
- package/src/components/Radio/Radio.types.ts +122 -122
- package/src/components/Select/README.md +299 -299
- package/src/components/Select/Select.stories.tsx +673 -705
- package/src/components/Select/Select.tsx +454 -457
- package/src/components/Select/Select.types.ts +148 -148
- package/src/components/Select/icons.tsx +50 -25
- package/src/components/Select/index.ts +3 -3
- package/src/components/SignUpView/SignUpView.stories.tsx +129 -129
- package/src/components/SignUpView/SignUpView.tsx +503 -503
- package/src/components/SignUpView/SignUpView.types.ts +58 -58
- package/src/components/SignUpView/icons.tsx +71 -71
- package/src/components/SignUpView/index.ts +3 -3
- package/src/components/Switch/README.md +112 -112
- package/src/components/Switch/Switch.stories.tsx +550 -550
- package/src/components/Switch/Switch.tsx +246 -246
- package/src/components/Switch/Switch.types.ts +67 -67
- package/src/components/Table/README.md +369 -369
- package/src/components/Table/Table.stories.tsx +805 -805
- package/src/components/Table/Table.tsx +688 -688
- package/src/components/Table/Table.types.ts +204 -204
- package/src/components/Table/index.ts +9 -9
- package/src/components/Tabs/README.md +201 -201
- package/src/components/Tabs/Tabs.stories.tsx +580 -580
- package/src/components/Tabs/Tabs.tsx +356 -356
- package/src/components/Tabs/Tabs.types.ts +127 -127
- package/src/components/Tabs/icons.tsx +129 -129
- package/src/components/Tabs/index.ts +11 -11
- package/src/components/Textarea/Textarea.stories.tsx +535 -535
- package/src/components/Textarea/Textarea.tsx +188 -188
- package/src/components/Textarea/Textarea.types.ts +54 -54
- package/src/context/ThemeContext.tsx +99 -99
- package/src/context/index.ts +1 -1
- package/src/index.css +29 -29
- package/src/index.ts +39 -133
- package/src/main.tsx +10 -10
- package/src/views/ProductsView/ProductsView.stories.tsx +344 -344
- package/src/views/ProductsView/ProductsView.tsx +480 -480
- package/src/views/ProductsView/ProductsView.types.ts +238 -238
- package/src/views/ProductsView/README.md +312 -312
- package/src/views/ProductsView/icons.tsx +38 -38
- package/src/views/ProductsView/index.ts +8 -8
- package/src/views/RecoverPasswordView/README.md +269 -269
- package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +131 -131
- package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +376 -376
- package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +56 -56
- package/src/views/RecoverPasswordView/icons.tsx +17 -17
- package/src/views/RecoverPasswordView/index.ts +2 -2
- package/src/views/TableLayoutView/README.md +268 -268
- package/src/views/TableLayoutView/TableLayoutView.stories.tsx +235 -235
- package/src/views/TableLayoutView/TableLayoutView.tsx +461 -461
- package/src/views/TableLayoutView/TableLayoutView.types.ts +209 -209
- package/src/views/TableLayoutView/icons.tsx +113 -113
- package/src/views/TableLayoutView/index.ts +6 -6
- package/storybook/main.ts +19 -19
- package/storybook/preview.tsx +84 -84
- package/storybook/vitest.setup.ts +6 -6
- package/tailwind.config.js +128 -128
- package/claude/prompts/siesa-ui-kit.md +0 -28
- package/dist/ButtonTest.d.ts +0 -6
- package/dist/ButtonTest.d.ts.map +0 -1
- package/dist/components/Alert/Alert.d.ts +0 -23
- package/dist/components/Alert/Alert.d.ts.map +0 -1
- package/dist/components/Alert/Alert.types.d.ts +0 -46
- package/dist/components/Alert/Alert.types.d.ts.map +0 -1
- package/dist/components/Avatar/Avatar.d.ts +0 -41
- package/dist/components/Avatar/Avatar.d.ts.map +0 -1
- package/dist/components/Avatar/Avatar.types.d.ts +0 -46
- package/dist/components/Avatar/Avatar.types.d.ts.map +0 -1
- package/dist/components/Badge/Badge.d.ts +0 -42
- package/dist/components/Badge/Badge.d.ts.map +0 -1
- package/dist/components/Badge/Badge.types.d.ts +0 -32
- package/dist/components/Badge/Badge.types.d.ts.map +0 -1
- package/dist/components/Button/Button.d.ts +0 -84
- package/dist/components/Button/Button.d.ts.map +0 -1
- package/dist/components/Button/Button.types.d.ts +0 -162
- package/dist/components/Button/Button.types.d.ts.map +0 -1
- package/dist/components/Button/icons.d.ts +0 -27
- package/dist/components/Button/icons.d.ts.map +0 -1
- package/dist/components/Button/index.d.ts +0 -4
- package/dist/components/Button/index.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.d.ts +0 -31
- package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.types.d.ts +0 -53
- package/dist/components/Checkbox/Checkbox.types.d.ts.map +0 -1
- package/dist/components/DescriptionList/DescriptionList.d.ts +0 -38
- package/dist/components/DescriptionList/DescriptionList.d.ts.map +0 -1
- package/dist/components/DescriptionList/DescriptionList.types.d.ts +0 -27
- package/dist/components/DescriptionList/DescriptionList.types.d.ts.map +0 -1
- package/dist/components/Divider/Divider.d.ts +0 -33
- package/dist/components/Divider/Divider.d.ts.map +0 -1
- package/dist/components/Divider/Divider.types.d.ts +0 -22
- package/dist/components/Divider/Divider.types.d.ts.map +0 -1
- package/dist/components/Dropdown/Dropdown.d.ts +0 -66
- package/dist/components/Dropdown/Dropdown.d.ts.map +0 -1
- package/dist/components/Dropdown/Dropdown.types.d.ts +0 -124
- package/dist/components/Dropdown/Dropdown.types.d.ts.map +0 -1
- package/dist/components/Dropdown/icons.d.ts +0 -10
- package/dist/components/Dropdown/icons.d.ts.map +0 -1
- package/dist/components/Dropdown/index.d.ts +0 -4
- package/dist/components/Dropdown/index.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts +0 -101
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts +0 -116
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/icons.d.ts +0 -19
- package/dist/components/DropdownItemCollapsible/icons.d.ts.map +0 -1
- package/dist/components/DropdownItemCollapsible/index.d.ts +0 -9
- package/dist/components/DropdownItemCollapsible/index.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts +0 -75
- package/dist/components/DropdownItemHeading/DropdownItemHeading.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts +0 -85
- package/dist/components/DropdownItemHeading/DropdownItemHeading.types.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/icons.d.ts +0 -48
- package/dist/components/DropdownItemHeading/icons.d.ts.map +0 -1
- package/dist/components/DropdownItemHeading/index.d.ts +0 -4
- package/dist/components/DropdownItemHeading/index.d.ts.map +0 -1
- package/dist/components/Input/Input.d.ts +0 -40
- package/dist/components/Input/Input.d.ts.map +0 -1
- package/dist/components/Input/Input.types.d.ts +0 -71
- package/dist/components/Input/Input.types.d.ts.map +0 -1
- package/dist/components/Input/icons.d.ts +0 -15
- package/dist/components/Input/icons.d.ts.map +0 -1
- package/dist/components/Input/index.d.ts +0 -3
- package/dist/components/Input/index.d.ts.map +0 -1
- package/dist/components/LoginView/LoginView.d.ts +0 -36
- package/dist/components/LoginView/LoginView.d.ts.map +0 -1
- package/dist/components/LoginView/LoginView.types.d.ts +0 -46
- package/dist/components/LoginView/LoginView.types.d.ts.map +0 -1
- package/dist/components/LoginView/icons.d.ts +0 -18
- package/dist/components/LoginView/icons.d.ts.map +0 -1
- package/dist/components/LoginView/index.d.ts +0 -4
- package/dist/components/LoginView/index.d.ts.map +0 -1
- package/dist/components/Navbar/Navbar.d.ts +0 -63
- package/dist/components/Navbar/Navbar.d.ts.map +0 -1
- package/dist/components/Navbar/Navbar.types.d.ts +0 -194
- package/dist/components/Navbar/Navbar.types.d.ts.map +0 -1
- package/dist/components/Navbar/icons.d.ts +0 -12
- package/dist/components/Navbar/icons.d.ts.map +0 -1
- package/dist/components/Navbar/index.d.ts +0 -4
- package/dist/components/Navbar/index.d.ts.map +0 -1
- package/dist/components/NavigationBar/NavigationBar.d.ts +0 -75
- package/dist/components/NavigationBar/NavigationBar.d.ts.map +0 -1
- package/dist/components/NavigationBar/NavigationBar.types.d.ts +0 -63
- package/dist/components/NavigationBar/NavigationBar.types.d.ts.map +0 -1
- package/dist/components/NavigationBar/index.d.ts +0 -3
- package/dist/components/NavigationBar/index.d.ts.map +0 -1
- package/dist/components/NavigationRail/NavigationRail.d.ts +0 -7
- package/dist/components/NavigationRail/NavigationRail.d.ts.map +0 -1
- package/dist/components/NavigationRail/NavigationRail.types.d.ts +0 -92
- package/dist/components/NavigationRail/NavigationRail.types.d.ts.map +0 -1
- package/dist/components/NavigationRail/index.d.ts +0 -3
- package/dist/components/NavigationRail/index.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts +0 -122
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts +0 -139
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/icons.d.ts +0 -33
- package/dist/components/NavigationRailCommercial/icons.d.ts.map +0 -1
- package/dist/components/NavigationRailCommercial/index.d.ts +0 -4
- package/dist/components/NavigationRailCommercial/index.d.ts.map +0 -1
- package/dist/components/NavigationRailItem/NavigationRailItem.d.ts +0 -90
- package/dist/components/NavigationRailItem/NavigationRailItem.d.ts.map +0 -1
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts +0 -162
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts.map +0 -1
- package/dist/components/NavigationRailItem/index.d.ts +0 -3
- package/dist/components/NavigationRailItem/index.d.ts.map +0 -1
- package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts +0 -124
- package/dist/components/NavigationRailPanel/NavigationRailPanel.d.ts.map +0 -1
- package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts +0 -154
- package/dist/components/NavigationRailPanel/NavigationRailPanel.types.d.ts.map +0 -1
- package/dist/components/NavigationRailPanel/index.d.ts +0 -3
- package/dist/components/NavigationRailPanel/index.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts +0 -99
- package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts +0 -152
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/icons.d.ts +0 -44
- package/dist/components/NavigationRailTypes/icons.d.ts.map +0 -1
- package/dist/components/NavigationRailTypes/index.d.ts +0 -4
- package/dist/components/NavigationRailTypes/index.d.ts.map +0 -1
- package/dist/components/Notification/Notification.d.ts +0 -52
- package/dist/components/Notification/Notification.d.ts.map +0 -1
- package/dist/components/Notification/Notification.types.d.ts +0 -138
- package/dist/components/Notification/Notification.types.d.ts.map +0 -1
- package/dist/components/Notification/index.d.ts +0 -3
- package/dist/components/Notification/index.d.ts.map +0 -1
- package/dist/components/POSConvention/POSConvention.d.ts +0 -55
- package/dist/components/POSConvention/POSConvention.d.ts.map +0 -1
- package/dist/components/POSConvention/POSConvention.types.d.ts +0 -37
- package/dist/components/POSConvention/POSConvention.types.d.ts.map +0 -1
- package/dist/components/POSConvention/icons.d.ts +0 -21
- package/dist/components/POSConvention/icons.d.ts.map +0 -1
- package/dist/components/POSConvention/index.d.ts +0 -4
- package/dist/components/POSConvention/index.d.ts.map +0 -1
- package/dist/components/POSLocationButton/POSLocationButton.d.ts +0 -73
- package/dist/components/POSLocationButton/POSLocationButton.d.ts.map +0 -1
- package/dist/components/POSLocationButton/POSLocationButton.types.d.ts +0 -75
- package/dist/components/POSLocationButton/POSLocationButton.types.d.ts.map +0 -1
- package/dist/components/POSLocationButton/icons.d.ts +0 -37
- package/dist/components/POSLocationButton/icons.d.ts.map +0 -1
- package/dist/components/POSLocationButton/index.d.ts +0 -4
- package/dist/components/POSLocationButton/index.d.ts.map +0 -1
- package/dist/components/POSNumberButton/POSNumberButton.d.ts +0 -61
- package/dist/components/POSNumberButton/POSNumberButton.d.ts.map +0 -1
- package/dist/components/POSNumberButton/POSNumberButton.types.d.ts +0 -43
- package/dist/components/POSNumberButton/POSNumberButton.types.d.ts.map +0 -1
- package/dist/components/POSNumberButton/index.d.ts +0 -3
- package/dist/components/POSNumberButton/index.d.ts.map +0 -1
- package/dist/components/POSProductButton/POSProductButton.d.ts +0 -59
- package/dist/components/POSProductButton/POSProductButton.d.ts.map +0 -1
- package/dist/components/POSProductButton/POSProductButton.types.d.ts +0 -40
- package/dist/components/POSProductButton/POSProductButton.types.d.ts.map +0 -1
- package/dist/components/POSProductButton/index.d.ts +0 -3
- package/dist/components/POSProductButton/index.d.ts.map +0 -1
- package/dist/components/POSProductCard/POSProductCard.d.ts +0 -68
- package/dist/components/POSProductCard/POSProductCard.d.ts.map +0 -1
- package/dist/components/POSProductCard/POSProductCard.types.d.ts +0 -67
- package/dist/components/POSProductCard/POSProductCard.types.d.ts.map +0 -1
- package/dist/components/POSProductCard/icons.d.ts +0 -10
- package/dist/components/POSProductCard/icons.d.ts.map +0 -1
- package/dist/components/POSProductCard/index.d.ts +0 -3
- package/dist/components/POSProductCard/index.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts +0 -57
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts +0 -85
- package/dist/components/POSProductSidebarItems/POSProductSidebarItems.types.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/icons.d.ts +0 -9
- package/dist/components/POSProductSidebarItems/icons.d.ts.map +0 -1
- package/dist/components/POSProductSidebarItems/index.d.ts +0 -4
- package/dist/components/POSProductSidebarItems/index.d.ts.map +0 -1
- package/dist/components/POSTable/POSTable.d.ts +0 -75
- package/dist/components/POSTable/POSTable.d.ts.map +0 -1
- package/dist/components/POSTable/POSTable.types.d.ts +0 -71
- package/dist/components/POSTable/POSTable.types.d.ts.map +0 -1
- package/dist/components/POSTable/index.d.ts +0 -3
- package/dist/components/POSTable/index.d.ts.map +0 -1
- package/dist/components/Pagination/Pagination.d.ts +0 -29
- package/dist/components/Pagination/Pagination.d.ts.map +0 -1
- package/dist/components/Pagination/Pagination.types.d.ts +0 -79
- package/dist/components/Pagination/Pagination.types.d.ts.map +0 -1
- package/dist/components/Pagination/icons.d.ts +0 -18
- package/dist/components/Pagination/icons.d.ts.map +0 -1
- package/dist/components/Pagination/index.d.ts +0 -4
- package/dist/components/Pagination/index.d.ts.map +0 -1
- package/dist/components/Quantity/Quantity.d.ts +0 -38
- package/dist/components/Quantity/Quantity.d.ts.map +0 -1
- package/dist/components/Quantity/Quantity.types.d.ts +0 -59
- package/dist/components/Quantity/Quantity.types.d.ts.map +0 -1
- package/dist/components/Radio/Radio.d.ts +0 -45
- package/dist/components/Radio/Radio.d.ts.map +0 -1
- package/dist/components/Radio/Radio.types.d.ts +0 -115
- package/dist/components/Radio/Radio.types.d.ts.map +0 -1
- package/dist/components/Select/Select.d.ts +0 -37
- package/dist/components/Select/Select.d.ts.map +0 -1
- package/dist/components/Select/Select.types.d.ts +0 -124
- package/dist/components/Select/Select.types.d.ts.map +0 -1
- package/dist/components/Select/icons.d.ts +0 -20
- package/dist/components/Select/icons.d.ts.map +0 -1
- package/dist/components/Select/index.d.ts +0 -4
- package/dist/components/Select/index.d.ts.map +0 -1
- package/dist/components/SignUpView/SignUpView.d.ts +0 -38
- package/dist/components/SignUpView/SignUpView.d.ts.map +0 -1
- package/dist/components/SignUpView/SignUpView.types.d.ts +0 -51
- package/dist/components/SignUpView/SignUpView.types.d.ts.map +0 -1
- package/dist/components/SignUpView/icons.d.ts +0 -18
- package/dist/components/SignUpView/icons.d.ts.map +0 -1
- package/dist/components/SignUpView/index.d.ts +0 -4
- package/dist/components/SignUpView/index.d.ts.map +0 -1
- package/dist/components/Switch/Switch.d.ts +0 -46
- package/dist/components/Switch/Switch.d.ts.map +0 -1
- package/dist/components/Switch/Switch.types.d.ts +0 -58
- package/dist/components/Switch/Switch.types.d.ts.map +0 -1
- package/dist/components/Table/Table.d.ts +0 -64
- package/dist/components/Table/Table.d.ts.map +0 -1
- package/dist/components/Table/Table.types.d.ts +0 -173
- package/dist/components/Table/Table.types.d.ts.map +0 -1
- package/dist/components/Table/index.d.ts +0 -3
- package/dist/components/Table/index.d.ts.map +0 -1
- package/dist/components/Tabs/Tabs.d.ts +0 -76
- package/dist/components/Tabs/Tabs.d.ts.map +0 -1
- package/dist/components/Tabs/Tabs.types.d.ts +0 -107
- package/dist/components/Tabs/Tabs.types.d.ts.map +0 -1
- package/dist/components/Tabs/icons.d.ts +0 -45
- package/dist/components/Tabs/icons.d.ts.map +0 -1
- package/dist/components/Tabs/index.d.ts +0 -4
- package/dist/components/Tabs/index.d.ts.map +0 -1
- package/dist/components/Textarea/Textarea.d.ts +0 -38
- package/dist/components/Textarea/Textarea.d.ts.map +0 -1
- package/dist/components/Textarea/Textarea.types.d.ts +0 -46
- package/dist/components/Textarea/Textarea.types.d.ts.map +0 -1
- package/dist/context/ThemeContext.d.ts +0 -46
- package/dist/context/ThemeContext.d.ts.map +0 -1
- package/dist/context/index.d.ts +0 -2
- package/dist/context/index.d.ts.map +0 -1
- package/dist/index.d.ts +0 -88
- package/dist/index.d.ts.map +0 -1
- package/dist/siesa-ui-kit.cjs +0 -1474
- package/dist/siesa-ui-kit.cjs.map +0 -1
- package/dist/siesa-ui-kit.mjs +0 -9580
- package/dist/siesa-ui-kit.mjs.map +0 -1
- package/dist/views/LayoutCommercial/LayoutCommercial.d.ts +0 -48
- package/dist/views/LayoutCommercial/LayoutCommercial.d.ts.map +0 -1
- package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts +0 -49
- package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts.map +0 -1
- package/dist/views/LayoutCommercial/index.d.ts +0 -3
- package/dist/views/LayoutCommercial/index.d.ts.map +0 -1
- package/dist/views/ListView/ListView.d.ts +0 -47
- package/dist/views/ListView/ListView.d.ts.map +0 -1
- package/dist/views/ListView/ListView.types.d.ts +0 -177
- package/dist/views/ListView/ListView.types.d.ts.map +0 -1
- package/dist/views/ListView/icons.d.ts +0 -60
- package/dist/views/ListView/icons.d.ts.map +0 -1
- package/dist/views/ListView/index.d.ts +0 -3
- package/dist/views/ListView/index.d.ts.map +0 -1
- package/dist/views/LoginView/LoginView.d.ts +0 -36
- package/dist/views/LoginView/LoginView.d.ts.map +0 -1
- package/dist/views/LoginView/LoginView.types.d.ts +0 -46
- package/dist/views/LoginView/LoginView.types.d.ts.map +0 -1
- package/dist/views/LoginView/icons.d.ts +0 -18
- package/dist/views/LoginView/icons.d.ts.map +0 -1
- package/dist/views/LoginView/index.d.ts +0 -4
- package/dist/views/LoginView/index.d.ts.map +0 -1
- package/dist/views/ProductsView/ProductsView.d.ts +0 -56
- package/dist/views/ProductsView/ProductsView.d.ts.map +0 -1
- package/dist/views/ProductsView/ProductsView.types.d.ts +0 -184
- package/dist/views/ProductsView/ProductsView.types.d.ts.map +0 -1
- package/dist/views/ProductsView/icons.d.ts +0 -12
- package/dist/views/ProductsView/icons.d.ts.map +0 -1
- package/dist/views/ProductsView/index.d.ts +0 -3
- package/dist/views/ProductsView/index.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts +0 -34
- package/dist/views/RecoverPasswordView/RecoverPasswordView.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts +0 -50
- package/dist/views/RecoverPasswordView/RecoverPasswordView.types.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/icons.d.ts +0 -9
- package/dist/views/RecoverPasswordView/icons.d.ts.map +0 -1
- package/dist/views/RecoverPasswordView/index.d.ts +0 -3
- package/dist/views/RecoverPasswordView/index.d.ts.map +0 -1
- package/dist/views/SignUpView/SignUpView.d.ts +0 -38
- package/dist/views/SignUpView/SignUpView.d.ts.map +0 -1
- package/dist/views/SignUpView/SignUpView.types.d.ts +0 -51
- package/dist/views/SignUpView/SignUpView.types.d.ts.map +0 -1
- package/dist/views/SignUpView/icons.d.ts +0 -18
- package/dist/views/SignUpView/icons.d.ts.map +0 -1
- package/dist/views/SignUpView/index.d.ts +0 -4
- package/dist/views/SignUpView/index.d.ts.map +0 -1
- package/dist/views/TableLayoutView/TableLayoutView.d.ts +0 -46
- package/dist/views/TableLayoutView/TableLayoutView.d.ts.map +0 -1
- package/dist/views/TableLayoutView/TableLayoutView.types.d.ts +0 -170
- package/dist/views/TableLayoutView/TableLayoutView.types.d.ts.map +0 -1
- package/dist/views/TableLayoutView/icons.d.ts +0 -27
- package/dist/views/TableLayoutView/icons.d.ts.map +0 -1
- package/dist/views/TableLayoutView/index.d.ts +0 -3
- package/dist/views/TableLayoutView/index.d.ts.map +0 -1
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +0 -317
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +0 -307
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +0 -136
- package/src/components/DropdownItemCollapsible/README.md +0 -264
- package/src/components/DropdownItemCollapsible/icons.tsx +0 -57
- package/src/components/DropdownItemCollapsible/index.ts +0 -12
- package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +0 -386
- package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +0 -216
- package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +0 -93
- package/src/components/DropdownItemHeading/README.md +0 -573
- package/src/components/DropdownItemHeading/icons.tsx +0 -125
- package/src/components/DropdownItemHeading/index.ts +0 -3
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.stories.tsx +0 -464
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.tsx +0 -301
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.types.ts +0 -162
- package/src/components/NavigationRailCommercial/README.md +0 -251
- package/src/components/NavigationRailCommercial/icons.tsx +0 -54
- package/src/components/NavigationRailCommercial/index.ts +0 -6
- package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +0 -667
- package/src/components/NavigationRailItem/NavigationRailItem.tsx +0 -314
- package/src/components/NavigationRailItem/NavigationRailItem.types.ts +0 -175
- package/src/components/NavigationRailItem/README.md +0 -476
- package/src/components/NavigationRailItem/index.ts +0 -2
- package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +0 -462
- package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +0 -332
- package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +0 -178
- package/src/components/NavigationRailPanel/README.md +0 -461
- package/src/components/NavigationRailPanel/index.ts +0 -6
- package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +0 -682
- package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +0 -363
- package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +0 -178
- package/src/components/NavigationRailTypes/README.md +0 -573
- package/src/components/NavigationRailTypes/icons.tsx +0 -76
- package/src/components/NavigationRailTypes/index.ts +0 -7
- package/src/views/LayoutCommercial/LayoutCommercial.stories.tsx +0 -374
- package/src/views/LayoutCommercial/LayoutCommercial.tsx +0 -125
- package/src/views/LayoutCommercial/LayoutCommercial.types.ts +0 -54
- package/src/views/LayoutCommercial/README.md +0 -286
- package/src/views/LayoutCommercial/index.ts +0 -2
- package/src/views/ListView/ListView.stories.tsx +0 -329
- package/src/views/ListView/ListView.tsx +0 -570
- package/src/views/ListView/ListView.types.ts +0 -211
- package/src/views/ListView/icons.tsx +0 -282
- package/src/views/ListView/index.ts +0 -11
- package/src/views/LoginView/LoginView.stories.tsx +0 -148
- package/src/views/LoginView/LoginView.tsx +0 -426
- package/src/views/LoginView/LoginView.types.ts +0 -52
- package/src/views/LoginView/README.md +0 -396
- package/src/views/LoginView/icons.tsx +0 -85
- package/src/views/LoginView/index.ts +0 -3
- package/src/views/SignUpView/SignUpView.stories.tsx +0 -129
- package/src/views/SignUpView/SignUpView.tsx +0 -503
- package/src/views/SignUpView/SignUpView.types.ts +0 -58
- package/src/views/SignUpView/icons.tsx +0 -71
- package/src/views/SignUpView/index.ts +0 -3
|
@@ -1,204 +1,204 @@
|
|
|
1
|
-
import React, { forwardRef, cloneElement } from 'react';
|
|
2
|
-
import type { InputProps } from './Input.types';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Input - Componente de campo de entrada del sistema de diseño Siesa
|
|
6
|
-
* Basado en especificaciones de Figma con Tailwind CSS
|
|
7
|
-
*
|
|
8
|
-
* Mejores prácticas implementadas:
|
|
9
|
-
* - Orden de modificadores: {responsive}:{dark}:{state}:{utility}
|
|
10
|
-
* - Dark mode con estrategia 'class' (darkMode: 'class')
|
|
11
|
-
* - Focus rings adaptativos para light y dark mode
|
|
12
|
-
* - Tokens de color consistentes con la documentación
|
|
13
|
-
* - Sombra base para inputs con focus
|
|
14
|
-
* - Estados hover, focus, disabled y error completos
|
|
15
|
-
* - Typography: Paragraph Regular para texto, Label Bold para labels
|
|
16
|
-
*
|
|
17
|
-
* Campo de entrada de texto con soporte para:
|
|
18
|
-
* - Estados: default, hover, focus, filled, disabled
|
|
19
|
-
* - Validación con mensajes de error
|
|
20
|
-
* - Iconos izquierdo y derecho
|
|
21
|
-
* - Label y helper text
|
|
22
|
-
* - Dark mode completo
|
|
23
|
-
* - Accesibilidad completa
|
|
24
|
-
*
|
|
25
|
-
* @see docs/colors.md - Sistema de colores
|
|
26
|
-
* @see docs/shadows.md - Sistema de sombras
|
|
27
|
-
* @see docs/typography.md - Sistema tipográfico (Paragraph, Label)
|
|
28
|
-
* @see docs/spacing.md - Sistema de espaciado
|
|
29
|
-
*
|
|
30
|
-
* @example
|
|
31
|
-
* ```tsx
|
|
32
|
-
* <Input
|
|
33
|
-
* label="Email"
|
|
34
|
-
* placeholder="tu@email.com"
|
|
35
|
-
* leftIcon={<EnvelopeIcon />}
|
|
36
|
-
* helperText="Ingresa tu correo electrónico"
|
|
37
|
-
* />
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
export const Input = forwardRef<HTMLInputElement, InputProps>(
|
|
41
|
-
(
|
|
42
|
-
{
|
|
43
|
-
label,
|
|
44
|
-
labelSecondary,
|
|
45
|
-
helperText,
|
|
46
|
-
error = false,
|
|
47
|
-
errorMessage,
|
|
48
|
-
leftIcon,
|
|
49
|
-
rightIcon,
|
|
50
|
-
fullWidth = false,
|
|
51
|
-
className = '',
|
|
52
|
-
disabled = false,
|
|
53
|
-
id,
|
|
54
|
-
...props
|
|
55
|
-
},
|
|
56
|
-
ref
|
|
57
|
-
) => {
|
|
58
|
-
// Generar ID único si no se proporciona
|
|
59
|
-
const inputId = id || `input-${Math.random().toString(36).substr(2, 9)}`;
|
|
60
|
-
|
|
61
|
-
// ===== CLASES BASE DEL INPUT =====
|
|
62
|
-
// Usando el sistema tipográfico Paragraph Regular (14px = text-sm)
|
|
63
|
-
// Border radius rounded-md (6px) consistente con Button
|
|
64
|
-
const baseInputClasses = `
|
|
65
|
-
w-full
|
|
66
|
-
px-3
|
|
67
|
-
py-1.5
|
|
68
|
-
text-sm
|
|
69
|
-
leading-6
|
|
70
|
-
font-normal
|
|
71
|
-
text-content-primary
|
|
72
|
-
bg-bg-primary
|
|
73
|
-
border
|
|
74
|
-
border-border-primary
|
|
75
|
-
rounded-md
|
|
76
|
-
outline-none
|
|
77
|
-
transition-all
|
|
78
|
-
duration-150
|
|
79
|
-
placeholder:text-content-tertiary
|
|
80
|
-
dark:bg-dark-bg-primary
|
|
81
|
-
dark:border-dark-border-primary
|
|
82
|
-
dark:text-dark-content-primary
|
|
83
|
-
dark:placeholder:text-dark-content-tertiary
|
|
84
|
-
`;
|
|
85
|
-
|
|
86
|
-
// ===== CLASES PARA ESTADOS INTERACTIVOS =====
|
|
87
|
-
// Orden de modificadores: {responsive}:{dark}:{state}:{utility}
|
|
88
|
-
// Focus rings adaptativos siguiendo el patrón de Button
|
|
89
|
-
const interactiveClasses = !disabled
|
|
90
|
-
? `
|
|
91
|
-
hover:border-primary-custom-600
|
|
92
|
-
focus:border-primary-custom-600
|
|
93
|
-
focus:ring-2
|
|
94
|
-
focus:ring-primary-custom-400
|
|
95
|
-
focus:ring-offset-2
|
|
96
|
-
dark:hover:border-dark-border-custom
|
|
97
|
-
dark:focus:border-dark-border-custom
|
|
98
|
-
dark:focus:ring-dark-border-custom
|
|
99
|
-
dark:focus:ring-offset-dark-bg-primary
|
|
100
|
-
`
|
|
101
|
-
: `
|
|
102
|
-
opacity-50
|
|
103
|
-
cursor-not-allowed
|
|
104
|
-
bg-bg-secondary
|
|
105
|
-
dark:bg-dark-bg-secondary
|
|
106
|
-
`;
|
|
107
|
-
|
|
108
|
-
// ===== CLASES PARA ESTADO DE ERROR =====
|
|
109
|
-
// Los colores de error son los mismos en light y dark mode
|
|
110
|
-
const errorClasses = error
|
|
111
|
-
? `
|
|
112
|
-
!border-error-border
|
|
113
|
-
focus:!ring-error-border/30
|
|
114
|
-
focus:!ring-offset-2
|
|
115
|
-
dark:!border-error-border
|
|
116
|
-
dark:focus:!ring-error-border/30
|
|
117
|
-
dark:focus:!ring-offset-dark-bg-primary
|
|
118
|
-
`
|
|
119
|
-
: '';
|
|
120
|
-
|
|
121
|
-
// ===== CLASES DEL CONTENEDOR =====
|
|
122
|
-
const containerClasses = fullWidth ? 'w-full' : 'w-[265px]';
|
|
123
|
-
|
|
124
|
-
// ===== RENDERIZAR ICONOS =====
|
|
125
|
-
// Clonar iconos con estilos apropiados y dark mode completo
|
|
126
|
-
const renderIcon = (icon: React.ReactElement | undefined) => {
|
|
127
|
-
if (!icon) return null;
|
|
128
|
-
const existingClassName = (icon.props as any).className || '';
|
|
129
|
-
return cloneElement(icon as React.ReactElement<any>, {
|
|
130
|
-
className: `w-4 h-4 text-content-tertiary dark:text-dark-content-tertiary ${existingClassName}`,
|
|
131
|
-
});
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
return (
|
|
135
|
-
<div className={`flex flex-col gap-2 ${containerClasses} ${className}`}>
|
|
136
|
-
{/* Label */}
|
|
137
|
-
{label && (
|
|
138
|
-
<label
|
|
139
|
-
htmlFor={inputId}
|
|
140
|
-
className="flex items-center w-full font-bold text-sm leading-5 text-content-primary dark:text-dark-content-primary"
|
|
141
|
-
>
|
|
142
|
-
<span className="flex-1">{label}</span>
|
|
143
|
-
{labelSecondary && (
|
|
144
|
-
<span className="text-xs leading-4 text-primary-custom-600 dark:text-primary-custom-600">
|
|
145
|
-
{labelSecondary}
|
|
146
|
-
</span>
|
|
147
|
-
)}
|
|
148
|
-
</label>
|
|
149
|
-
)}
|
|
150
|
-
|
|
151
|
-
{/* Input Container */}
|
|
152
|
-
<div className="relative flex items-center">
|
|
153
|
-
{/* Left Icon */}
|
|
154
|
-
{leftIcon && (
|
|
155
|
-
<div className="absolute left-3 pointer-events-none">
|
|
156
|
-
{renderIcon(leftIcon)}
|
|
157
|
-
</div>
|
|
158
|
-
)}
|
|
159
|
-
|
|
160
|
-
{/* Input Field */}
|
|
161
|
-
<input
|
|
162
|
-
ref={ref}
|
|
163
|
-
id={inputId}
|
|
164
|
-
disabled={disabled}
|
|
165
|
-
className={`
|
|
166
|
-
${baseInputClasses}
|
|
167
|
-
${interactiveClasses}
|
|
168
|
-
${errorClasses}
|
|
169
|
-
${leftIcon ? 'pl-9' : ''}
|
|
170
|
-
${rightIcon ? 'pr-9' : ''}
|
|
171
|
-
`.trim().replace(/\s+/g, ' ')}
|
|
172
|
-
{...props}
|
|
173
|
-
/>
|
|
174
|
-
|
|
175
|
-
{/* Right Icon */}
|
|
176
|
-
{rightIcon && (
|
|
177
|
-
<div className="absolute right-3 pointer-events-none">
|
|
178
|
-
{renderIcon(rightIcon)}
|
|
179
|
-
</div>
|
|
180
|
-
)}
|
|
181
|
-
</div>
|
|
182
|
-
|
|
183
|
-
{/* Helper Text or Error Message */}
|
|
184
|
-
{(helperText || errorMessage) && (
|
|
185
|
-
<p
|
|
186
|
-
className={`
|
|
187
|
-
text-xs
|
|
188
|
-
leading-5
|
|
189
|
-
${
|
|
190
|
-
error
|
|
191
|
-
? 'text-error-content dark:text-error-content'
|
|
192
|
-
: 'text-content-tertiary dark:text-dark-content-tertiary'
|
|
193
|
-
}
|
|
194
|
-
`.trim().replace(/\s+/g, ' ')}
|
|
195
|
-
>
|
|
196
|
-
{error && errorMessage ? errorMessage : helperText}
|
|
197
|
-
</p>
|
|
198
|
-
)}
|
|
199
|
-
</div>
|
|
200
|
-
);
|
|
201
|
-
}
|
|
202
|
-
);
|
|
203
|
-
|
|
204
|
-
Input.displayName = 'Input';
|
|
1
|
+
import React, { forwardRef, cloneElement } from 'react';
|
|
2
|
+
import type { InputProps } from './Input.types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Input - Componente de campo de entrada del sistema de diseño Siesa
|
|
6
|
+
* Basado en especificaciones de Figma con Tailwind CSS
|
|
7
|
+
*
|
|
8
|
+
* Mejores prácticas implementadas:
|
|
9
|
+
* - Orden de modificadores: {responsive}:{dark}:{state}:{utility}
|
|
10
|
+
* - Dark mode con estrategia 'class' (darkMode: 'class')
|
|
11
|
+
* - Focus rings adaptativos para light y dark mode
|
|
12
|
+
* - Tokens de color consistentes con la documentación
|
|
13
|
+
* - Sombra base para inputs con focus
|
|
14
|
+
* - Estados hover, focus, disabled y error completos
|
|
15
|
+
* - Typography: Paragraph Regular para texto, Label Bold para labels
|
|
16
|
+
*
|
|
17
|
+
* Campo de entrada de texto con soporte para:
|
|
18
|
+
* - Estados: default, hover, focus, filled, disabled
|
|
19
|
+
* - Validación con mensajes de error
|
|
20
|
+
* - Iconos izquierdo y derecho
|
|
21
|
+
* - Label y helper text
|
|
22
|
+
* - Dark mode completo
|
|
23
|
+
* - Accesibilidad completa
|
|
24
|
+
*
|
|
25
|
+
* @see docs/colors.md - Sistema de colores
|
|
26
|
+
* @see docs/shadows.md - Sistema de sombras
|
|
27
|
+
* @see docs/typography.md - Sistema tipográfico (Paragraph, Label)
|
|
28
|
+
* @see docs/spacing.md - Sistema de espaciado
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```tsx
|
|
32
|
+
* <Input
|
|
33
|
+
* label="Email"
|
|
34
|
+
* placeholder="tu@email.com"
|
|
35
|
+
* leftIcon={<EnvelopeIcon />}
|
|
36
|
+
* helperText="Ingresa tu correo electrónico"
|
|
37
|
+
* />
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export const Input = forwardRef<HTMLInputElement, InputProps>(
|
|
41
|
+
(
|
|
42
|
+
{
|
|
43
|
+
label,
|
|
44
|
+
labelSecondary,
|
|
45
|
+
helperText,
|
|
46
|
+
error = false,
|
|
47
|
+
errorMessage,
|
|
48
|
+
leftIcon,
|
|
49
|
+
rightIcon,
|
|
50
|
+
fullWidth = false,
|
|
51
|
+
className = '',
|
|
52
|
+
disabled = false,
|
|
53
|
+
id,
|
|
54
|
+
...props
|
|
55
|
+
},
|
|
56
|
+
ref
|
|
57
|
+
) => {
|
|
58
|
+
// Generar ID único si no se proporciona
|
|
59
|
+
const inputId = id || `input-${Math.random().toString(36).substr(2, 9)}`;
|
|
60
|
+
|
|
61
|
+
// ===== CLASES BASE DEL INPUT =====
|
|
62
|
+
// Usando el sistema tipográfico Paragraph Regular (14px = text-sm)
|
|
63
|
+
// Border radius rounded-md (6px) consistente con Button
|
|
64
|
+
const baseInputClasses = `
|
|
65
|
+
w-full
|
|
66
|
+
px-3
|
|
67
|
+
py-1.5
|
|
68
|
+
text-sm
|
|
69
|
+
leading-6
|
|
70
|
+
font-normal
|
|
71
|
+
text-content-primary
|
|
72
|
+
bg-bg-primary
|
|
73
|
+
border
|
|
74
|
+
border-border-primary
|
|
75
|
+
rounded-md
|
|
76
|
+
outline-none
|
|
77
|
+
transition-all
|
|
78
|
+
duration-150
|
|
79
|
+
placeholder:text-content-tertiary
|
|
80
|
+
dark:bg-dark-bg-primary
|
|
81
|
+
dark:border-dark-border-primary
|
|
82
|
+
dark:text-dark-content-primary
|
|
83
|
+
dark:placeholder:text-dark-content-tertiary
|
|
84
|
+
`;
|
|
85
|
+
|
|
86
|
+
// ===== CLASES PARA ESTADOS INTERACTIVOS =====
|
|
87
|
+
// Orden de modificadores: {responsive}:{dark}:{state}:{utility}
|
|
88
|
+
// Focus rings adaptativos siguiendo el patrón de Button
|
|
89
|
+
const interactiveClasses = !disabled
|
|
90
|
+
? `
|
|
91
|
+
hover:border-primary-custom-600
|
|
92
|
+
focus:border-primary-custom-600
|
|
93
|
+
focus:ring-2
|
|
94
|
+
focus:ring-primary-custom-400
|
|
95
|
+
focus:ring-offset-2
|
|
96
|
+
dark:hover:border-dark-border-custom
|
|
97
|
+
dark:focus:border-dark-border-custom
|
|
98
|
+
dark:focus:ring-dark-border-custom
|
|
99
|
+
dark:focus:ring-offset-dark-bg-primary
|
|
100
|
+
`
|
|
101
|
+
: `
|
|
102
|
+
opacity-50
|
|
103
|
+
cursor-not-allowed
|
|
104
|
+
bg-bg-secondary
|
|
105
|
+
dark:bg-dark-bg-secondary
|
|
106
|
+
`;
|
|
107
|
+
|
|
108
|
+
// ===== CLASES PARA ESTADO DE ERROR =====
|
|
109
|
+
// Los colores de error son los mismos en light y dark mode
|
|
110
|
+
const errorClasses = error
|
|
111
|
+
? `
|
|
112
|
+
!border-error-border
|
|
113
|
+
focus:!ring-error-border/30
|
|
114
|
+
focus:!ring-offset-2
|
|
115
|
+
dark:!border-error-border
|
|
116
|
+
dark:focus:!ring-error-border/30
|
|
117
|
+
dark:focus:!ring-offset-dark-bg-primary
|
|
118
|
+
`
|
|
119
|
+
: '';
|
|
120
|
+
|
|
121
|
+
// ===== CLASES DEL CONTENEDOR =====
|
|
122
|
+
const containerClasses = fullWidth ? 'w-full' : 'w-[265px]';
|
|
123
|
+
|
|
124
|
+
// ===== RENDERIZAR ICONOS =====
|
|
125
|
+
// Clonar iconos con estilos apropiados y dark mode completo
|
|
126
|
+
const renderIcon = (icon: React.ReactElement | undefined) => {
|
|
127
|
+
if (!icon) return null;
|
|
128
|
+
const existingClassName = (icon.props as any).className || '';
|
|
129
|
+
return cloneElement(icon as React.ReactElement<any>, {
|
|
130
|
+
className: `w-4 h-4 text-content-tertiary dark:text-dark-content-tertiary ${existingClassName}`,
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
return (
|
|
135
|
+
<div className={`flex flex-col gap-2 ${containerClasses} ${className}`}>
|
|
136
|
+
{/* Label */}
|
|
137
|
+
{label && (
|
|
138
|
+
<label
|
|
139
|
+
htmlFor={inputId}
|
|
140
|
+
className="flex items-center w-full font-bold text-sm leading-5 text-content-primary dark:text-dark-content-primary"
|
|
141
|
+
>
|
|
142
|
+
<span className="flex-1">{label}</span>
|
|
143
|
+
{labelSecondary && (
|
|
144
|
+
<span className="text-xs leading-4 text-primary-custom-600 dark:text-primary-custom-600">
|
|
145
|
+
{labelSecondary}
|
|
146
|
+
</span>
|
|
147
|
+
)}
|
|
148
|
+
</label>
|
|
149
|
+
)}
|
|
150
|
+
|
|
151
|
+
{/* Input Container */}
|
|
152
|
+
<div className="relative flex items-center">
|
|
153
|
+
{/* Left Icon */}
|
|
154
|
+
{leftIcon && (
|
|
155
|
+
<div className="absolute left-3 pointer-events-none">
|
|
156
|
+
{renderIcon(leftIcon)}
|
|
157
|
+
</div>
|
|
158
|
+
)}
|
|
159
|
+
|
|
160
|
+
{/* Input Field */}
|
|
161
|
+
<input
|
|
162
|
+
ref={ref}
|
|
163
|
+
id={inputId}
|
|
164
|
+
disabled={disabled}
|
|
165
|
+
className={`
|
|
166
|
+
${baseInputClasses}
|
|
167
|
+
${interactiveClasses}
|
|
168
|
+
${errorClasses}
|
|
169
|
+
${leftIcon ? 'pl-9' : ''}
|
|
170
|
+
${rightIcon ? 'pr-9' : ''}
|
|
171
|
+
`.trim().replace(/\s+/g, ' ')}
|
|
172
|
+
{...props}
|
|
173
|
+
/>
|
|
174
|
+
|
|
175
|
+
{/* Right Icon */}
|
|
176
|
+
{rightIcon && (
|
|
177
|
+
<div className="absolute right-3 pointer-events-none">
|
|
178
|
+
{renderIcon(rightIcon)}
|
|
179
|
+
</div>
|
|
180
|
+
)}
|
|
181
|
+
</div>
|
|
182
|
+
|
|
183
|
+
{/* Helper Text or Error Message */}
|
|
184
|
+
{(helperText || errorMessage) && (
|
|
185
|
+
<p
|
|
186
|
+
className={`
|
|
187
|
+
text-xs
|
|
188
|
+
leading-5
|
|
189
|
+
${
|
|
190
|
+
error
|
|
191
|
+
? 'text-error-content dark:text-error-content'
|
|
192
|
+
: 'text-content-tertiary dark:text-dark-content-tertiary'
|
|
193
|
+
}
|
|
194
|
+
`.trim().replace(/\s+/g, ' ')}
|
|
195
|
+
>
|
|
196
|
+
{error && errorMessage ? errorMessage : helperText}
|
|
197
|
+
</p>
|
|
198
|
+
)}
|
|
199
|
+
</div>
|
|
200
|
+
);
|
|
201
|
+
}
|
|
202
|
+
);
|
|
203
|
+
|
|
204
|
+
Input.displayName = 'Input';
|
|
@@ -1,80 +1,80 @@
|
|
|
1
|
-
import type { ReactElement, InputHTMLAttributes } from 'react';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Estados visuales del Input
|
|
5
|
-
* @description Tipo de referencia para documentar los estados posibles del Input.
|
|
6
|
-
* Los estados se manejan automáticamente mediante props (disabled) y pseudo-clases CSS (:hover, :focus)
|
|
7
|
-
*/
|
|
8
|
-
export type InputState = 'default' | 'hover' | 'focus' | 'filled' | 'disabled';
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Props del componente Input
|
|
12
|
-
*
|
|
13
|
-
* @see docs/colors.md - Sistema de colores
|
|
14
|
-
* @see docs/typography.md - Sistema tipográfico
|
|
15
|
-
* @see docs/spacing.md - Sistema de espaciado
|
|
16
|
-
* @see docs/shadows.md - Sistema de sombras
|
|
17
|
-
*/
|
|
18
|
-
export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
|
|
19
|
-
/**
|
|
20
|
-
* Etiqueta del campo de entrada
|
|
21
|
-
* @description Texto descriptivo que se muestra encima del input
|
|
22
|
-
* @example "Email", "Nombre completo", "Contraseña"
|
|
23
|
-
*/
|
|
24
|
-
label?: string;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Texto secundario junto al label (opcional)
|
|
28
|
-
* @description Se muestra alineado a la derecha del label, útil para indicar campos opcionales
|
|
29
|
-
* @example "Optional", "Opcional"
|
|
30
|
-
*/
|
|
31
|
-
labelSecondary?: string;
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Texto de ayuda debajo del input
|
|
35
|
-
* @description Proporciona información adicional o instrucciones para el usuario
|
|
36
|
-
* @example "Ingresa tu correo electrónico", "Mínimo 8 caracteres"
|
|
37
|
-
*/
|
|
38
|
-
helperText?: string;
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Indica si hay un error de validación
|
|
42
|
-
* @description Cambia el estilo del input para indicar error (borde rojo)
|
|
43
|
-
* @default false
|
|
44
|
-
*/
|
|
45
|
-
error?: boolean;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Mensaje de error a mostrar (reemplaza helperText cuando error=true)
|
|
49
|
-
* @description Se muestra en rojo debajo del input cuando hay un error
|
|
50
|
-
* @example "Este campo es requerido", "Formato de email inválido"
|
|
51
|
-
*/
|
|
52
|
-
errorMessage?: string;
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Icono a mostrar a la izquierda del input
|
|
56
|
-
* @description Ayuda a identificar el tipo de campo visualmente
|
|
57
|
-
* @example <EnvelopeIcon />, <UserIcon />, <LockClosedIcon />
|
|
58
|
-
*/
|
|
59
|
-
leftIcon?: ReactElement;
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Icono a mostrar a la derecha del input
|
|
63
|
-
* @description Útil para acciones como mostrar/ocultar contraseña o limpiar campo
|
|
64
|
-
* @example <EyeIcon />, <XMarkIcon />, <CheckIcon />
|
|
65
|
-
*/
|
|
66
|
-
rightIcon?: ReactElement;
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Si el input ocupa todo el ancho del contenedor
|
|
70
|
-
* @description Por defecto usa w-[265px], con fullWidth usa w-full
|
|
71
|
-
* @default false
|
|
72
|
-
*/
|
|
73
|
-
fullWidth?: boolean;
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Clases CSS adicionales para personalizar el componente
|
|
77
|
-
* @description Se aplican al contenedor principal del input
|
|
78
|
-
*/
|
|
79
|
-
className?: string;
|
|
80
|
-
}
|
|
1
|
+
import type { ReactElement, InputHTMLAttributes } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Estados visuales del Input
|
|
5
|
+
* @description Tipo de referencia para documentar los estados posibles del Input.
|
|
6
|
+
* Los estados se manejan automáticamente mediante props (disabled) y pseudo-clases CSS (:hover, :focus)
|
|
7
|
+
*/
|
|
8
|
+
export type InputState = 'default' | 'hover' | 'focus' | 'filled' | 'disabled';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Props del componente Input
|
|
12
|
+
*
|
|
13
|
+
* @see docs/colors.md - Sistema de colores
|
|
14
|
+
* @see docs/typography.md - Sistema tipográfico
|
|
15
|
+
* @see docs/spacing.md - Sistema de espaciado
|
|
16
|
+
* @see docs/shadows.md - Sistema de sombras
|
|
17
|
+
*/
|
|
18
|
+
export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
|
|
19
|
+
/**
|
|
20
|
+
* Etiqueta del campo de entrada
|
|
21
|
+
* @description Texto descriptivo que se muestra encima del input
|
|
22
|
+
* @example "Email", "Nombre completo", "Contraseña"
|
|
23
|
+
*/
|
|
24
|
+
label?: string;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Texto secundario junto al label (opcional)
|
|
28
|
+
* @description Se muestra alineado a la derecha del label, útil para indicar campos opcionales
|
|
29
|
+
* @example "Optional", "Opcional"
|
|
30
|
+
*/
|
|
31
|
+
labelSecondary?: string;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Texto de ayuda debajo del input
|
|
35
|
+
* @description Proporciona información adicional o instrucciones para el usuario
|
|
36
|
+
* @example "Ingresa tu correo electrónico", "Mínimo 8 caracteres"
|
|
37
|
+
*/
|
|
38
|
+
helperText?: string;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Indica si hay un error de validación
|
|
42
|
+
* @description Cambia el estilo del input para indicar error (borde rojo)
|
|
43
|
+
* @default false
|
|
44
|
+
*/
|
|
45
|
+
error?: boolean;
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Mensaje de error a mostrar (reemplaza helperText cuando error=true)
|
|
49
|
+
* @description Se muestra en rojo debajo del input cuando hay un error
|
|
50
|
+
* @example "Este campo es requerido", "Formato de email inválido"
|
|
51
|
+
*/
|
|
52
|
+
errorMessage?: string;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Icono a mostrar a la izquierda del input
|
|
56
|
+
* @description Ayuda a identificar el tipo de campo visualmente
|
|
57
|
+
* @example <EnvelopeIcon />, <UserIcon />, <LockClosedIcon />
|
|
58
|
+
*/
|
|
59
|
+
leftIcon?: ReactElement;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Icono a mostrar a la derecha del input
|
|
63
|
+
* @description Útil para acciones como mostrar/ocultar contraseña o limpiar campo
|
|
64
|
+
* @example <EyeIcon />, <XMarkIcon />, <CheckIcon />
|
|
65
|
+
*/
|
|
66
|
+
rightIcon?: ReactElement;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Si el input ocupa todo el ancho del contenedor
|
|
70
|
+
* @description Por defecto usa w-[265px], con fullWidth usa w-full
|
|
71
|
+
* @default false
|
|
72
|
+
*/
|
|
73
|
+
fullWidth?: boolean;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Clases CSS adicionales para personalizar el componente
|
|
77
|
+
* @description Se aplican al contenedor principal del input
|
|
78
|
+
*/
|
|
79
|
+
className?: string;
|
|
80
|
+
}
|