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,208 +1,208 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { POSProductCardProps } from './POSProductCard.types';
|
|
3
|
-
import { Button } from '../Button';
|
|
4
|
-
import { PlusIcon } from './icons';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Componente POSProductCard del sistema de diseño Siesa
|
|
8
|
-
*
|
|
9
|
-
* Card especializado para sistemas POS que muestra información de producto
|
|
10
|
-
* con imagen, nombre, precio y botón de agregar. Diseñado para catálogos
|
|
11
|
-
* de productos y selección rápida en punto de venta.
|
|
12
|
-
*
|
|
13
|
-
* **Estados disponibles:**
|
|
14
|
-
* - `enabled`: Estado normal
|
|
15
|
-
* - Light: fondo blanco (#ffffff), texto negro (#18181b)
|
|
16
|
-
* - Dark: fondo oscuro (#18181b), texto claro (#f4f4f5)
|
|
17
|
-
* - `active`: Estado seleccionado
|
|
18
|
-
* - Light: fondo azul claro (#dbeefe), texto azul (#0e79fd)
|
|
19
|
-
* - Dark: fondo azul oscuro (#112d57), texto celeste (#93d1fd)
|
|
20
|
-
* - `disabled`: Estado deshabilitado con opacidad reducida
|
|
21
|
-
*
|
|
22
|
-
* **Características:**
|
|
23
|
-
* - Imagen de producto con aspect ratio fijo y rounded-lg
|
|
24
|
-
* - Nombre del producto con tipografía Label Small (14px Bold)
|
|
25
|
-
* - Precio con tipografía Heading Small (24px Bold) y letter-spacing -2.5%
|
|
26
|
-
* - Botón "Agregar" reutiliza el componente Button del sistema
|
|
27
|
-
* - Soporte completo de dark mode pixel-perfect
|
|
28
|
-
* - Transiciones suaves
|
|
29
|
-
*
|
|
30
|
-
* **Mejores prácticas implementadas:**
|
|
31
|
-
* - Orden de modificadores: {responsive}:{dark}:{state}:{utility}
|
|
32
|
-
* - Dark mode con estrategia 'class' (darkMode: 'class')
|
|
33
|
-
* - Focus rings adaptativos para light y dark mode
|
|
34
|
-
* - Tokens de color consistentes con Figma
|
|
35
|
-
* - Estados hover y active completos
|
|
36
|
-
*
|
|
37
|
-
* @see docs/colors.md - Sistema de colores
|
|
38
|
-
* @see docs/typography.md - Sistema tipográfico
|
|
39
|
-
* @see docs/spacing.md - Sistema de espaciado
|
|
40
|
-
* @see docs/shadows.md - Sistema de sombras
|
|
41
|
-
* @see https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4368-31336 - Diseño Figma
|
|
42
|
-
*
|
|
43
|
-
* @example
|
|
44
|
-
* ```tsx
|
|
45
|
-
* // Card de producto normal
|
|
46
|
-
* <POSProductCard
|
|
47
|
-
* image="/images/caprese.jpg"
|
|
48
|
-
* productName="Ensalada Caprese"
|
|
49
|
-
* price="$ 40.000"
|
|
50
|
-
* onAddClick={() => console.log('Producto agregado')}
|
|
51
|
-
* />
|
|
52
|
-
*
|
|
53
|
-
* // Card de producto activo/seleccionado
|
|
54
|
-
* <POSProductCard
|
|
55
|
-
* image="/images/caprese.jpg"
|
|
56
|
-
* productName="Ensalada Caprese"
|
|
57
|
-
* price="$ 40.000"
|
|
58
|
-
* active={true}
|
|
59
|
-
* />
|
|
60
|
-
*
|
|
61
|
-
* // Card de producto deshabilitado
|
|
62
|
-
* <POSProductCard
|
|
63
|
-
* image="/images/caprese.jpg"
|
|
64
|
-
* productName="Ensalada Caprese"
|
|
65
|
-
* price="$ 40.000"
|
|
66
|
-
* disabled={true}
|
|
67
|
-
* />
|
|
68
|
-
* ```
|
|
69
|
-
*/
|
|
70
|
-
export const POSProductCard: React.FC<POSProductCardProps> = ({
|
|
71
|
-
image,
|
|
72
|
-
productName,
|
|
73
|
-
price,
|
|
74
|
-
buttonText = 'Agregar',
|
|
75
|
-
active = false,
|
|
76
|
-
disabled = false,
|
|
77
|
-
onAddClick,
|
|
78
|
-
onCardClick,
|
|
79
|
-
className = '',
|
|
80
|
-
ariaLabel,
|
|
81
|
-
}) => {
|
|
82
|
-
// ===== CLASES BASE DEL CARD =====
|
|
83
|
-
const baseClasses = `
|
|
84
|
-
flex
|
|
85
|
-
flex-col
|
|
86
|
-
gap-2
|
|
87
|
-
p-3
|
|
88
|
-
rounded-lg
|
|
89
|
-
w-[170px]
|
|
90
|
-
transition-all
|
|
91
|
-
duration-150
|
|
92
|
-
focus:outline-none
|
|
93
|
-
focus:ring-2
|
|
94
|
-
focus:ring-primary-custom-400
|
|
95
|
-
focus:ring-offset-2
|
|
96
|
-
dark:focus:ring-dark-border-custom
|
|
97
|
-
dark:focus:ring-offset-dark-bg-primary
|
|
98
|
-
`;
|
|
99
|
-
|
|
100
|
-
// ===== CLASES DE ESTADO DEL CARD =====
|
|
101
|
-
// Light: enabled=#ffffff, active=#dbeefe
|
|
102
|
-
// Dark: enabled=#18181b, active=#112d57
|
|
103
|
-
const stateClasses = disabled
|
|
104
|
-
? `
|
|
105
|
-
bg-white
|
|
106
|
-
opacity-55
|
|
107
|
-
cursor-not-allowed
|
|
108
|
-
dark:bg-dark-bg-primary
|
|
109
|
-
`
|
|
110
|
-
: active
|
|
111
|
-
? `
|
|
112
|
-
bg-primary-custom-100
|
|
113
|
-
cursor-pointer
|
|
114
|
-
dark:bg-dark-bg-custom
|
|
115
|
-
`
|
|
116
|
-
: `
|
|
117
|
-
bg-white
|
|
118
|
-
cursor-pointer
|
|
119
|
-
dark:bg-dark-bg-primary
|
|
120
|
-
`;
|
|
121
|
-
|
|
122
|
-
// ===== CLASES DE TEXTO SEGÚN ESTADO =====
|
|
123
|
-
// Light: enabled=#18181b, active=#0e79fd
|
|
124
|
-
// Dark: enabled=#f4f4f5, active=#93d1fd
|
|
125
|
-
const textClasses = disabled
|
|
126
|
-
? `
|
|
127
|
-
text-content-primary
|
|
128
|
-
dark:text-dark-content-primary
|
|
129
|
-
`
|
|
130
|
-
: active
|
|
131
|
-
? `
|
|
132
|
-
text-primary-custom-600
|
|
133
|
-
dark:text-dark-content-custom
|
|
134
|
-
`
|
|
135
|
-
: `
|
|
136
|
-
text-content-primary
|
|
137
|
-
dark:text-dark-content-primary
|
|
138
|
-
`;
|
|
139
|
-
|
|
140
|
-
// ===== COMBINAR CLASES DEL CARD =====
|
|
141
|
-
const cardClasses = [baseClasses, stateClasses, className]
|
|
142
|
-
.join(' ')
|
|
143
|
-
.replace(/\s+/g, ' ')
|
|
144
|
-
.trim();
|
|
145
|
-
|
|
146
|
-
// ===== HANDLER DEL CLICK EN EL CARD =====
|
|
147
|
-
const handleCardClick = (event: React.MouseEvent<HTMLDivElement>) => {
|
|
148
|
-
if (disabled) return;
|
|
149
|
-
// Solo propagar si no se hizo clic en el botón
|
|
150
|
-
if ((event.target as HTMLElement).closest('button')) return;
|
|
151
|
-
onCardClick?.(event);
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
// ===== HANDLER DEL CLICK EN EL BOTÓN =====
|
|
155
|
-
const handleButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
|
156
|
-
event.stopPropagation();
|
|
157
|
-
if (disabled) return;
|
|
158
|
-
onAddClick?.(event);
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
return (
|
|
162
|
-
<div
|
|
163
|
-
className={cardClasses}
|
|
164
|
-
onClick={handleCardClick}
|
|
165
|
-
role="article"
|
|
166
|
-
aria-label={ariaLabel || `${productName} - ${price}`}
|
|
167
|
-
tabIndex={disabled ? -1 : 0}
|
|
168
|
-
>
|
|
169
|
-
{/* Sección de información del producto */}
|
|
170
|
-
<div className="flex flex-col gap-3 w-full">
|
|
171
|
-
{/* Imagen del producto */}
|
|
172
|
-
<div className="h-[88px] w-full rounded-lg overflow-hidden">
|
|
173
|
-
<img
|
|
174
|
-
src={image}
|
|
175
|
-
alt={productName}
|
|
176
|
-
className="w-full h-full object-cover"
|
|
177
|
-
/>
|
|
178
|
-
</div>
|
|
179
|
-
|
|
180
|
-
{/* Datos del producto (nombre y precio) */}
|
|
181
|
-
<div className={`flex flex-col w-full font-bold ${textClasses}`.trim().replace(/\s+/g, ' ')}>
|
|
182
|
-
{/* Nombre del producto - Label Small (14px) */}
|
|
183
|
-
<div className="text-sm leading-5">
|
|
184
|
-
{productName}
|
|
185
|
-
</div>
|
|
186
|
-
|
|
187
|
-
{/* Precio - Heading Small (24px) con letter-spacing -2.5% (tracking-tighter) */}
|
|
188
|
-
<div className="text-2xl leading-8 tracking-tighter">
|
|
189
|
-
{price}
|
|
190
|
-
</div>
|
|
191
|
-
</div>
|
|
192
|
-
</div>
|
|
193
|
-
|
|
194
|
-
{/* Botón Agregar - Reutiliza el componente Button del sistema */}
|
|
195
|
-
<Button
|
|
196
|
-
type="default"
|
|
197
|
-
size="sm"
|
|
198
|
-
leftIcon={<PlusIcon className="w-4 h-4" />}
|
|
199
|
-
onClick={handleButtonClick}
|
|
200
|
-
disabled={disabled}
|
|
201
|
-
fullWidth
|
|
202
|
-
ariaLabel={`${buttonText} ${productName}`}
|
|
203
|
-
>
|
|
204
|
-
{buttonText}
|
|
205
|
-
</Button>
|
|
206
|
-
</div>
|
|
207
|
-
);
|
|
208
|
-
};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { POSProductCardProps } from './POSProductCard.types';
|
|
3
|
+
import { Button } from '../Button';
|
|
4
|
+
import { PlusIcon } from './icons';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Componente POSProductCard del sistema de diseño Siesa
|
|
8
|
+
*
|
|
9
|
+
* Card especializado para sistemas POS que muestra información de producto
|
|
10
|
+
* con imagen, nombre, precio y botón de agregar. Diseñado para catálogos
|
|
11
|
+
* de productos y selección rápida en punto de venta.
|
|
12
|
+
*
|
|
13
|
+
* **Estados disponibles:**
|
|
14
|
+
* - `enabled`: Estado normal
|
|
15
|
+
* - Light: fondo blanco (#ffffff), texto negro (#18181b)
|
|
16
|
+
* - Dark: fondo oscuro (#18181b), texto claro (#f4f4f5)
|
|
17
|
+
* - `active`: Estado seleccionado
|
|
18
|
+
* - Light: fondo azul claro (#dbeefe), texto azul (#0e79fd)
|
|
19
|
+
* - Dark: fondo azul oscuro (#112d57), texto celeste (#93d1fd)
|
|
20
|
+
* - `disabled`: Estado deshabilitado con opacidad reducida
|
|
21
|
+
*
|
|
22
|
+
* **Características:**
|
|
23
|
+
* - Imagen de producto con aspect ratio fijo y rounded-lg
|
|
24
|
+
* - Nombre del producto con tipografía Label Small (14px Bold)
|
|
25
|
+
* - Precio con tipografía Heading Small (24px Bold) y letter-spacing -2.5%
|
|
26
|
+
* - Botón "Agregar" reutiliza el componente Button del sistema
|
|
27
|
+
* - Soporte completo de dark mode pixel-perfect
|
|
28
|
+
* - Transiciones suaves
|
|
29
|
+
*
|
|
30
|
+
* **Mejores prácticas implementadas:**
|
|
31
|
+
* - Orden de modificadores: {responsive}:{dark}:{state}:{utility}
|
|
32
|
+
* - Dark mode con estrategia 'class' (darkMode: 'class')
|
|
33
|
+
* - Focus rings adaptativos para light y dark mode
|
|
34
|
+
* - Tokens de color consistentes con Figma
|
|
35
|
+
* - Estados hover y active completos
|
|
36
|
+
*
|
|
37
|
+
* @see docs/colors.md - Sistema de colores
|
|
38
|
+
* @see docs/typography.md - Sistema tipográfico
|
|
39
|
+
* @see docs/spacing.md - Sistema de espaciado
|
|
40
|
+
* @see docs/shadows.md - Sistema de sombras
|
|
41
|
+
* @see https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4368-31336 - Diseño Figma
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```tsx
|
|
45
|
+
* // Card de producto normal
|
|
46
|
+
* <POSProductCard
|
|
47
|
+
* image="/images/caprese.jpg"
|
|
48
|
+
* productName="Ensalada Caprese"
|
|
49
|
+
* price="$ 40.000"
|
|
50
|
+
* onAddClick={() => console.log('Producto agregado')}
|
|
51
|
+
* />
|
|
52
|
+
*
|
|
53
|
+
* // Card de producto activo/seleccionado
|
|
54
|
+
* <POSProductCard
|
|
55
|
+
* image="/images/caprese.jpg"
|
|
56
|
+
* productName="Ensalada Caprese"
|
|
57
|
+
* price="$ 40.000"
|
|
58
|
+
* active={true}
|
|
59
|
+
* />
|
|
60
|
+
*
|
|
61
|
+
* // Card de producto deshabilitado
|
|
62
|
+
* <POSProductCard
|
|
63
|
+
* image="/images/caprese.jpg"
|
|
64
|
+
* productName="Ensalada Caprese"
|
|
65
|
+
* price="$ 40.000"
|
|
66
|
+
* disabled={true}
|
|
67
|
+
* />
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export const POSProductCard: React.FC<POSProductCardProps> = ({
|
|
71
|
+
image,
|
|
72
|
+
productName,
|
|
73
|
+
price,
|
|
74
|
+
buttonText = 'Agregar',
|
|
75
|
+
active = false,
|
|
76
|
+
disabled = false,
|
|
77
|
+
onAddClick,
|
|
78
|
+
onCardClick,
|
|
79
|
+
className = '',
|
|
80
|
+
ariaLabel,
|
|
81
|
+
}) => {
|
|
82
|
+
// ===== CLASES BASE DEL CARD =====
|
|
83
|
+
const baseClasses = `
|
|
84
|
+
flex
|
|
85
|
+
flex-col
|
|
86
|
+
gap-2
|
|
87
|
+
p-3
|
|
88
|
+
rounded-lg
|
|
89
|
+
w-[170px]
|
|
90
|
+
transition-all
|
|
91
|
+
duration-150
|
|
92
|
+
focus:outline-none
|
|
93
|
+
focus:ring-2
|
|
94
|
+
focus:ring-primary-custom-400
|
|
95
|
+
focus:ring-offset-2
|
|
96
|
+
dark:focus:ring-dark-border-custom
|
|
97
|
+
dark:focus:ring-offset-dark-bg-primary
|
|
98
|
+
`;
|
|
99
|
+
|
|
100
|
+
// ===== CLASES DE ESTADO DEL CARD =====
|
|
101
|
+
// Light: enabled=#ffffff, active=#dbeefe
|
|
102
|
+
// Dark: enabled=#18181b, active=#112d57
|
|
103
|
+
const stateClasses = disabled
|
|
104
|
+
? `
|
|
105
|
+
bg-white
|
|
106
|
+
opacity-55
|
|
107
|
+
cursor-not-allowed
|
|
108
|
+
dark:bg-dark-bg-primary
|
|
109
|
+
`
|
|
110
|
+
: active
|
|
111
|
+
? `
|
|
112
|
+
bg-primary-custom-100
|
|
113
|
+
cursor-pointer
|
|
114
|
+
dark:bg-dark-bg-custom
|
|
115
|
+
`
|
|
116
|
+
: `
|
|
117
|
+
bg-white
|
|
118
|
+
cursor-pointer
|
|
119
|
+
dark:bg-dark-bg-primary
|
|
120
|
+
`;
|
|
121
|
+
|
|
122
|
+
// ===== CLASES DE TEXTO SEGÚN ESTADO =====
|
|
123
|
+
// Light: enabled=#18181b, active=#0e79fd
|
|
124
|
+
// Dark: enabled=#f4f4f5, active=#93d1fd
|
|
125
|
+
const textClasses = disabled
|
|
126
|
+
? `
|
|
127
|
+
text-content-primary
|
|
128
|
+
dark:text-dark-content-primary
|
|
129
|
+
`
|
|
130
|
+
: active
|
|
131
|
+
? `
|
|
132
|
+
text-primary-custom-600
|
|
133
|
+
dark:text-dark-content-custom
|
|
134
|
+
`
|
|
135
|
+
: `
|
|
136
|
+
text-content-primary
|
|
137
|
+
dark:text-dark-content-primary
|
|
138
|
+
`;
|
|
139
|
+
|
|
140
|
+
// ===== COMBINAR CLASES DEL CARD =====
|
|
141
|
+
const cardClasses = [baseClasses, stateClasses, className]
|
|
142
|
+
.join(' ')
|
|
143
|
+
.replace(/\s+/g, ' ')
|
|
144
|
+
.trim();
|
|
145
|
+
|
|
146
|
+
// ===== HANDLER DEL CLICK EN EL CARD =====
|
|
147
|
+
const handleCardClick = (event: React.MouseEvent<HTMLDivElement>) => {
|
|
148
|
+
if (disabled) return;
|
|
149
|
+
// Solo propagar si no se hizo clic en el botón
|
|
150
|
+
if ((event.target as HTMLElement).closest('button')) return;
|
|
151
|
+
onCardClick?.(event);
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
// ===== HANDLER DEL CLICK EN EL BOTÓN =====
|
|
155
|
+
const handleButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
|
156
|
+
event.stopPropagation();
|
|
157
|
+
if (disabled) return;
|
|
158
|
+
onAddClick?.(event);
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
return (
|
|
162
|
+
<div
|
|
163
|
+
className={cardClasses}
|
|
164
|
+
onClick={handleCardClick}
|
|
165
|
+
role="article"
|
|
166
|
+
aria-label={ariaLabel || `${productName} - ${price}`}
|
|
167
|
+
tabIndex={disabled ? -1 : 0}
|
|
168
|
+
>
|
|
169
|
+
{/* Sección de información del producto */}
|
|
170
|
+
<div className="flex flex-col gap-3 w-full">
|
|
171
|
+
{/* Imagen del producto */}
|
|
172
|
+
<div className="h-[88px] w-full rounded-lg overflow-hidden">
|
|
173
|
+
<img
|
|
174
|
+
src={image}
|
|
175
|
+
alt={productName}
|
|
176
|
+
className="w-full h-full object-cover"
|
|
177
|
+
/>
|
|
178
|
+
</div>
|
|
179
|
+
|
|
180
|
+
{/* Datos del producto (nombre y precio) */}
|
|
181
|
+
<div className={`flex flex-col w-full font-bold ${textClasses}`.trim().replace(/\s+/g, ' ')}>
|
|
182
|
+
{/* Nombre del producto - Label Small (14px) */}
|
|
183
|
+
<div className="text-sm leading-5">
|
|
184
|
+
{productName}
|
|
185
|
+
</div>
|
|
186
|
+
|
|
187
|
+
{/* Precio - Heading Small (24px) con letter-spacing -2.5% (tracking-tighter) */}
|
|
188
|
+
<div className="text-2xl leading-8 tracking-tighter">
|
|
189
|
+
{price}
|
|
190
|
+
</div>
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
|
|
194
|
+
{/* Botón Agregar - Reutiliza el componente Button del sistema */}
|
|
195
|
+
<Button
|
|
196
|
+
type="default"
|
|
197
|
+
size="sm"
|
|
198
|
+
leftIcon={<PlusIcon className="w-4 h-4" />}
|
|
199
|
+
onClick={handleButtonClick}
|
|
200
|
+
disabled={disabled}
|
|
201
|
+
fullWidth
|
|
202
|
+
ariaLabel={`${buttonText} ${productName}`}
|
|
203
|
+
>
|
|
204
|
+
{buttonText}
|
|
205
|
+
</Button>
|
|
206
|
+
</div>
|
|
207
|
+
);
|
|
208
|
+
};
|
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
import type { MouseEvent } from 'react';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Props del componente POSProductCard
|
|
5
|
-
*
|
|
6
|
-
* Card especializado para sistemas de punto de venta (POS) que muestra
|
|
7
|
-
* información de producto con imagen, nombre, precio y botón de agregar.
|
|
8
|
-
*
|
|
9
|
-
* El botón "Agregar" reutiliza el componente Button del sistema.
|
|
10
|
-
*
|
|
11
|
-
* @see docs/colors.md - Sistema de colores
|
|
12
|
-
* @see docs/typography.md - Sistema tipográfico
|
|
13
|
-
* @see docs/spacing.md - Sistema de espaciado
|
|
14
|
-
* @see docs/shadows.md - Sistema de sombras
|
|
15
|
-
* @see src/components/Button - Componente Button reutilizado
|
|
16
|
-
* @see https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4368-31336 - Diseño Figma
|
|
17
|
-
*/
|
|
18
|
-
export interface POSProductCardProps {
|
|
19
|
-
/**
|
|
20
|
-
* URL de la imagen del producto
|
|
21
|
-
* Se muestra en la parte superior del card con aspect-ratio fijo
|
|
22
|
-
*/
|
|
23
|
-
image: string;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Nombre del producto a mostrar
|
|
27
|
-
* Se muestra con tipografía Label Small (14px Bold)
|
|
28
|
-
*/
|
|
29
|
-
productName: string;
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Precio del producto formateado como string
|
|
33
|
-
* Se muestra con tipografía Heading Small (24px Bold)
|
|
34
|
-
* @example "$ 40.000"
|
|
35
|
-
*/
|
|
36
|
-
price: string;
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Texto del botón de acción
|
|
40
|
-
* @default "Agregar"
|
|
41
|
-
*/
|
|
42
|
-
buttonText?: string;
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Estado activo/seleccionado del card
|
|
46
|
-
* Cuando está activo, el fondo cambia a azul claro y el texto a azul
|
|
47
|
-
* @default false
|
|
48
|
-
*/
|
|
49
|
-
active?: boolean;
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Si el card está deshabilitado
|
|
53
|
-
* @default false
|
|
54
|
-
*/
|
|
55
|
-
disabled?: boolean;
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Handler para cuando se hace clic en el botón "Agregar"
|
|
59
|
-
*/
|
|
60
|
-
onAddClick?: (event: MouseEvent<HTMLButtonElement>) => void;
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Handler para cuando se hace clic en el card (no en el botón)
|
|
64
|
-
*/
|
|
65
|
-
onCardClick?: (event: MouseEvent<HTMLDivElement>) => void;
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Clases CSS adicionales para el card
|
|
69
|
-
*/
|
|
70
|
-
className?: string;
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Label de accesibilidad para el card
|
|
74
|
-
*/
|
|
75
|
-
ariaLabel?: string;
|
|
76
|
-
}
|
|
1
|
+
import type { MouseEvent } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Props del componente POSProductCard
|
|
5
|
+
*
|
|
6
|
+
* Card especializado para sistemas de punto de venta (POS) que muestra
|
|
7
|
+
* información de producto con imagen, nombre, precio y botón de agregar.
|
|
8
|
+
*
|
|
9
|
+
* El botón "Agregar" reutiliza el componente Button del sistema.
|
|
10
|
+
*
|
|
11
|
+
* @see docs/colors.md - Sistema de colores
|
|
12
|
+
* @see docs/typography.md - Sistema tipográfico
|
|
13
|
+
* @see docs/spacing.md - Sistema de espaciado
|
|
14
|
+
* @see docs/shadows.md - Sistema de sombras
|
|
15
|
+
* @see src/components/Button - Componente Button reutilizado
|
|
16
|
+
* @see https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4368-31336 - Diseño Figma
|
|
17
|
+
*/
|
|
18
|
+
export interface POSProductCardProps {
|
|
19
|
+
/**
|
|
20
|
+
* URL de la imagen del producto
|
|
21
|
+
* Se muestra en la parte superior del card con aspect-ratio fijo
|
|
22
|
+
*/
|
|
23
|
+
image: string;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Nombre del producto a mostrar
|
|
27
|
+
* Se muestra con tipografía Label Small (14px Bold)
|
|
28
|
+
*/
|
|
29
|
+
productName: string;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Precio del producto formateado como string
|
|
33
|
+
* Se muestra con tipografía Heading Small (24px Bold)
|
|
34
|
+
* @example "$ 40.000"
|
|
35
|
+
*/
|
|
36
|
+
price: string;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Texto del botón de acción
|
|
40
|
+
* @default "Agregar"
|
|
41
|
+
*/
|
|
42
|
+
buttonText?: string;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Estado activo/seleccionado del card
|
|
46
|
+
* Cuando está activo, el fondo cambia a azul claro y el texto a azul
|
|
47
|
+
* @default false
|
|
48
|
+
*/
|
|
49
|
+
active?: boolean;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Si el card está deshabilitado
|
|
53
|
+
* @default false
|
|
54
|
+
*/
|
|
55
|
+
disabled?: boolean;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Handler para cuando se hace clic en el botón "Agregar"
|
|
59
|
+
*/
|
|
60
|
+
onAddClick?: (event: MouseEvent<HTMLButtonElement>) => void;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Handler para cuando se hace clic en el card (no en el botón)
|
|
64
|
+
*/
|
|
65
|
+
onCardClick?: (event: MouseEvent<HTMLDivElement>) => void;
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Clases CSS adicionales para el card
|
|
69
|
+
*/
|
|
70
|
+
className?: string;
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Label de accesibilidad para el card
|
|
74
|
+
*/
|
|
75
|
+
ariaLabel?: string;
|
|
76
|
+
}
|