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,299 +1,299 @@
|
|
|
1
|
-
# Select Component
|
|
2
|
-
|
|
3
|
-
Componente Select (dropdown) del sistema de diseño Siesa con soporte completo de dark mode, estados interactivos y accesibilidad.
|
|
4
|
-
|
|
5
|
-
## Características
|
|
6
|
-
|
|
7
|
-
- ✓ Soporte completo de dark mode
|
|
8
|
-
- ✓ Keyboard navigation (Arrow keys, Enter, Escape)
|
|
9
|
-
- ✓ Click outside para cerrar el menú
|
|
10
|
-
- ✓ TypeScript con types estrictos
|
|
11
|
-
- ✓ Accesibilidad con ARIA labels
|
|
12
|
-
- ✓ Estados: Default, Hover, Focus, Disabled, Error
|
|
13
|
-
- ✓ Transiciones suaves
|
|
14
|
-
- ✓ Opciones deshabilitadas individuales
|
|
15
|
-
- ✓ Label y descripción configurables
|
|
16
|
-
- ✓ Menu header opcional
|
|
17
|
-
- ✓ Full width opcional
|
|
18
|
-
- ✓ Posición del menú configurable (top/bottom)
|
|
19
|
-
|
|
20
|
-
## Instalación
|
|
21
|
-
|
|
22
|
-
```tsx
|
|
23
|
-
import { Select } from '@/components/Select';
|
|
24
|
-
import type { SelectOption } from '@/components/Select';
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Uso Básico
|
|
28
|
-
|
|
29
|
-
```tsx
|
|
30
|
-
import { Select } from '@/components/Select';
|
|
31
|
-
import { useState } from 'react';
|
|
32
|
-
|
|
33
|
-
function MyComponent() {
|
|
34
|
-
const [value, setValue] = useState<string | number>('');
|
|
35
|
-
|
|
36
|
-
const options = [
|
|
37
|
-
{ value: '1', label: 'Opción 1' },
|
|
38
|
-
{ value: '2', label: 'Opción 2' },
|
|
39
|
-
{ value: '3', label: 'Opción 3' },
|
|
40
|
-
];
|
|
41
|
-
|
|
42
|
-
return (
|
|
43
|
-
<Select
|
|
44
|
-
options={options}
|
|
45
|
-
value={value}
|
|
46
|
-
onChange={setValue}
|
|
47
|
-
placeholder="Selecciona una opción"
|
|
48
|
-
label="Label"
|
|
49
|
-
description="Texto descriptivo opcional"
|
|
50
|
-
/>
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Props
|
|
56
|
-
|
|
57
|
-
| Prop | Type | Default | Descripción |
|
|
58
|
-
|------|------|---------|-------------|
|
|
59
|
-
| `options` | `SelectOption[]` | **required** | Array de opciones disponibles |
|
|
60
|
-
| `value` | `string \| number` | `undefined` | Valor seleccionado (controlado) |
|
|
61
|
-
| `defaultValue` | `string \| number` | `undefined` | Valor inicial (no controlado) |
|
|
62
|
-
| `placeholder` | `string` | `'Seleccionar...'` | Texto cuando no hay selección |
|
|
63
|
-
| `disabled` | `boolean` | `false` | Si el select está deshabilitado |
|
|
64
|
-
| `error` | `boolean` | `false` | Si muestra estado de error |
|
|
65
|
-
| `label` | `string` | `undefined` | Label del select |
|
|
66
|
-
| `description` | `string` | `undefined` | Texto descriptivo debajo del label (antes del trigger) |
|
|
67
|
-
| `showLabel` | `boolean` | `true` | Muestra el label |
|
|
68
|
-
| `showDescription` | `boolean` | `true` | Muestra la descripción |
|
|
69
|
-
| `menuHeader` | `string` | `undefined` | Header opcional al inicio del menú |
|
|
70
|
-
| `onChange` | `(value: string \| number) => void` | `undefined` | Handler de cambio |
|
|
71
|
-
| `className` | `string` | `''` | Clases CSS adicionales |
|
|
72
|
-
| `triggerClassName` | `string` | `''` | Clases para el trigger |
|
|
73
|
-
| `menuClassName` | `string` | `''` | Clases para el menú |
|
|
74
|
-
| `ariaLabel` | `string` | `undefined` | Label ARIA |
|
|
75
|
-
| `id` | `string` | `undefined` | ID para asociar con label |
|
|
76
|
-
| `name` | `string` | `undefined` | Nombre para formularios |
|
|
77
|
-
| `required` | `boolean` | `false` | Si es campo requerido |
|
|
78
|
-
| `menuPosition` | `'top' \| 'bottom'` | `'bottom'` | Posición del menú |
|
|
79
|
-
| `fullWidth` | `boolean` | `false` | Ancho completo |
|
|
80
|
-
|
|
81
|
-
### SelectOption
|
|
82
|
-
|
|
83
|
-
```tsx
|
|
84
|
-
interface SelectOption {
|
|
85
|
-
value: string | number;
|
|
86
|
-
label: string;
|
|
87
|
-
disabled?: boolean;
|
|
88
|
-
icon?: ReactNode;
|
|
89
|
-
}
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Ejemplos
|
|
93
|
-
|
|
94
|
-
### Con Label y Descripción
|
|
95
|
-
|
|
96
|
-
```tsx
|
|
97
|
-
<Select
|
|
98
|
-
options={options}
|
|
99
|
-
value={value}
|
|
100
|
-
onChange={setValue}
|
|
101
|
-
label="País"
|
|
102
|
-
description="Selecciona tu país de residencia"
|
|
103
|
-
placeholder="Selecciona un país"
|
|
104
|
-
/>
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Con Estado de Error
|
|
108
|
-
|
|
109
|
-
```tsx
|
|
110
|
-
<Select
|
|
111
|
-
options={options}
|
|
112
|
-
value={value}
|
|
113
|
-
onChange={setValue}
|
|
114
|
-
label="País"
|
|
115
|
-
error={!value && submitted}
|
|
116
|
-
description="El país es requerido"
|
|
117
|
-
required
|
|
118
|
-
/>
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### Con Opciones Deshabilitadas
|
|
122
|
-
|
|
123
|
-
```tsx
|
|
124
|
-
const options = [
|
|
125
|
-
{ value: 'active', label: 'Activo' },
|
|
126
|
-
{ value: 'pending', label: 'Pendiente' },
|
|
127
|
-
{ value: 'inactive', label: 'Inactivo', disabled: true },
|
|
128
|
-
];
|
|
129
|
-
|
|
130
|
-
<Select
|
|
131
|
-
options={options}
|
|
132
|
-
value={value}
|
|
133
|
-
onChange={setValue}
|
|
134
|
-
placeholder="Selecciona un estado"
|
|
135
|
-
/>
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### Full Width
|
|
139
|
-
|
|
140
|
-
```tsx
|
|
141
|
-
<Select
|
|
142
|
-
options={options}
|
|
143
|
-
value={value}
|
|
144
|
-
onChange={setValue}
|
|
145
|
-
fullWidth
|
|
146
|
-
/>
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
### Menú hacia Arriba
|
|
150
|
-
|
|
151
|
-
```tsx
|
|
152
|
-
<Select
|
|
153
|
-
options={options}
|
|
154
|
-
value={value}
|
|
155
|
-
onChange={setValue}
|
|
156
|
-
menuPosition="top"
|
|
157
|
-
/>
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
### En Formularios
|
|
161
|
-
|
|
162
|
-
```tsx
|
|
163
|
-
<form onSubmit={handleSubmit}>
|
|
164
|
-
<Select
|
|
165
|
-
options={countryOptions}
|
|
166
|
-
value={country}
|
|
167
|
-
onChange={setCountry}
|
|
168
|
-
label="País"
|
|
169
|
-
description="Selecciona tu país de residencia"
|
|
170
|
-
name="country"
|
|
171
|
-
required
|
|
172
|
-
fullWidth
|
|
173
|
-
/>
|
|
174
|
-
|
|
175
|
-
<button type="submit">Enviar</button>
|
|
176
|
-
</form>
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
## Estados
|
|
180
|
-
|
|
181
|
-
### Default
|
|
182
|
-
Estado normal del select, listo para interacción.
|
|
183
|
-
|
|
184
|
-
### Hover
|
|
185
|
-
Al pasar el mouse sobre el trigger, se muestra un overlay sutil.
|
|
186
|
-
|
|
187
|
-
### Focus
|
|
188
|
-
Al hacer foco en el select, muestra un focus ring con el color primario.
|
|
189
|
-
|
|
190
|
-
### Open
|
|
191
|
-
Cuando el menú está abierto, muestra las opciones disponibles.
|
|
192
|
-
|
|
193
|
-
### Disabled
|
|
194
|
-
El select no puede ser interactuado, con opacity reducida.
|
|
195
|
-
|
|
196
|
-
### Error
|
|
197
|
-
Muestra bordes y colores de error, con mensaje de error opcional.
|
|
198
|
-
|
|
199
|
-
## Navegación por Teclado
|
|
200
|
-
|
|
201
|
-
- **Click / Enter / Space**: Abrir/cerrar el menú
|
|
202
|
-
- **Arrow Down**: Navegar a la siguiente opción
|
|
203
|
-
- **Arrow Up**: Navegar a la opción anterior
|
|
204
|
-
- **Enter**: Seleccionar la opción enfocada
|
|
205
|
-
- **Escape**: Cerrar el menú
|
|
206
|
-
- **Tab**: Navegar fuera del select
|
|
207
|
-
|
|
208
|
-
## Accesibilidad
|
|
209
|
-
|
|
210
|
-
- ✓ Labels semánticos con `<label>` asociado
|
|
211
|
-
- ✓ ARIA roles (`listbox`, `option`)
|
|
212
|
-
- ✓ ARIA states (`aria-expanded`, `aria-selected`, `aria-disabled`)
|
|
213
|
-
- ✓ ARIA labels para screen readers
|
|
214
|
-
- ✓ Keyboard navigation completa
|
|
215
|
-
- ✓ Focus visible y claro
|
|
216
|
-
- ✓ Campos requeridos indicados con asterisco
|
|
217
|
-
|
|
218
|
-
## Dark Mode
|
|
219
|
-
|
|
220
|
-
El componente se adapta automáticamente al modo oscuro cuando la clase `dark` está presente en el elemento `<html>`.
|
|
221
|
-
|
|
222
|
-
```tsx
|
|
223
|
-
// Funciona automáticamente
|
|
224
|
-
<Select
|
|
225
|
-
options={options}
|
|
226
|
-
value={value}
|
|
227
|
-
onChange={setValue}
|
|
228
|
-
/>
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
Todos los colores, bordes y sombras se ajustan según el modo activo.
|
|
232
|
-
|
|
233
|
-
## Especificaciones de Figma
|
|
234
|
-
|
|
235
|
-
Este componente implementa las especificaciones del diseño de Figma (node-id: 4165-14710):
|
|
236
|
-
|
|
237
|
-
- **Trigger Button**: `px-3 py-2`, `rounded-lg`, `text-sm`, `gap-3`, `leading-5`
|
|
238
|
-
- **Menu**: `p-1`, `max-h-40` (160px), `border-0`, `mt-1` (4px spacing), `rounded-md`, `bg-background-secondary`
|
|
239
|
-
- **Menu Item**: `px-2 pr-2.5 py-0.5`, `text-[10px] leading-[12px]` (Label XXSmall), `font-bold`, `rounded-md`
|
|
240
|
-
- **Label/Description**: Van ANTES del trigger con `gap-1` (4px) entre ellos
|
|
241
|
-
- **Menu Header**: Opcional, `text-[10px] leading-[12px]`, color terciario
|
|
242
|
-
- **Hover overlay**: `rgba(0,0,0,0.024)` en light mode
|
|
243
|
-
|
|
244
|
-
## Mejores Prácticas
|
|
245
|
-
|
|
246
|
-
1. **Usa labels descriptivos**: Siempre incluye un label claro para el select
|
|
247
|
-
2. **Marca campos requeridos**: Usa `required` y muestra el asterisco
|
|
248
|
-
3. **Proporciona descripción**: Ayuda al usuario con la prop `description`
|
|
249
|
-
4. **Maneja errores**: Usa la prop `error` combinada con `description` para mostrar mensajes de error
|
|
250
|
-
5. **Opciones claras**: Usa labels descriptivos para las opciones
|
|
251
|
-
6. **Deshabilita opciones cuando sea necesario**: Usa `disabled: true` en opciones no disponibles
|
|
252
|
-
7. **Menu header**: Usa `menuHeader` para agrupar opciones cuando sea relevante
|
|
253
|
-
|
|
254
|
-
## Tokens del Sistema Utilizados
|
|
255
|
-
|
|
256
|
-
### Colores
|
|
257
|
-
- `bg-bg-primary` - Fondo del trigger (white)
|
|
258
|
-
- `border-border-primary` - Borde del trigger
|
|
259
|
-
- `text-content-primary` - Texto principal
|
|
260
|
-
- `text-content-secondary` - Texto del placeholder
|
|
261
|
-
- `bg-background-secondary` - Fondo del menú
|
|
262
|
-
- `bg-primary-custom-600` - Fondo del item seleccionado (hover)
|
|
263
|
-
- `text-primary-inverse-content` - Texto del item seleccionado
|
|
264
|
-
|
|
265
|
-
### Dark Mode
|
|
266
|
-
- `dark:bg-dark-bg-primary` - Fondo en dark mode
|
|
267
|
-
- `dark:border-dark-border-primary` - Borde en dark mode
|
|
268
|
-
- `dark:text-dark-content-primary` - Texto en dark mode
|
|
269
|
-
- `dark:focus:ring-dark-border-custom` - Focus ring en dark mode
|
|
270
|
-
|
|
271
|
-
### Tipografía
|
|
272
|
-
- `text-sm` - Paragraph Regular (14px) para el trigger, `leading-5` (20px line-height)
|
|
273
|
-
- `text-[10px] leading-[12px]` - Label XXSmall (10px) para los items del menu
|
|
274
|
-
- `font-bold` - Peso bold para labels e items
|
|
275
|
-
|
|
276
|
-
### Espaciado
|
|
277
|
-
- `px-3 py-2` - Padding del trigger (12px/8px)
|
|
278
|
-
- `gap-3` - Gap interno del trigger (12px)
|
|
279
|
-
- `p-1` - Padding del menú (4px)
|
|
280
|
-
- `gap-0.5` - Gap entre items (2px)
|
|
281
|
-
- `px-2 pr-2.5 py-0.5` - Padding de items (8px/10px/2px)
|
|
282
|
-
|
|
283
|
-
## Archivos del Componente
|
|
284
|
-
|
|
285
|
-
```
|
|
286
|
-
Select/
|
|
287
|
-
├── Select.tsx # Componente principal
|
|
288
|
-
├── Select.types.ts # TypeScript types
|
|
289
|
-
├── Select.stories.tsx # Storybook stories
|
|
290
|
-
├── icons.tsx # Iconos (ChevronUpDown, Check)
|
|
291
|
-
├── index.ts # Exports
|
|
292
|
-
└── README.md # Documentación
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
## Referencias
|
|
296
|
-
|
|
297
|
-
- **Figma**: [Select Component](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4165-14710)
|
|
298
|
-
- **Código**: `src/components/Select/Select.tsx`
|
|
299
|
-
- **Docs**: `docs/colors.md`, `docs/typography.md`, `docs/spacing.md`
|
|
1
|
+
# Select Component
|
|
2
|
+
|
|
3
|
+
Componente Select (dropdown) del sistema de diseño Siesa con soporte completo de dark mode, estados interactivos y accesibilidad.
|
|
4
|
+
|
|
5
|
+
## Características
|
|
6
|
+
|
|
7
|
+
- ✓ Soporte completo de dark mode
|
|
8
|
+
- ✓ Keyboard navigation (Arrow keys, Enter, Escape)
|
|
9
|
+
- ✓ Click outside para cerrar el menú
|
|
10
|
+
- ✓ TypeScript con types estrictos
|
|
11
|
+
- ✓ Accesibilidad con ARIA labels
|
|
12
|
+
- ✓ Estados: Default, Hover, Focus, Disabled, Error
|
|
13
|
+
- ✓ Transiciones suaves
|
|
14
|
+
- ✓ Opciones deshabilitadas individuales
|
|
15
|
+
- ✓ Label y descripción configurables
|
|
16
|
+
- ✓ Menu header opcional
|
|
17
|
+
- ✓ Full width opcional
|
|
18
|
+
- ✓ Posición del menú configurable (top/bottom)
|
|
19
|
+
|
|
20
|
+
## Instalación
|
|
21
|
+
|
|
22
|
+
```tsx
|
|
23
|
+
import { Select } from '@/components/Select';
|
|
24
|
+
import type { SelectOption } from '@/components/Select';
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Uso Básico
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
import { Select } from '@/components/Select';
|
|
31
|
+
import { useState } from 'react';
|
|
32
|
+
|
|
33
|
+
function MyComponent() {
|
|
34
|
+
const [value, setValue] = useState<string | number>('');
|
|
35
|
+
|
|
36
|
+
const options = [
|
|
37
|
+
{ value: '1', label: 'Opción 1' },
|
|
38
|
+
{ value: '2', label: 'Opción 2' },
|
|
39
|
+
{ value: '3', label: 'Opción 3' },
|
|
40
|
+
];
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<Select
|
|
44
|
+
options={options}
|
|
45
|
+
value={value}
|
|
46
|
+
onChange={setValue}
|
|
47
|
+
placeholder="Selecciona una opción"
|
|
48
|
+
label="Label"
|
|
49
|
+
description="Texto descriptivo opcional"
|
|
50
|
+
/>
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Props
|
|
56
|
+
|
|
57
|
+
| Prop | Type | Default | Descripción |
|
|
58
|
+
|------|------|---------|-------------|
|
|
59
|
+
| `options` | `SelectOption[]` | **required** | Array de opciones disponibles |
|
|
60
|
+
| `value` | `string \| number` | `undefined` | Valor seleccionado (controlado) |
|
|
61
|
+
| `defaultValue` | `string \| number` | `undefined` | Valor inicial (no controlado) |
|
|
62
|
+
| `placeholder` | `string` | `'Seleccionar...'` | Texto cuando no hay selección |
|
|
63
|
+
| `disabled` | `boolean` | `false` | Si el select está deshabilitado |
|
|
64
|
+
| `error` | `boolean` | `false` | Si muestra estado de error |
|
|
65
|
+
| `label` | `string` | `undefined` | Label del select |
|
|
66
|
+
| `description` | `string` | `undefined` | Texto descriptivo debajo del label (antes del trigger) |
|
|
67
|
+
| `showLabel` | `boolean` | `true` | Muestra el label |
|
|
68
|
+
| `showDescription` | `boolean` | `true` | Muestra la descripción |
|
|
69
|
+
| `menuHeader` | `string` | `undefined` | Header opcional al inicio del menú |
|
|
70
|
+
| `onChange` | `(value: string \| number) => void` | `undefined` | Handler de cambio |
|
|
71
|
+
| `className` | `string` | `''` | Clases CSS adicionales |
|
|
72
|
+
| `triggerClassName` | `string` | `''` | Clases para el trigger |
|
|
73
|
+
| `menuClassName` | `string` | `''` | Clases para el menú |
|
|
74
|
+
| `ariaLabel` | `string` | `undefined` | Label ARIA |
|
|
75
|
+
| `id` | `string` | `undefined` | ID para asociar con label |
|
|
76
|
+
| `name` | `string` | `undefined` | Nombre para formularios |
|
|
77
|
+
| `required` | `boolean` | `false` | Si es campo requerido |
|
|
78
|
+
| `menuPosition` | `'top' \| 'bottom'` | `'bottom'` | Posición del menú |
|
|
79
|
+
| `fullWidth` | `boolean` | `false` | Ancho completo |
|
|
80
|
+
|
|
81
|
+
### SelectOption
|
|
82
|
+
|
|
83
|
+
```tsx
|
|
84
|
+
interface SelectOption {
|
|
85
|
+
value: string | number;
|
|
86
|
+
label: string;
|
|
87
|
+
disabled?: boolean;
|
|
88
|
+
icon?: ReactNode;
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Ejemplos
|
|
93
|
+
|
|
94
|
+
### Con Label y Descripción
|
|
95
|
+
|
|
96
|
+
```tsx
|
|
97
|
+
<Select
|
|
98
|
+
options={options}
|
|
99
|
+
value={value}
|
|
100
|
+
onChange={setValue}
|
|
101
|
+
label="País"
|
|
102
|
+
description="Selecciona tu país de residencia"
|
|
103
|
+
placeholder="Selecciona un país"
|
|
104
|
+
/>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Con Estado de Error
|
|
108
|
+
|
|
109
|
+
```tsx
|
|
110
|
+
<Select
|
|
111
|
+
options={options}
|
|
112
|
+
value={value}
|
|
113
|
+
onChange={setValue}
|
|
114
|
+
label="País"
|
|
115
|
+
error={!value && submitted}
|
|
116
|
+
description="El país es requerido"
|
|
117
|
+
required
|
|
118
|
+
/>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Con Opciones Deshabilitadas
|
|
122
|
+
|
|
123
|
+
```tsx
|
|
124
|
+
const options = [
|
|
125
|
+
{ value: 'active', label: 'Activo' },
|
|
126
|
+
{ value: 'pending', label: 'Pendiente' },
|
|
127
|
+
{ value: 'inactive', label: 'Inactivo', disabled: true },
|
|
128
|
+
];
|
|
129
|
+
|
|
130
|
+
<Select
|
|
131
|
+
options={options}
|
|
132
|
+
value={value}
|
|
133
|
+
onChange={setValue}
|
|
134
|
+
placeholder="Selecciona un estado"
|
|
135
|
+
/>
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Full Width
|
|
139
|
+
|
|
140
|
+
```tsx
|
|
141
|
+
<Select
|
|
142
|
+
options={options}
|
|
143
|
+
value={value}
|
|
144
|
+
onChange={setValue}
|
|
145
|
+
fullWidth
|
|
146
|
+
/>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Menú hacia Arriba
|
|
150
|
+
|
|
151
|
+
```tsx
|
|
152
|
+
<Select
|
|
153
|
+
options={options}
|
|
154
|
+
value={value}
|
|
155
|
+
onChange={setValue}
|
|
156
|
+
menuPosition="top"
|
|
157
|
+
/>
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### En Formularios
|
|
161
|
+
|
|
162
|
+
```tsx
|
|
163
|
+
<form onSubmit={handleSubmit}>
|
|
164
|
+
<Select
|
|
165
|
+
options={countryOptions}
|
|
166
|
+
value={country}
|
|
167
|
+
onChange={setCountry}
|
|
168
|
+
label="País"
|
|
169
|
+
description="Selecciona tu país de residencia"
|
|
170
|
+
name="country"
|
|
171
|
+
required
|
|
172
|
+
fullWidth
|
|
173
|
+
/>
|
|
174
|
+
|
|
175
|
+
<button type="submit">Enviar</button>
|
|
176
|
+
</form>
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Estados
|
|
180
|
+
|
|
181
|
+
### Default
|
|
182
|
+
Estado normal del select, listo para interacción.
|
|
183
|
+
|
|
184
|
+
### Hover
|
|
185
|
+
Al pasar el mouse sobre el trigger, se muestra un overlay sutil.
|
|
186
|
+
|
|
187
|
+
### Focus
|
|
188
|
+
Al hacer foco en el select, muestra un focus ring con el color primario.
|
|
189
|
+
|
|
190
|
+
### Open
|
|
191
|
+
Cuando el menú está abierto, muestra las opciones disponibles.
|
|
192
|
+
|
|
193
|
+
### Disabled
|
|
194
|
+
El select no puede ser interactuado, con opacity reducida.
|
|
195
|
+
|
|
196
|
+
### Error
|
|
197
|
+
Muestra bordes y colores de error, con mensaje de error opcional.
|
|
198
|
+
|
|
199
|
+
## Navegación por Teclado
|
|
200
|
+
|
|
201
|
+
- **Click / Enter / Space**: Abrir/cerrar el menú
|
|
202
|
+
- **Arrow Down**: Navegar a la siguiente opción
|
|
203
|
+
- **Arrow Up**: Navegar a la opción anterior
|
|
204
|
+
- **Enter**: Seleccionar la opción enfocada
|
|
205
|
+
- **Escape**: Cerrar el menú
|
|
206
|
+
- **Tab**: Navegar fuera del select
|
|
207
|
+
|
|
208
|
+
## Accesibilidad
|
|
209
|
+
|
|
210
|
+
- ✓ Labels semánticos con `<label>` asociado
|
|
211
|
+
- ✓ ARIA roles (`listbox`, `option`)
|
|
212
|
+
- ✓ ARIA states (`aria-expanded`, `aria-selected`, `aria-disabled`)
|
|
213
|
+
- ✓ ARIA labels para screen readers
|
|
214
|
+
- ✓ Keyboard navigation completa
|
|
215
|
+
- ✓ Focus visible y claro
|
|
216
|
+
- ✓ Campos requeridos indicados con asterisco
|
|
217
|
+
|
|
218
|
+
## Dark Mode
|
|
219
|
+
|
|
220
|
+
El componente se adapta automáticamente al modo oscuro cuando la clase `dark` está presente en el elemento `<html>`.
|
|
221
|
+
|
|
222
|
+
```tsx
|
|
223
|
+
// Funciona automáticamente
|
|
224
|
+
<Select
|
|
225
|
+
options={options}
|
|
226
|
+
value={value}
|
|
227
|
+
onChange={setValue}
|
|
228
|
+
/>
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Todos los colores, bordes y sombras se ajustan según el modo activo.
|
|
232
|
+
|
|
233
|
+
## Especificaciones de Figma
|
|
234
|
+
|
|
235
|
+
Este componente implementa las especificaciones del diseño de Figma (node-id: 4165-14710):
|
|
236
|
+
|
|
237
|
+
- **Trigger Button**: `px-3 py-2`, `rounded-lg`, `text-sm`, `gap-3`, `leading-5`
|
|
238
|
+
- **Menu**: `p-1`, `max-h-40` (160px), `border-0`, `mt-1` (4px spacing), `rounded-md`, `bg-background-secondary`
|
|
239
|
+
- **Menu Item**: `px-2 pr-2.5 py-0.5`, `text-[10px] leading-[12px]` (Label XXSmall), `font-bold`, `rounded-md`
|
|
240
|
+
- **Label/Description**: Van ANTES del trigger con `gap-1` (4px) entre ellos
|
|
241
|
+
- **Menu Header**: Opcional, `text-[10px] leading-[12px]`, color terciario
|
|
242
|
+
- **Hover overlay**: `rgba(0,0,0,0.024)` en light mode
|
|
243
|
+
|
|
244
|
+
## Mejores Prácticas
|
|
245
|
+
|
|
246
|
+
1. **Usa labels descriptivos**: Siempre incluye un label claro para el select
|
|
247
|
+
2. **Marca campos requeridos**: Usa `required` y muestra el asterisco
|
|
248
|
+
3. **Proporciona descripción**: Ayuda al usuario con la prop `description`
|
|
249
|
+
4. **Maneja errores**: Usa la prop `error` combinada con `description` para mostrar mensajes de error
|
|
250
|
+
5. **Opciones claras**: Usa labels descriptivos para las opciones
|
|
251
|
+
6. **Deshabilita opciones cuando sea necesario**: Usa `disabled: true` en opciones no disponibles
|
|
252
|
+
7. **Menu header**: Usa `menuHeader` para agrupar opciones cuando sea relevante
|
|
253
|
+
|
|
254
|
+
## Tokens del Sistema Utilizados
|
|
255
|
+
|
|
256
|
+
### Colores
|
|
257
|
+
- `bg-bg-primary` - Fondo del trigger (white)
|
|
258
|
+
- `border-border-primary` - Borde del trigger
|
|
259
|
+
- `text-content-primary` - Texto principal
|
|
260
|
+
- `text-content-secondary` - Texto del placeholder
|
|
261
|
+
- `bg-background-secondary` - Fondo del menú
|
|
262
|
+
- `bg-primary-custom-600` - Fondo del item seleccionado (hover)
|
|
263
|
+
- `text-primary-inverse-content` - Texto del item seleccionado
|
|
264
|
+
|
|
265
|
+
### Dark Mode
|
|
266
|
+
- `dark:bg-dark-bg-primary` - Fondo en dark mode
|
|
267
|
+
- `dark:border-dark-border-primary` - Borde en dark mode
|
|
268
|
+
- `dark:text-dark-content-primary` - Texto en dark mode
|
|
269
|
+
- `dark:focus:ring-dark-border-custom` - Focus ring en dark mode
|
|
270
|
+
|
|
271
|
+
### Tipografía
|
|
272
|
+
- `text-sm` - Paragraph Regular (14px) para el trigger, `leading-5` (20px line-height)
|
|
273
|
+
- `text-[10px] leading-[12px]` - Label XXSmall (10px) para los items del menu
|
|
274
|
+
- `font-bold` - Peso bold para labels e items
|
|
275
|
+
|
|
276
|
+
### Espaciado
|
|
277
|
+
- `px-3 py-2` - Padding del trigger (12px/8px)
|
|
278
|
+
- `gap-3` - Gap interno del trigger (12px)
|
|
279
|
+
- `p-1` - Padding del menú (4px)
|
|
280
|
+
- `gap-0.5` - Gap entre items (2px)
|
|
281
|
+
- `px-2 pr-2.5 py-0.5` - Padding de items (8px/10px/2px)
|
|
282
|
+
|
|
283
|
+
## Archivos del Componente
|
|
284
|
+
|
|
285
|
+
```
|
|
286
|
+
Select/
|
|
287
|
+
├── Select.tsx # Componente principal
|
|
288
|
+
├── Select.types.ts # TypeScript types
|
|
289
|
+
├── Select.stories.tsx # Storybook stories
|
|
290
|
+
├── icons.tsx # Iconos (ChevronUpDown, Check)
|
|
291
|
+
├── index.ts # Exports
|
|
292
|
+
└── README.md # Documentación
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
## Referencias
|
|
296
|
+
|
|
297
|
+
- **Figma**: [Select Component](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4165-14710)
|
|
298
|
+
- **Código**: `src/components/Select/Select.tsx`
|
|
299
|
+
- **Docs**: `docs/colors.md`, `docs/typography.md`, `docs/spacing.md`
|