smarthr-ui 86.0.0 → 87.0.0

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.
Files changed (90) hide show
  1. package/lib/components/AppHeader/components/mobile/MenuDialog.js +2 -2
  2. package/lib/components/Icon/FaIcon.js +1 -1
  3. package/lib/components/Layout/Container/Container.cjs +7 -3
  4. package/lib/components/Layout/Container/Container.cjs.map +1 -1
  5. package/lib/components/Layout/Container/Container.js +7 -3
  6. package/lib/components/Layout/Container/Container.js.map +1 -1
  7. package/lib/components/SideMenu/SideMenuGroup.cjs +6 -7
  8. package/lib/components/SideMenu/SideMenuGroup.cjs.map +1 -1
  9. package/lib/components/SideMenu/SideMenuGroup.d.ts +6 -10
  10. package/lib/components/SideMenu/SideMenuGroup.js +6 -7
  11. package/lib/components/SideMenu/SideMenuGroup.js.map +1 -1
  12. package/lib/hooks/useMediaQueries/useMediaQueries.cjs +8 -6
  13. package/lib/hooks/useMediaQueries/useMediaQueries.cjs.map +1 -1
  14. package/lib/hooks/useMediaQueries/useMediaQueries.js +9 -7
  15. package/lib/hooks/useMediaQueries/useMediaQueries.js.map +1 -1
  16. package/lib/intl/useIntl.cjs +1 -1
  17. package/lib/intl/useIntl.cjs.map +1 -1
  18. package/lib/intl/useIntl.js +1 -1
  19. package/lib/intl/useIntl.js.map +1 -1
  20. package/lib/themes/createColor.js +1 -1
  21. package/lib/vendor/.pnpm/dayjs@1.11.18/vendor/dayjs/dayjs.min.cjs +1 -1
  22. package/lib/vendor/.pnpm/dayjs@1.11.18/vendor/dayjs/dayjs.min.js +1 -1
  23. package/lib/vendor/.pnpm/dayjs@1.11.18/vendor/dayjs/plugin/isBetween.cjs +1 -1
  24. package/lib/vendor/.pnpm/dayjs@1.11.18/vendor/dayjs/plugin/isBetween.js +1 -1
  25. package/lib/vendor/.pnpm/lodash.merge@4.6.2/vendor/lodash.merge/index.cjs +2 -2
  26. package/lib/vendor/.pnpm/lodash.merge@4.6.2/vendor/lodash.merge/index.cjs.map +1 -1
  27. package/lib/vendor/.pnpm/lodash.merge@4.6.2/vendor/lodash.merge/index.js +2 -2
  28. package/lib/vendor/.pnpm/lodash.merge@4.6.2/vendor/lodash.merge/index.js.map +1 -1
  29. package/lib/vendor/.pnpm/pdfjs-dist@4.8.69/vendor/pdfjs-dist/build/pdf.cjs +39 -75
  30. package/lib/vendor/.pnpm/pdfjs-dist@4.8.69/vendor/pdfjs-dist/build/pdf.cjs.map +1 -1
  31. package/lib/vendor/.pnpm/pdfjs-dist@4.8.69/vendor/pdfjs-dist/build/pdf.js +40 -40
  32. package/lib/vendor/.pnpm/pdfjs-dist@4.8.69/vendor/pdfjs-dist/build/pdf.js.map +1 -1
  33. package/lib/vendor/.pnpm/react-draggable@4.5.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/vendor/react-draggable/build/cjs/Draggable.cjs +5 -5
  34. package/lib/vendor/.pnpm/react-draggable@4.5.0_react-dom@19.2.4_react@19.2.4__react@19.2.4/vendor/react-draggable/build/cjs/Draggable.js +5 -5
  35. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/corePluginList.cjs +3 -3
  36. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/corePluginList.js +3 -3
  37. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/featureFlags.cjs +3 -3
  38. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/featureFlags.js +3 -3
  39. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/public/colors.cjs +3 -3
  40. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/public/colors.js +3 -3
  41. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/public/create-plugin.cjs +3 -3
  42. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/public/create-plugin.js +3 -3
  43. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/public/resolve-config.cjs +3 -3
  44. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/public/resolve-config.js +3 -3
  45. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/cloneDeep.cjs +3 -3
  46. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/cloneDeep.js +3 -3
  47. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/color.cjs +3 -3
  48. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/color.js +3 -3
  49. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/colorNames.cjs +3 -3
  50. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/colorNames.js +3 -3
  51. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/configurePlugins.cjs +3 -3
  52. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/configurePlugins.js +3 -3
  53. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/createPlugin.cjs +3 -3
  54. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/createPlugin.js +3 -3
  55. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/dataTypes.cjs +3 -3
  56. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/dataTypes.js +3 -3
  57. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/defaults.cjs +3 -3
  58. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/defaults.js +3 -3
  59. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/escapeCommas.cjs +3 -3
  60. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/escapeCommas.js +3 -3
  61. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/getAllConfigs.cjs +3 -3
  62. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/getAllConfigs.js +3 -3
  63. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/isPlainObject.cjs +3 -3
  64. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/isPlainObject.js +3 -3
  65. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/log.cjs +3 -3
  66. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/log.js +3 -3
  67. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/math-operators.cjs +3 -3
  68. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/math-operators.js +3 -3
  69. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/negateValue.cjs +3 -3
  70. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/negateValue.js +3 -3
  71. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/normalizeConfig.cjs +3 -3
  72. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/normalizeConfig.js +3 -3
  73. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/parseBoxShadowValue.cjs +3 -3
  74. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/parseBoxShadowValue.js +3 -3
  75. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/pluginUtils.cjs +3 -3
  76. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/pluginUtils.js +3 -3
  77. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/resolveConfig.cjs +3 -3
  78. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/resolveConfig.js +3 -3
  79. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/splitAtTopLevelOnly.cjs +3 -3
  80. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/splitAtTopLevelOnly.js +3 -3
  81. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/toColorValue.cjs +3 -3
  82. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/toColorValue.js +3 -3
  83. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/toPath.cjs +3 -3
  84. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/toPath.js +3 -3
  85. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/validateFormalSyntax.cjs +3 -3
  86. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/validateFormalSyntax.js +3 -3
  87. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/withAlphaVariable.cjs +3 -3
  88. package/lib/vendor/.pnpm/tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3_/vendor/tailwindcss/lib/util/withAlphaVariable.js +3 -3
  89. package/metadata.json +1 -1
  90. package/package.json +5 -13
@@ -1,5 +1,5 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { useRef, useContext, useMemo, useCallback, useEffect } from 'react';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useContext, useMemo, useCallback, useEffect, useRef } from 'react';
3
3
  import { tv as ce } from './../../../../vendor/.pnpm/tailwind-variants@0.3.1_tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3__/vendor/tailwind-variants/dist/index.js';
4
4
  import '../../../../intl/IntlProvider.js';
5
5
  import { useIntl } from '../../../../intl/useIntl.js';
@@ -1,4 +1,4 @@
1
- import { FaMinus, FaCheck, FaCircleInfo, FaCaretDown, FaEllipsis, FaCircleExclamation, FaAngleDown, FaMagnifyingGlassMinus, FaMagnifyingGlassPlus, FaArrowRotateLeft, FaMagnifyingGlass, FaTrashCan, FaFolderOpen, FaCircleQuestion, FaArrowLeft, FaGrip, FaXmark, FaAnglesRight, FaChevronRight, FaAnglesLeft, FaChevronLeft, FaTriangleExclamation, FaSortUp, FaSortDown, FaCaretRight, FaRotate, FaCircleCheck, FaCalendarDays, FaCirclePlus, FaCircleXmark, FaToolbox, FaGlobe, FaAngleRight, FaArrowRight, FaStar, FaUser, FaGear, FaGraduationCap, FaCaretUp, FaBars, FaUserLarge, FaAddressBook, FaAddressCard, FaAngleLeft, FaAngleUp, FaArrowDown, FaArrowDownWideShort, FaArrowRightArrowLeft, FaArrowRotateRight, FaArrowUp19, FaArrowUp, FaArrowUpWideShort, FaArrowsRotate, FaAsterisk, FaAt, FaBabyCarriage, FaBan, FaBarsStaggered, FaBell, FaBellSlash, FaBolt, FaBook, FaBookOpen, FaBookmark, FaBoxArchive, FaBuilding, FaBullhorn, FaCakeCandles, FaCalculator, FaCalendarCheck, FaCalendarXmark, FaCamera, FaCaretLeft, FaChartArea, FaChartBar, FaChartColumn, FaChartLine, FaChartPie, FaChevronDown, FaCircleDot, FaCircle, FaCircleMinus, FaCircleUser, FaClipboardCheck, FaClipboard, FaClipboardList, FaClipboardQuestion, FaClock, FaClockRotateLeft, FaCloudArrowDown, FaCloudArrowUp, FaCode, FaCommentDots, FaComment, FaComments, FaCompress, FaCopy, FaCube, FaCubes, FaDatabase, FaDoorOpen, FaDownLeftAndUpRightToCenter, FaEllipsisVertical, FaEnvelope, FaEnvelopeOpen, FaExpand, FaEye, FaEyeSlash, FaFileArrowDown, FaFileCirclePlus, FaFileCode, FaFileCsv, FaFileExcel, FaFileExport, FaFile, FaFileLines, FaFilePdf, FaFilePowerpoint, FaFileWord, FaFilter, FaFloppyDisk, FaFolder, FaFolderPlus, FaFont, FaGauge, FaGears, FaGripLines, FaGripLinesVertical, FaGripVertical, FaHourglassHalf, FaHouse, FaIdBadge, FaIdCard, FaImage, FaImages, FaInbox, FaIntercom, FaKey, FaLeftLong, FaLeftRight, FaLightbulb, FaLink, FaLinkSlash, FaList, FaListOl, FaListUl, FaLocationDot, FaLock, FaLockOpen, FaMessage, FaMicrosoft, FaMoneyCheckDollar, FaMugHot, FaPaintbrush, FaPaperPlane, FaPaperclip, FaPen, FaPenToSquare, FaPencil, FaPersonWalkingArrowLoopLeft, FaPiggyBank, FaPlus, FaPowerOff, FaPrint, FaRegCircleQuestion, FaRegLightbulb, FaReply, FaRightFromBracket, FaRightLeft, FaRightLong, FaRightToBracket, FaRobot, FaRocket, FaRotateLeft, FaShareNodes, FaShieldHalved, FaSliders, FaSort, FaSquareCheck, FaSquareMinus, FaSquarePlus, FaSquarePollVertical, FaSuitcaseMedical, FaTable, FaTableList, FaTableColumns, FaTag, FaTags, FaThumbtack, FaTruck, FaTruckRampBox, FaUpDown, FaUpRightAndDownLeftFromCenter, FaUserCheck, FaUserClock, FaUserPen, FaUserPlus, FaUsers, FaWindowMaximize, FaWindowMinimize, FaWindowRestore, FaYenSign } from './../../vendor/.pnpm/react-icons@5.5.0_react@19.2.4/vendor/react-icons/fa6/index.js';
1
+ import { FaMinus, FaCheck, FaCircleInfo, FaCaretDown, FaEllipsis, FaCircleExclamation, FaAngleDown, FaMagnifyingGlassMinus, FaMagnifyingGlassPlus, FaArrowRotateLeft, FaMagnifyingGlass, FaTrashCan, FaFolderOpen, FaCircleQuestion, FaArrowLeft, FaGrip, FaXmark, FaAnglesRight, FaChevronRight, FaAnglesLeft, FaChevronLeft, FaTriangleExclamation, FaSortUp, FaSortDown, FaCaretRight, FaRotate, FaCircleCheck, FaCalendarDays, FaCirclePlus, FaCircleXmark, FaToolbox, FaGlobe, FaAngleRight, FaArrowRight, FaStar, FaUser, FaGear, FaGraduationCap, FaCaretUp, FaBars, FaUserLarge, FaAddressBook, FaAddressCard, FaAngleLeft, FaAngleUp, FaArrowDown, FaArrowDownWideShort, FaArrowRightArrowLeft, FaArrowRotateRight, FaArrowUp19, FaArrowUp, FaArrowUpWideShort, FaArrowsRotate, FaAsterisk, FaAt, FaBabyCarriage, FaBan, FaBarsStaggered, FaBell, FaBellSlash, FaBolt, FaBook, FaBookOpen, FaBookmark, FaBoxArchive, FaBuilding, FaBullhorn, FaCakeCandles, FaCalculator, FaCalendarCheck, FaCalendarXmark, FaCamera, FaCaretLeft, FaChartArea, FaChartBar, FaChartColumn, FaChartLine, FaChartPie, FaChevronDown, FaCircleDot, FaCircle, FaCircleMinus, FaCircleUser, FaClipboardCheck, FaClipboard, FaClipboardList, FaClipboardQuestion, FaClock, FaClockRotateLeft, FaCloudArrowDown, FaCloudArrowUp, FaCode, FaCommentDots, FaComment, FaComments, FaCompress, FaCopy, FaCube, FaCubes, FaDatabase, FaDoorOpen, FaDownLeftAndUpRightToCenter, FaEllipsisVertical, FaEnvelope, FaEnvelopeOpen, FaExpand, FaEye, FaEyeSlash, FaFileArrowDown, FaFileCirclePlus, FaFileCode, FaFileCsv, FaFileExcel, FaFileExport, FaFile, FaFileLines, FaFilePdf, FaFilePowerpoint, FaFileWord, FaFilter, FaFloppyDisk, FaFolder, FaFolderPlus, FaFont, FaGauge, FaGears, FaGripLines, FaGripLinesVertical, FaGripVertical, FaHourglassHalf, FaHouse, FaIdBadge, FaIdCard, FaImage, FaImages, FaInbox, FaIntercom, FaKey, FaLeftLong, FaLeftRight, FaLightbulb, FaLink, FaLinkSlash, FaList, FaListOl, FaListUl, FaLocationDot, FaLock, FaLockOpen, FaMessage, FaMicrosoft, FaMoneyCheckDollar, FaMugHot, FaPaintbrush, FaPaperPlane, FaPaperclip, FaPen, FaPenToSquare, FaPencil, FaPersonWalkingArrowLoopLeft, FaPiggyBank, FaPlus, FaPowerOff, FaPrint, FaRegCircleQuestion, FaRegLightbulb, FaReply, FaRightFromBracket, FaRightLeft, FaRightLong, FaRightToBracket, FaRobot, FaRocket, FaRotateLeft, FaShareNodes, FaShieldHalved, FaSliders, FaSort, FaSquareCheck, FaSquareMinus, FaSquarePlus, FaSquarePollVertical, FaSuitcaseMedical, FaTableColumns, FaTable, FaTableList, FaTag, FaTags, FaThumbtack, FaTruck, FaTruckRampBox, FaUpDown, FaUpRightAndDownLeftFromCenter, FaUserCheck, FaUserClock, FaUserPen, FaUserPlus, FaUsers, FaWindowMaximize, FaWindowMinimize, FaWindowRestore, FaYenSign } from './../../vendor/.pnpm/react-icons@5.5.0_react@19.2.4/vendor/react-icons/fa6/index.js';
2
2
  import { generateIcon } from './generateIcon.js';
3
3
 
4
4
  const FaAddressBookIcon = /*#__PURE__*/ generateIcon(FaAddressBook);
@@ -6,6 +6,8 @@ var React = require('react');
6
6
  var index = require('./../../../vendor/.pnpm/tailwind-variants@0.3.1_tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3__/vendor/tailwind-variants/dist/index.cjs');
7
7
  var hooks_useDevice_useDevice = require('../../../hooks/useDevice/useDevice.cjs');
8
8
  require('../../../hooks/useDevice/DeviceProvider.cjs');
9
+ var hooks_useEnvironment_useEnvironment = require('../../../hooks/useEnvironment/useEnvironment.cjs');
10
+ require('../../../themes/ThemeProvider.cjs');
9
11
  require('../../../themes/tailwind/TailwindConfig.cjs');
10
12
  var themes_tailwind_padding = require('../../../themes/tailwind/padding.cjs');
11
13
 
@@ -74,17 +76,19 @@ const classNameGenerator = index.tv({
74
76
  });
75
77
  const Container = ({ size = 'DEFAULT', padding = { block: 2, inline: 2, narrowModeBlock: 1.5, narrowModeInline: 1 }, className, ...rest }) => {
76
78
  const { isNarrowView } = hooks_useDevice_useDevice.useDevice();
79
+ const environment = hooks_useEnvironment_useEnvironment.useEnvironment();
80
+ const mobile = isNarrowView || environment.mobile;
77
81
  const actualClassName = React.useMemo(() => {
78
82
  const actualPadding = padding instanceof Object
79
83
  ? padding
80
84
  : { block: padding, inline: padding, narrowModeBlock: padding, narrowModeInline: padding };
81
85
  return classNameGenerator({
82
86
  size,
83
- paddingBlock: isNarrowView ? actualPadding.narrowModeBlock : actualPadding.block,
84
- paddingInline: isNarrowView ? actualPadding.narrowModeInline : actualPadding.inline,
87
+ paddingBlock: mobile ? actualPadding.narrowModeBlock : actualPadding.block,
88
+ paddingInline: mobile ? actualPadding.narrowModeInline : actualPadding.inline,
85
89
  className,
86
90
  });
87
- }, [size, className, padding, isNarrowView]);
91
+ }, [size, className, padding, mobile]);
88
92
  return jsxRuntime.jsx("div", { ...rest, className: actualClassName });
89
93
  };
90
94
 
@@ -1 +1 @@
1
- {"version":3,"file":"Container.cjs","sources":["../../../../src/components/Layout/Container/Container.tsx"],"sourcesContent":["'use client'\n\nimport { type ComponentProps, type FC, type PropsWithChildren, useMemo } from 'react'\nimport { type VariantProps, tv } from 'tailwind-variants'\n\nimport { useDevice } from '../../../hooks/useDevice'\nimport { paddingBlock, paddingInline } from '../../../themes/tailwind'\n\nimport type { Gap } from '../../../types'\n\ntype AbstractProps = PropsWithChildren<\n Omit<VariantProps<typeof classNameGenerator>, 'paddingBlock' | 'paddingInline'> & {\n padding?: Gap | SeparatePadding\n }\n>\ntype Props = AbstractProps & Omit<ComponentProps<'div'>, keyof AbstractProps>\n\ntype SeparatePadding = {\n block?: Gap\n inline?: Gap\n /** 画面幅が狭い時のブロック方向パディング */\n narrowModeBlock?: Gap\n /** 画面幅が狭い時のインライン方向パディング */\n narrowModeInline?: Gap\n}\n\nexport const classNameGenerator = tv({\n base: 'shr-mx-auto shr-w-full',\n variants: {\n size: {\n NARROW: 'shr-max-w-col6',\n DEFAULT: 'shr-max-w-col8',\n WIDE: 'shr-max-w-col9',\n FULL: '',\n },\n paddingBlock,\n paddingInline,\n },\n compoundVariants: [\n {\n paddingInline: [0.25, 'X3S'],\n className: 'shr-w-[calc(100%-theme(spacing[0.25])*2)]',\n },\n {\n paddingInline: [0.5, 'XXS'],\n className: 'shr-w-[calc(100%-theme(spacing[0.5])*2)]',\n },\n {\n paddingInline: 0.75,\n className: 'shr-w-[calc(100%-theme(spacing[0.75])*2)]',\n },\n {\n paddingInline: [1, 'XS'],\n className: 'shr-w-[calc(100%-theme(spacing[1])*2)]',\n },\n {\n paddingInline: 1.25,\n className: 'shr-w-[calc(100%-theme(spacing[1.25])*2)]',\n },\n {\n paddingInline: [1.5, 'S'],\n className: 'shr-w-[calc(100%-theme(spacing[1.5])*2)]',\n },\n {\n paddingInline: [2, 'M'],\n className: 'shr-w-[calc(100%-theme(spacing[2])*2)]',\n },\n {\n paddingInline: [2.5, 'L'],\n className: 'shr-w-[calc(100%-theme(spacing[2.5])*2)]',\n },\n {\n paddingInline: [3, 'XL'],\n className: 'shr-w-[calc(100%-theme(spacing[3])*2)]',\n },\n {\n paddingInline: [3.5, 'XXL'],\n className: 'shr-w-[calc(100%-theme(spacing[3.5])*2)]',\n },\n {\n paddingInline: [4, 'X3L'],\n className: 'shr-w-[calc(100%-theme(spacing[4])*2)]',\n },\n {\n paddingInline: 8,\n className: 'shr-w-[calc(100%-theme(spacing[8])*2)]',\n },\n ],\n})\n\nexport const Container: FC<Props> = ({\n size = 'DEFAULT',\n padding = { block: 2, inline: 2, narrowModeBlock: 1.5, narrowModeInline: 1 },\n className,\n ...rest\n}) => {\n const { isNarrowView } = useDevice()\n const actualClassName = useMemo(() => {\n const actualPadding =\n padding instanceof Object\n ? padding\n : { block: padding, inline: padding, narrowModeBlock: padding, narrowModeInline: padding }\n return classNameGenerator({\n size,\n paddingBlock: isNarrowView ? actualPadding.narrowModeBlock : actualPadding.block,\n paddingInline: isNarrowView ? actualPadding.narrowModeInline : actualPadding.inline,\n className,\n })\n }, [size, className, padding, isNarrowView])\n return <div {...rest} className={actualClassName} />\n}\n"],"names":[],"mappings":";;;;;;;;;;;AA0BO;AACL;AACA;AACE;AACE;AACA;AACA;AACA;AACD;;;AAGF;AACD;AACE;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACF;AACF;AAEM;AAML;AACA;AACE;AAEI;AACA;AACJ;;AAEE;AACA;;AAED;;AAEH;AACF;;;"}
1
+ {"version":3,"file":"Container.cjs","sources":["../../../../src/components/Layout/Container/Container.tsx"],"sourcesContent":["'use client'\n\nimport { type ComponentProps, type FC, type PropsWithChildren, useMemo } from 'react'\nimport { type VariantProps, tv } from 'tailwind-variants'\n\nimport { useDevice } from '../../../hooks/useDevice'\nimport { useEnvironment } from '../../../hooks/useEnvironment'\nimport { paddingBlock, paddingInline } from '../../../themes/tailwind'\n\nimport type { Gap } from '../../../types'\n\ntype AbstractProps = PropsWithChildren<\n Omit<VariantProps<typeof classNameGenerator>, 'paddingBlock' | 'paddingInline'> & {\n padding?: Gap | SeparatePadding\n }\n>\ntype Props = AbstractProps & Omit<ComponentProps<'div'>, keyof AbstractProps>\n\ntype SeparatePadding = {\n block?: Gap\n inline?: Gap\n /** 画面幅が狭い時のブロック方向パディング */\n narrowModeBlock?: Gap\n /** 画面幅が狭い時のインライン方向パディング */\n narrowModeInline?: Gap\n}\n\nexport const classNameGenerator = tv({\n base: 'shr-mx-auto shr-w-full',\n variants: {\n size: {\n NARROW: 'shr-max-w-col6',\n DEFAULT: 'shr-max-w-col8',\n WIDE: 'shr-max-w-col9',\n FULL: '',\n },\n paddingBlock,\n paddingInline,\n },\n compoundVariants: [\n {\n paddingInline: [0.25, 'X3S'],\n className: 'shr-w-[calc(100%-theme(spacing[0.25])*2)]',\n },\n {\n paddingInline: [0.5, 'XXS'],\n className: 'shr-w-[calc(100%-theme(spacing[0.5])*2)]',\n },\n {\n paddingInline: 0.75,\n className: 'shr-w-[calc(100%-theme(spacing[0.75])*2)]',\n },\n {\n paddingInline: [1, 'XS'],\n className: 'shr-w-[calc(100%-theme(spacing[1])*2)]',\n },\n {\n paddingInline: 1.25,\n className: 'shr-w-[calc(100%-theme(spacing[1.25])*2)]',\n },\n {\n paddingInline: [1.5, 'S'],\n className: 'shr-w-[calc(100%-theme(spacing[1.5])*2)]',\n },\n {\n paddingInline: [2, 'M'],\n className: 'shr-w-[calc(100%-theme(spacing[2])*2)]',\n },\n {\n paddingInline: [2.5, 'L'],\n className: 'shr-w-[calc(100%-theme(spacing[2.5])*2)]',\n },\n {\n paddingInline: [3, 'XL'],\n className: 'shr-w-[calc(100%-theme(spacing[3])*2)]',\n },\n {\n paddingInline: [3.5, 'XXL'],\n className: 'shr-w-[calc(100%-theme(spacing[3.5])*2)]',\n },\n {\n paddingInline: [4, 'X3L'],\n className: 'shr-w-[calc(100%-theme(spacing[4])*2)]',\n },\n {\n paddingInline: 8,\n className: 'shr-w-[calc(100%-theme(spacing[8])*2)]',\n },\n ],\n})\n\nexport const Container: FC<Props> = ({\n size = 'DEFAULT',\n padding = { block: 2, inline: 2, narrowModeBlock: 1.5, narrowModeInline: 1 },\n className,\n ...rest\n}) => {\n const { isNarrowView } = useDevice()\n const environment = useEnvironment()\n const mobile = isNarrowView || environment.mobile\n const actualClassName = useMemo(() => {\n const actualPadding =\n padding instanceof Object\n ? padding\n : { block: padding, inline: padding, narrowModeBlock: padding, narrowModeInline: padding }\n return classNameGenerator({\n size,\n paddingBlock: mobile ? actualPadding.narrowModeBlock : actualPadding.block,\n paddingInline: mobile ? actualPadding.narrowModeInline : actualPadding.inline,\n className,\n })\n }, [size, className, padding, mobile])\n return <div {...rest} className={actualClassName} />\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;AA2BO;AACL;AACA;AACE;AACE;AACA;AACA;AACA;AACD;;;AAGF;AACD;AACE;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACF;AACF;AAEM;AAML;AACA;AACA;AACA;AACE;AAEI;AACA;AACJ;;AAEE;AACA;;AAED;;AAEH;AACF;;;"}
@@ -4,6 +4,8 @@ import { useMemo } from 'react';
4
4
  import { tv as ce } from './../../../vendor/.pnpm/tailwind-variants@0.3.1_tailwindcss@3.4.19_ts-node@10.9.2_@swc_core@1.15.11_@types_node@20.19.33_typescript@5.9.3__/vendor/tailwind-variants/dist/index.js';
5
5
  import { useDevice } from '../../../hooks/useDevice/useDevice.js';
6
6
  import '../../../hooks/useDevice/DeviceProvider.js';
7
+ import { useEnvironment } from '../../../hooks/useEnvironment/useEnvironment.js';
8
+ import '../../../themes/ThemeProvider.js';
7
9
  import '../../../themes/tailwind/TailwindConfig.js';
8
10
  import { paddingInline, paddingBlock } from '../../../themes/tailwind/padding.js';
9
11
 
@@ -72,17 +74,19 @@ const classNameGenerator = ce({
72
74
  });
73
75
  const Container = ({ size = 'DEFAULT', padding = { block: 2, inline: 2, narrowModeBlock: 1.5, narrowModeInline: 1 }, className, ...rest }) => {
74
76
  const { isNarrowView } = useDevice();
77
+ const environment = useEnvironment();
78
+ const mobile = isNarrowView || environment.mobile;
75
79
  const actualClassName = useMemo(() => {
76
80
  const actualPadding = padding instanceof Object
77
81
  ? padding
78
82
  : { block: padding, inline: padding, narrowModeBlock: padding, narrowModeInline: padding };
79
83
  return classNameGenerator({
80
84
  size,
81
- paddingBlock: isNarrowView ? actualPadding.narrowModeBlock : actualPadding.block,
82
- paddingInline: isNarrowView ? actualPadding.narrowModeInline : actualPadding.inline,
85
+ paddingBlock: mobile ? actualPadding.narrowModeBlock : actualPadding.block,
86
+ paddingInline: mobile ? actualPadding.narrowModeInline : actualPadding.inline,
83
87
  className,
84
88
  });
85
- }, [size, className, padding, isNarrowView]);
89
+ }, [size, className, padding, mobile]);
86
90
  return jsx("div", { ...rest, className: actualClassName });
87
91
  };
88
92
 
@@ -1 +1 @@
1
- {"version":3,"file":"Container.js","sources":["../../../../src/components/Layout/Container/Container.tsx"],"sourcesContent":["'use client'\n\nimport { type ComponentProps, type FC, type PropsWithChildren, useMemo } from 'react'\nimport { type VariantProps, tv } from 'tailwind-variants'\n\nimport { useDevice } from '../../../hooks/useDevice'\nimport { paddingBlock, paddingInline } from '../../../themes/tailwind'\n\nimport type { Gap } from '../../../types'\n\ntype AbstractProps = PropsWithChildren<\n Omit<VariantProps<typeof classNameGenerator>, 'paddingBlock' | 'paddingInline'> & {\n padding?: Gap | SeparatePadding\n }\n>\ntype Props = AbstractProps & Omit<ComponentProps<'div'>, keyof AbstractProps>\n\ntype SeparatePadding = {\n block?: Gap\n inline?: Gap\n /** 画面幅が狭い時のブロック方向パディング */\n narrowModeBlock?: Gap\n /** 画面幅が狭い時のインライン方向パディング */\n narrowModeInline?: Gap\n}\n\nexport const classNameGenerator = tv({\n base: 'shr-mx-auto shr-w-full',\n variants: {\n size: {\n NARROW: 'shr-max-w-col6',\n DEFAULT: 'shr-max-w-col8',\n WIDE: 'shr-max-w-col9',\n FULL: '',\n },\n paddingBlock,\n paddingInline,\n },\n compoundVariants: [\n {\n paddingInline: [0.25, 'X3S'],\n className: 'shr-w-[calc(100%-theme(spacing[0.25])*2)]',\n },\n {\n paddingInline: [0.5, 'XXS'],\n className: 'shr-w-[calc(100%-theme(spacing[0.5])*2)]',\n },\n {\n paddingInline: 0.75,\n className: 'shr-w-[calc(100%-theme(spacing[0.75])*2)]',\n },\n {\n paddingInline: [1, 'XS'],\n className: 'shr-w-[calc(100%-theme(spacing[1])*2)]',\n },\n {\n paddingInline: 1.25,\n className: 'shr-w-[calc(100%-theme(spacing[1.25])*2)]',\n },\n {\n paddingInline: [1.5, 'S'],\n className: 'shr-w-[calc(100%-theme(spacing[1.5])*2)]',\n },\n {\n paddingInline: [2, 'M'],\n className: 'shr-w-[calc(100%-theme(spacing[2])*2)]',\n },\n {\n paddingInline: [2.5, 'L'],\n className: 'shr-w-[calc(100%-theme(spacing[2.5])*2)]',\n },\n {\n paddingInline: [3, 'XL'],\n className: 'shr-w-[calc(100%-theme(spacing[3])*2)]',\n },\n {\n paddingInline: [3.5, 'XXL'],\n className: 'shr-w-[calc(100%-theme(spacing[3.5])*2)]',\n },\n {\n paddingInline: [4, 'X3L'],\n className: 'shr-w-[calc(100%-theme(spacing[4])*2)]',\n },\n {\n paddingInline: 8,\n className: 'shr-w-[calc(100%-theme(spacing[8])*2)]',\n },\n ],\n})\n\nexport const Container: FC<Props> = ({\n size = 'DEFAULT',\n padding = { block: 2, inline: 2, narrowModeBlock: 1.5, narrowModeInline: 1 },\n className,\n ...rest\n}) => {\n const { isNarrowView } = useDevice()\n const actualClassName = useMemo(() => {\n const actualPadding =\n padding instanceof Object\n ? padding\n : { block: padding, inline: padding, narrowModeBlock: padding, narrowModeInline: padding }\n return classNameGenerator({\n size,\n paddingBlock: isNarrowView ? actualPadding.narrowModeBlock : actualPadding.block,\n paddingInline: isNarrowView ? actualPadding.narrowModeInline : actualPadding.inline,\n className,\n })\n }, [size, className, padding, isNarrowView])\n return <div {...rest} className={actualClassName} />\n}\n"],"names":[],"mappings":";;;;;;;;;AA0BO;AACL;AACA;AACE;AACE;AACA;AACA;AACA;AACD;;;AAGF;AACD;AACE;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACF;AACF;AAEM;AAML;AACA;AACE;AAEI;AACA;AACJ;;AAEE;AACA;;AAED;;AAEH;AACF;;"}
1
+ {"version":3,"file":"Container.js","sources":["../../../../src/components/Layout/Container/Container.tsx"],"sourcesContent":["'use client'\n\nimport { type ComponentProps, type FC, type PropsWithChildren, useMemo } from 'react'\nimport { type VariantProps, tv } from 'tailwind-variants'\n\nimport { useDevice } from '../../../hooks/useDevice'\nimport { useEnvironment } from '../../../hooks/useEnvironment'\nimport { paddingBlock, paddingInline } from '../../../themes/tailwind'\n\nimport type { Gap } from '../../../types'\n\ntype AbstractProps = PropsWithChildren<\n Omit<VariantProps<typeof classNameGenerator>, 'paddingBlock' | 'paddingInline'> & {\n padding?: Gap | SeparatePadding\n }\n>\ntype Props = AbstractProps & Omit<ComponentProps<'div'>, keyof AbstractProps>\n\ntype SeparatePadding = {\n block?: Gap\n inline?: Gap\n /** 画面幅が狭い時のブロック方向パディング */\n narrowModeBlock?: Gap\n /** 画面幅が狭い時のインライン方向パディング */\n narrowModeInline?: Gap\n}\n\nexport const classNameGenerator = tv({\n base: 'shr-mx-auto shr-w-full',\n variants: {\n size: {\n NARROW: 'shr-max-w-col6',\n DEFAULT: 'shr-max-w-col8',\n WIDE: 'shr-max-w-col9',\n FULL: '',\n },\n paddingBlock,\n paddingInline,\n },\n compoundVariants: [\n {\n paddingInline: [0.25, 'X3S'],\n className: 'shr-w-[calc(100%-theme(spacing[0.25])*2)]',\n },\n {\n paddingInline: [0.5, 'XXS'],\n className: 'shr-w-[calc(100%-theme(spacing[0.5])*2)]',\n },\n {\n paddingInline: 0.75,\n className: 'shr-w-[calc(100%-theme(spacing[0.75])*2)]',\n },\n {\n paddingInline: [1, 'XS'],\n className: 'shr-w-[calc(100%-theme(spacing[1])*2)]',\n },\n {\n paddingInline: 1.25,\n className: 'shr-w-[calc(100%-theme(spacing[1.25])*2)]',\n },\n {\n paddingInline: [1.5, 'S'],\n className: 'shr-w-[calc(100%-theme(spacing[1.5])*2)]',\n },\n {\n paddingInline: [2, 'M'],\n className: 'shr-w-[calc(100%-theme(spacing[2])*2)]',\n },\n {\n paddingInline: [2.5, 'L'],\n className: 'shr-w-[calc(100%-theme(spacing[2.5])*2)]',\n },\n {\n paddingInline: [3, 'XL'],\n className: 'shr-w-[calc(100%-theme(spacing[3])*2)]',\n },\n {\n paddingInline: [3.5, 'XXL'],\n className: 'shr-w-[calc(100%-theme(spacing[3.5])*2)]',\n },\n {\n paddingInline: [4, 'X3L'],\n className: 'shr-w-[calc(100%-theme(spacing[4])*2)]',\n },\n {\n paddingInline: 8,\n className: 'shr-w-[calc(100%-theme(spacing[8])*2)]',\n },\n ],\n})\n\nexport const Container: FC<Props> = ({\n size = 'DEFAULT',\n padding = { block: 2, inline: 2, narrowModeBlock: 1.5, narrowModeInline: 1 },\n className,\n ...rest\n}) => {\n const { isNarrowView } = useDevice()\n const environment = useEnvironment()\n const mobile = isNarrowView || environment.mobile\n const actualClassName = useMemo(() => {\n const actualPadding =\n padding instanceof Object\n ? padding\n : { block: padding, inline: padding, narrowModeBlock: padding, narrowModeInline: padding }\n return classNameGenerator({\n size,\n paddingBlock: mobile ? actualPadding.narrowModeBlock : actualPadding.block,\n paddingInline: mobile ? actualPadding.narrowModeInline : actualPadding.inline,\n className,\n })\n }, [size, className, padding, mobile])\n return <div {...rest} className={actualClassName} />\n}\n"],"names":[],"mappings":";;;;;;;;;;;AA2BO;AACL;AACA;AACE;AACE;AACA;AACA;AACA;AACD;;;AAGF;AACD;AACE;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACD;AACE;AACA;AACD;AACF;AACF;AAEM;AAML;AACA;AACA;AACA;AACE;AAEI;AACA;AACJ;;AAEE;AACA;;AAED;;AAEH;AACF;;"}
@@ -12,22 +12,21 @@ const classNameGenerator = index.tv({
12
12
  slots: {
13
13
  wrapper: ['smarthr-ui-SideMenu-group', '[&:not(:first-of-type)]:shr-mt-1'],
14
14
  list: 'shr-list-none',
15
- groupTitle: 'shr-px-1 shr-py-0.5 shr-text-sm',
15
+ groupHeading: 'shr-px-1 shr-py-0.5 shr-text-sm',
16
16
  },
17
17
  });
18
- const SideMenuGroup = ({ title, titleElementAs, listElementAs, children, className, }) => {
18
+ const SideMenuGroup = ({ heading, children, className, ...rest }) => {
19
19
  const classNames = React.useMemo(() => {
20
- const { wrapper, list, groupTitle } = classNameGenerator();
20
+ const { wrapper, list, groupHeading } = classNameGenerator();
21
21
  return {
22
22
  wrapper: wrapper({ className }),
23
23
  list: list(),
24
- groupTitle: groupTitle(),
24
+ groupHeading: groupHeading(),
25
25
  };
26
26
  }, [className]);
27
- const ListComponent = listElementAs ?? 'ul';
28
- return (jsxRuntime.jsx("li", { className: classNames.wrapper, children: jsxRuntime.jsxs(components_SectioningContent_SectioningContent.Section, { children: [jsxRuntime.jsx(GroupHeading, { titleElementAs: titleElementAs, className: classNames.groupTitle, children: title }), jsxRuntime.jsx(ListComponent, { className: classNames.list, children: children })] }) }));
27
+ return (jsxRuntime.jsx("li", { ...rest, className: classNames.wrapper, children: jsxRuntime.jsxs(components_SectioningContent_SectioningContent.Section, { children: [jsxRuntime.jsx(GroupHeading, { className: classNames.groupHeading, children: heading }), jsxRuntime.jsx("ul", { className: classNames.list, children: children })] }) }));
29
28
  };
30
- const GroupHeading = React.memo(({ titleElementAs: Inner, children, className }) => (jsxRuntime.jsx(components_Heading_Heading.Heading, { type: "subBlockTitle", className: className, children: Inner ? jsxRuntime.jsx(Inner, { children: children }) : children })));
29
+ const GroupHeading = React.memo(({ children, className }) => (jsxRuntime.jsx(components_Heading_Heading.Heading, { type: "subBlockTitle", className: className, children: children })));
31
30
 
32
31
  exports.SideMenuGroup = SideMenuGroup;
33
32
  //# sourceMappingURL=SideMenuGroup.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"SideMenuGroup.cjs","sources":["../../../src/components/SideMenu/SideMenuGroup.tsx"],"sourcesContent":["import {\n type ComponentPropsWithoutRef,\n type ElementType,\n type PropsWithChildren,\n type ReactNode,\n memo,\n useMemo,\n} from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { Heading } from '../Heading'\nimport { Section } from '../SectioningContent'\n\ntype Props<TitleElement extends ElementType> = PropsWithChildren<{\n title: ReactNode\n titleElementAs?: TitleElement\n\n /**\n * @default ul\n */\n listElementAs?: 'ul' | 'ol'\n}> &\n ComponentPropsWithoutRef<TitleElement>\n\nconst classNameGenerator = tv({\n slots: {\n wrapper: ['smarthr-ui-SideMenu-group', '[&:not(:first-of-type)]:shr-mt-1'],\n list: 'shr-list-none',\n groupTitle: 'shr-px-1 shr-py-0.5 shr-text-sm',\n },\n})\n\nexport const SideMenuGroup = <TitleElement extends ElementType = 'span'>({\n title,\n titleElementAs,\n listElementAs,\n children,\n className,\n}: Props<TitleElement>) => {\n const classNames = useMemo(() => {\n const { wrapper, list, groupTitle } = classNameGenerator()\n\n return {\n wrapper: wrapper({ className }),\n list: list(),\n groupTitle: groupTitle(),\n }\n }, [className])\n\n const ListComponent = listElementAs ?? 'ul'\n\n return (\n <li className={classNames.wrapper}>\n <Section>\n <GroupHeading titleElementAs={titleElementAs} className={classNames.groupTitle}>\n {title}\n </GroupHeading>\n <ListComponent className={classNames.list}>{children}</ListComponent>\n </Section>\n </li>\n )\n}\n\nconst GroupHeading = memo<PropsWithChildren<{ titleElementAs?: ElementType; className: string }>>(\n ({ titleElementAs: Inner, children, className }) => (\n <Heading type=\"subBlockTitle\" className={className}>\n {Inner ? <Inner>{children}</Inner> : children}\n </Heading>\n ),\n)\n"],"names":["tv","useMemo","_jsx","_jsxs","Section","memo","Heading"],"mappings":";;;;;;;;;;AAwBA,MAAM,kBAAkB,GAAGA,QAAE,CAAC;AAC5B,IAAA,KAAK,EAAE;AACL,QAAA,OAAO,EAAE,CAAC,2BAA2B,EAAE,kCAAkC,CAAC;AAC1E,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,UAAU,EAAE,iCAAiC;AAC9C,KAAA;AACF,CAAA,CAAC;AAEK,MAAM,aAAa,GAAG,CAA4C,EACvE,KAAK,EACL,cAAc,EACd,aAAa,EACb,QAAQ,EACR,SAAS,GACW,KAAI;AACxB,IAAA,MAAM,UAAU,GAAGC,aAAO,CAAC,MAAK;QAC9B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,kBAAkB,EAAE;QAE1D,OAAO;AACL,YAAA,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;YAC/B,IAAI,EAAE,IAAI,EAAE;YACZ,UAAU,EAAE,UAAU,EAAE;SACzB;AACH,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAA,MAAM,aAAa,GAAG,aAAa,IAAI,IAAI;AAE3C,IAAA,QACEC,cAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAE,UAAU,CAAC,OAAO,EAAA,QAAA,EAC/BC,eAAA,CAACC,sDAAO,EAAA,EAAA,QAAA,EAAA,CACNF,eAAC,YAAY,EAAA,EAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,EAAA,QAAA,EAC3E,KAAK,GACO,EACfA,cAAA,CAAC,aAAa,EAAA,EAAC,SAAS,EAAE,UAAU,CAAC,IAAI,EAAA,QAAA,EAAG,QAAQ,GAAiB,CAAA,EAAA,CAC7D,EAAA,CACP;AAET;AAEA,MAAM,YAAY,GAAGG,UAAI,CACvB,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAC7CH,cAAA,CAACI,kCAAO,EAAA,EAAC,IAAI,EAAC,eAAe,EAAC,SAAS,EAAE,SAAS,YAC/C,KAAK,GAAGJ,cAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAE,QAAQ,GAAS,GAAG,QAAQ,EAAA,CACrC,CACX,CACF;;;;"}
1
+ {"version":3,"file":"SideMenuGroup.cjs","sources":["../../../src/components/SideMenu/SideMenuGroup.tsx"],"sourcesContent":["import {\n type ComponentPropsWithoutRef,\n type PropsWithChildren,\n type ReactNode,\n memo,\n useMemo,\n} from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { Heading } from '../Heading'\nimport { Section } from '../SectioningContent'\n\ntype AbstractProps = PropsWithChildren<{\n heading: ReactNode\n}>\ntype ElementProps = Omit<ComponentPropsWithoutRef<'li'>, keyof AbstractProps>\n\nconst classNameGenerator = tv({\n slots: {\n wrapper: ['smarthr-ui-SideMenu-group', '[&:not(:first-of-type)]:shr-mt-1'],\n list: 'shr-list-none',\n groupHeading: 'shr-px-1 shr-py-0.5 shr-text-sm',\n },\n})\n\nexport const SideMenuGroup = ({\n heading,\n children,\n className,\n ...rest\n}: AbstractProps & ElementProps) => {\n const classNames = useMemo(() => {\n const { wrapper, list, groupHeading } = classNameGenerator()\n\n return {\n wrapper: wrapper({ className }),\n list: list(),\n groupHeading: groupHeading(),\n }\n }, [className])\n\n return (\n <li {...rest} className={classNames.wrapper}>\n <Section>\n <GroupHeading className={classNames.groupHeading}>{heading}</GroupHeading>\n <ul className={classNames.list}>{children}</ul>\n </Section>\n </li>\n )\n}\n\nconst GroupHeading = memo<PropsWithChildren<{ className: string }>>(({ children, className }) => (\n <Heading type=\"subBlockTitle\" className={className}>\n {children}\n </Heading>\n))\n"],"names":["tv","useMemo","_jsx","_jsxs","Section","memo","Heading"],"mappings":";;;;;;;;;;AAiBA,MAAM,kBAAkB,GAAGA,QAAE,CAAC;AAC5B,IAAA,KAAK,EAAE;AACL,QAAA,OAAO,EAAE,CAAC,2BAA2B,EAAE,kCAAkC,CAAC;AAC1E,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,YAAY,EAAE,iCAAiC;AAChD,KAAA;AACF,CAAA,CAAC;AAEK,MAAM,aAAa,GAAG,CAAC,EAC5B,OAAO,EACP,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACsB,KAAI;AACjC,IAAA,MAAM,UAAU,GAAGC,aAAO,CAAC,MAAK;QAC9B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,kBAAkB,EAAE;QAE5D,OAAO;AACL,YAAA,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;YAC/B,IAAI,EAAE,IAAI,EAAE;YACZ,YAAY,EAAE,YAAY,EAAE;SAC7B;AACH,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAA,QACEC,cAAA,CAAA,IAAA,EAAA,EAAA,GAAQ,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,OAAO,EAAA,QAAA,EACzCC,gBAACC,sDAAO,EAAA,EAAA,QAAA,EAAA,CACNF,cAAA,CAAC,YAAY,IAAC,SAAS,EAAE,UAAU,CAAC,YAAY,EAAA,QAAA,EAAG,OAAO,EAAA,CAAgB,EAC1EA,uBAAI,SAAS,EAAE,UAAU,CAAC,IAAI,EAAA,QAAA,EAAG,QAAQ,GAAM,CAAA,EAAA,CACvC,EAAA,CACP;AAET;AAEA,MAAM,YAAY,GAAGG,UAAI,CAA2C,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,MAC1FH,cAAA,CAACI,kCAAO,EAAA,EAAC,IAAI,EAAC,eAAe,EAAC,SAAS,EAAE,SAAS,EAAA,QAAA,EAC/C,QAAQ,EAAA,CACD,CACX,CAAC;;;;"}
@@ -1,11 +1,7 @@
1
- import { type ComponentPropsWithoutRef, type ElementType, type PropsWithChildren, type ReactNode } from 'react';
2
- type Props<TitleElement extends ElementType> = PropsWithChildren<{
3
- title: ReactNode;
4
- titleElementAs?: TitleElement;
5
- /**
6
- * @default ul
7
- */
8
- listElementAs?: 'ul' | 'ol';
9
- }> & ComponentPropsWithoutRef<TitleElement>;
10
- export declare const SideMenuGroup: <TitleElement extends ElementType = "span">({ title, titleElementAs, listElementAs, children, className, }: Props<TitleElement>) => import("react/jsx-runtime").JSX.Element;
1
+ import { type ComponentPropsWithoutRef, type PropsWithChildren, type ReactNode } from 'react';
2
+ type AbstractProps = PropsWithChildren<{
3
+ heading: ReactNode;
4
+ }>;
5
+ type ElementProps = Omit<ComponentPropsWithoutRef<'li'>, keyof AbstractProps>;
6
+ export declare const SideMenuGroup: ({ heading, children, className, ...rest }: AbstractProps & ElementProps) => import("react/jsx-runtime").JSX.Element;
11
7
  export {};
@@ -10,22 +10,21 @@ const classNameGenerator = ce({
10
10
  slots: {
11
11
  wrapper: ['smarthr-ui-SideMenu-group', '[&:not(:first-of-type)]:shr-mt-1'],
12
12
  list: 'shr-list-none',
13
- groupTitle: 'shr-px-1 shr-py-0.5 shr-text-sm',
13
+ groupHeading: 'shr-px-1 shr-py-0.5 shr-text-sm',
14
14
  },
15
15
  });
16
- const SideMenuGroup = ({ title, titleElementAs, listElementAs, children, className, }) => {
16
+ const SideMenuGroup = ({ heading, children, className, ...rest }) => {
17
17
  const classNames = useMemo(() => {
18
- const { wrapper, list, groupTitle } = classNameGenerator();
18
+ const { wrapper, list, groupHeading } = classNameGenerator();
19
19
  return {
20
20
  wrapper: wrapper({ className }),
21
21
  list: list(),
22
- groupTitle: groupTitle(),
22
+ groupHeading: groupHeading(),
23
23
  };
24
24
  }, [className]);
25
- const ListComponent = listElementAs ?? 'ul';
26
- return (jsx("li", { className: classNames.wrapper, children: jsxs(Section, { children: [jsx(GroupHeading, { titleElementAs: titleElementAs, className: classNames.groupTitle, children: title }), jsx(ListComponent, { className: classNames.list, children: children })] }) }));
25
+ return (jsx("li", { ...rest, className: classNames.wrapper, children: jsxs(Section, { children: [jsx(GroupHeading, { className: classNames.groupHeading, children: heading }), jsx("ul", { className: classNames.list, children: children })] }) }));
27
26
  };
28
- const GroupHeading = memo(({ titleElementAs: Inner, children, className }) => (jsx(Heading, { type: "subBlockTitle", className: className, children: Inner ? jsx(Inner, { children: children }) : children })));
27
+ const GroupHeading = memo(({ children, className }) => (jsx(Heading, { type: "subBlockTitle", className: className, children: children })));
29
28
 
30
29
  export { SideMenuGroup };
31
30
  //# sourceMappingURL=SideMenuGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SideMenuGroup.js","sources":["../../../src/components/SideMenu/SideMenuGroup.tsx"],"sourcesContent":["import {\n type ComponentPropsWithoutRef,\n type ElementType,\n type PropsWithChildren,\n type ReactNode,\n memo,\n useMemo,\n} from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { Heading } from '../Heading'\nimport { Section } from '../SectioningContent'\n\ntype Props<TitleElement extends ElementType> = PropsWithChildren<{\n title: ReactNode\n titleElementAs?: TitleElement\n\n /**\n * @default ul\n */\n listElementAs?: 'ul' | 'ol'\n}> &\n ComponentPropsWithoutRef<TitleElement>\n\nconst classNameGenerator = tv({\n slots: {\n wrapper: ['smarthr-ui-SideMenu-group', '[&:not(:first-of-type)]:shr-mt-1'],\n list: 'shr-list-none',\n groupTitle: 'shr-px-1 shr-py-0.5 shr-text-sm',\n },\n})\n\nexport const SideMenuGroup = <TitleElement extends ElementType = 'span'>({\n title,\n titleElementAs,\n listElementAs,\n children,\n className,\n}: Props<TitleElement>) => {\n const classNames = useMemo(() => {\n const { wrapper, list, groupTitle } = classNameGenerator()\n\n return {\n wrapper: wrapper({ className }),\n list: list(),\n groupTitle: groupTitle(),\n }\n }, [className])\n\n const ListComponent = listElementAs ?? 'ul'\n\n return (\n <li className={classNames.wrapper}>\n <Section>\n <GroupHeading titleElementAs={titleElementAs} className={classNames.groupTitle}>\n {title}\n </GroupHeading>\n <ListComponent className={classNames.list}>{children}</ListComponent>\n </Section>\n </li>\n )\n}\n\nconst GroupHeading = memo<PropsWithChildren<{ titleElementAs?: ElementType; className: string }>>(\n ({ titleElementAs: Inner, children, className }) => (\n <Heading type=\"subBlockTitle\" className={className}>\n {Inner ? <Inner>{children}</Inner> : children}\n </Heading>\n ),\n)\n"],"names":["tv","_jsx","_jsxs"],"mappings":";;;;;;;;AAwBA,MAAM,kBAAkB,GAAGA,EAAE,CAAC;AAC5B,IAAA,KAAK,EAAE;AACL,QAAA,OAAO,EAAE,CAAC,2BAA2B,EAAE,kCAAkC,CAAC;AAC1E,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,UAAU,EAAE,iCAAiC;AAC9C,KAAA;AACF,CAAA,CAAC;AAEK,MAAM,aAAa,GAAG,CAA4C,EACvE,KAAK,EACL,cAAc,EACd,aAAa,EACb,QAAQ,EACR,SAAS,GACW,KAAI;AACxB,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAK;QAC9B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,kBAAkB,EAAE;QAE1D,OAAO;AACL,YAAA,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;YAC/B,IAAI,EAAE,IAAI,EAAE;YACZ,UAAU,EAAE,UAAU,EAAE;SACzB;AACH,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAA,MAAM,aAAa,GAAG,aAAa,IAAI,IAAI;AAE3C,IAAA,QACEC,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAE,UAAU,CAAC,OAAO,EAAA,QAAA,EAC/BC,IAAA,CAAC,OAAO,EAAA,EAAA,QAAA,EAAA,CACND,IAAC,YAAY,EAAA,EAAC,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC,UAAU,EAAA,QAAA,EAC3E,KAAK,GACO,EACfA,GAAA,CAAC,aAAa,EAAA,EAAC,SAAS,EAAE,UAAU,CAAC,IAAI,EAAA,QAAA,EAAG,QAAQ,GAAiB,CAAA,EAAA,CAC7D,EAAA,CACP;AAET;AAEA,MAAM,YAAY,GAAG,IAAI,CACvB,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAC7CA,GAAA,CAAC,OAAO,EAAA,EAAC,IAAI,EAAC,eAAe,EAAC,SAAS,EAAE,SAAS,YAC/C,KAAK,GAAGA,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAE,QAAQ,GAAS,GAAG,QAAQ,EAAA,CACrC,CACX,CACF;;;;"}
1
+ {"version":3,"file":"SideMenuGroup.js","sources":["../../../src/components/SideMenu/SideMenuGroup.tsx"],"sourcesContent":["import {\n type ComponentPropsWithoutRef,\n type PropsWithChildren,\n type ReactNode,\n memo,\n useMemo,\n} from 'react'\nimport { tv } from 'tailwind-variants'\n\nimport { Heading } from '../Heading'\nimport { Section } from '../SectioningContent'\n\ntype AbstractProps = PropsWithChildren<{\n heading: ReactNode\n}>\ntype ElementProps = Omit<ComponentPropsWithoutRef<'li'>, keyof AbstractProps>\n\nconst classNameGenerator = tv({\n slots: {\n wrapper: ['smarthr-ui-SideMenu-group', '[&:not(:first-of-type)]:shr-mt-1'],\n list: 'shr-list-none',\n groupHeading: 'shr-px-1 shr-py-0.5 shr-text-sm',\n },\n})\n\nexport const SideMenuGroup = ({\n heading,\n children,\n className,\n ...rest\n}: AbstractProps & ElementProps) => {\n const classNames = useMemo(() => {\n const { wrapper, list, groupHeading } = classNameGenerator()\n\n return {\n wrapper: wrapper({ className }),\n list: list(),\n groupHeading: groupHeading(),\n }\n }, [className])\n\n return (\n <li {...rest} className={classNames.wrapper}>\n <Section>\n <GroupHeading className={classNames.groupHeading}>{heading}</GroupHeading>\n <ul className={classNames.list}>{children}</ul>\n </Section>\n </li>\n )\n}\n\nconst GroupHeading = memo<PropsWithChildren<{ className: string }>>(({ children, className }) => (\n <Heading type=\"subBlockTitle\" className={className}>\n {children}\n </Heading>\n))\n"],"names":["tv","_jsx","_jsxs"],"mappings":";;;;;;;;AAiBA,MAAM,kBAAkB,GAAGA,EAAE,CAAC;AAC5B,IAAA,KAAK,EAAE;AACL,QAAA,OAAO,EAAE,CAAC,2BAA2B,EAAE,kCAAkC,CAAC;AAC1E,QAAA,IAAI,EAAE,eAAe;AACrB,QAAA,YAAY,EAAE,iCAAiC;AAChD,KAAA;AACF,CAAA,CAAC;AAEK,MAAM,aAAa,GAAG,CAAC,EAC5B,OAAO,EACP,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACsB,KAAI;AACjC,IAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAK;QAC9B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,kBAAkB,EAAE;QAE5D,OAAO;AACL,YAAA,OAAO,EAAE,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;YAC/B,IAAI,EAAE,IAAI,EAAE;YACZ,YAAY,EAAE,YAAY,EAAE;SAC7B;AACH,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAA,QACEC,GAAA,CAAA,IAAA,EAAA,EAAA,GAAQ,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,OAAO,EAAA,QAAA,EACzCC,KAAC,OAAO,EAAA,EAAA,QAAA,EAAA,CACND,GAAA,CAAC,YAAY,IAAC,SAAS,EAAE,UAAU,CAAC,YAAY,EAAA,QAAA,EAAG,OAAO,EAAA,CAAgB,EAC1EA,YAAI,SAAS,EAAE,UAAU,CAAC,IAAI,EAAA,QAAA,EAAG,QAAQ,GAAM,CAAA,EAAA,CACvC,EAAA,CACP;AAET;AAEA,MAAM,YAAY,GAAG,IAAI,CAA2C,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,MAC1FA,GAAA,CAAC,OAAO,EAAA,EAAC,IAAI,EAAC,eAAe,EAAC,SAAS,EAAE,SAAS,EAAA,QAAA,EAC/C,QAAQ,EAAA,CACD,CACX,CAAC;;;;"}
@@ -5,24 +5,26 @@ var libs_object = require('../../libs/object.cjs');
5
5
  var libs_shallowEqual = require('../../libs/shallowEqual.cjs');
6
6
 
7
7
  const useMediaQueries = (queries) => {
8
- const matchMediaList = React.useMemo(() => libs_object.entries(queries).map(([key, query]) => [key, window.matchMedia(query)]), [queries]);
8
+ const getMatchMediaList = React.useCallback(() => libs_object.entries(queries).map(([key, query]) => [key, window.matchMedia(query)]), [queries]);
9
9
  const lastSnapshotRef = React.useRef(null);
10
- const getServerSnapshot = React.useCallback(() => libs_object.fromEntries(matchMediaList.map(([key]) => [key, false])), [matchMediaList]);
10
+ const serverSnapshot = React.useMemo(() => libs_object.fromEntries(libs_object.entries(queries).map(([key]) => [key, false])), [queries]);
11
+ const getServerSnapshot = React.useCallback(() => serverSnapshot, [serverSnapshot]);
11
12
  const getSnapshot = React.useCallback(() => {
12
13
  if (typeof window === 'undefined' || !window.matchMedia) {
13
- return getServerSnapshot();
14
+ return serverSnapshot;
14
15
  }
15
- const ret = libs_object.fromEntries(matchMediaList.map(([key, m]) => [key, m.matches]));
16
+ const ret = libs_object.fromEntries(getMatchMediaList().map(([key, m]) => [key, m.matches]));
16
17
  if (lastSnapshotRef.current && libs_shallowEqual.shallowEqual(lastSnapshotRef.current, ret)) {
17
18
  return lastSnapshotRef.current;
18
19
  }
19
20
  lastSnapshotRef.current = ret;
20
21
  return ret;
21
- }, [matchMediaList, getServerSnapshot]);
22
+ }, [getMatchMediaList, serverSnapshot]);
22
23
  const subscribe = React.useCallback((f) => {
23
24
  if (typeof window === 'undefined' || !window.matchMedia) {
24
25
  return () => { };
25
26
  }
27
+ const matchMediaList = getMatchMediaList();
26
28
  matchMediaList.forEach(([, m]) => {
27
29
  m.addEventListener('change', f);
28
30
  });
@@ -31,7 +33,7 @@ const useMediaQueries = (queries) => {
31
33
  m.removeEventListener('change', f);
32
34
  });
33
35
  };
34
- }, [matchMediaList]);
36
+ }, [getMatchMediaList]);
35
37
  return React.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
36
38
  };
37
39
 
@@ -1 +1 @@
1
- {"version":3,"file":"useMediaQueries.cjs","sources":["../../../src/hooks/useMediaQueries/useMediaQueries.ts"],"sourcesContent":["import { useCallback, useMemo, useRef, useSyncExternalStore } from 'react'\n\nimport { entries, fromEntries } from '../../libs/object'\nimport { shallowEqual } from '../../libs/shallowEqual'\n\ntype MediaQueryListMap = {\n [key: string]: string\n}\n\ntype MediaQueryMatches<T> = {\n [K in keyof T]: boolean\n}\n\nexport const useMediaQueries = <T extends MediaQueryListMap>(queries: T): MediaQueryMatches<T> => {\n const matchMediaList = useMemo(\n () => entries(queries).map(([key, query]) => [key, window.matchMedia(query)] as const),\n [queries],\n )\n const lastSnapshotRef = useRef<MediaQueryMatches<T> | null>(null)\n\n const getServerSnapshot = useCallback(\n (): MediaQueryMatches<T> => fromEntries(matchMediaList.map(([key]) => [key, false] as const)),\n [matchMediaList],\n ) satisfies () => MediaQueryMatches<T>\n\n const getSnapshot = useCallback((): MediaQueryMatches<T> => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return getServerSnapshot()\n }\n\n const ret = fromEntries(matchMediaList.map(([key, m]) => [key, m.matches] as const))\n if (lastSnapshotRef.current && shallowEqual(lastSnapshotRef.current, ret)) {\n return lastSnapshotRef.current\n }\n lastSnapshotRef.current = ret\n return ret\n }, [matchMediaList, getServerSnapshot])\n\n const subscribe = useCallback(\n (f: () => void) => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return () => {}\n }\n matchMediaList.forEach(([, m]) => {\n m.addEventListener('change', f)\n })\n return () => {\n matchMediaList.forEach(([, m]) => {\n m.removeEventListener('change', f)\n })\n }\n },\n [matchMediaList],\n )\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n"],"names":["useMemo","entries","useRef","useCallback","fromEntries","shallowEqual","useSyncExternalStore"],"mappings":";;;;;;AAaO,MAAM,eAAe,GAAG,CAA8B,OAAU,KAA0B;AAC/F,IAAA,MAAM,cAAc,GAAGA,aAAO,CAC5B,MAAMC,mBAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAU,CAAC,EACtF,CAAC,OAAO,CAAC,CACV;AACD,IAAA,MAAM,eAAe,GAAGC,YAAM,CAA8B,IAAI,CAAC;AAEjE,IAAA,MAAM,iBAAiB,GAAGC,iBAAW,CACnC,MAA4BC,uBAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAU,CAAC,CAAC,EAC7F,CAAC,cAAc,CAAC,CACoB;AAEtC,IAAA,MAAM,WAAW,GAAGD,iBAAW,CAAC,MAA2B;QACzD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YACvD,OAAO,iBAAiB,EAAE;QAC5B;QAEA,MAAM,GAAG,GAAGC,uBAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAU,CAAC,CAAC;AACpF,QAAA,IAAI,eAAe,CAAC,OAAO,IAAIC,8BAAY,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACzE,OAAO,eAAe,CAAC,OAAO;QAChC;AACA,QAAA,eAAe,CAAC,OAAO,GAAG,GAAG;AAC7B,QAAA,OAAO,GAAG;AACZ,IAAA,CAAC,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAEvC,IAAA,MAAM,SAAS,GAAGF,iBAAW,CAC3B,CAAC,CAAa,KAAI;QAChB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACvD,YAAA,OAAO,MAAK,EAAE,CAAC;QACjB;QACA,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAI;AAC/B,YAAA,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAK;YACV,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAI;AAC/B,gBAAA,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AACH,IAAA,CAAC,EACD,CAAC,cAAc,CAAC,CACjB;IAED,OAAOG,0BAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC;AACxE;;;;"}
1
+ {"version":3,"file":"useMediaQueries.cjs","sources":["../../../src/hooks/useMediaQueries/useMediaQueries.ts"],"sourcesContent":["import { useCallback, useMemo, useRef, useSyncExternalStore } from 'react'\n\nimport { entries, fromEntries } from '../../libs/object'\nimport { shallowEqual } from '../../libs/shallowEqual'\n\ntype MediaQueryListMap = {\n [key: string]: string\n}\n\ntype MediaQueryMatches<T> = {\n [K in keyof T]: boolean\n}\n\nexport const useMediaQueries = <T extends MediaQueryListMap>(queries: T): MediaQueryMatches<T> => {\n const getMatchMediaList = useCallback(\n () => entries(queries).map(([key, query]) => [key, window.matchMedia(query)] as const),\n [queries],\n )\n const lastSnapshotRef = useRef<MediaQueryMatches<T> | null>(null)\n\n const serverSnapshot = useMemo(\n () =>\n fromEntries(entries(queries).map(([key]) => [key, false] as const)) as MediaQueryMatches<T>,\n [queries],\n )\n\n const getServerSnapshot = useCallback(\n () => serverSnapshot,\n [serverSnapshot],\n ) satisfies () => MediaQueryMatches<T>\n\n const getSnapshot = useCallback((): MediaQueryMatches<T> => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return serverSnapshot\n }\n\n const ret = fromEntries(getMatchMediaList().map(([key, m]) => [key, m.matches] as const))\n if (lastSnapshotRef.current && shallowEqual(lastSnapshotRef.current, ret)) {\n return lastSnapshotRef.current\n }\n lastSnapshotRef.current = ret\n return ret\n }, [getMatchMediaList, serverSnapshot])\n\n const subscribe = useCallback(\n (f: () => void) => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return () => {}\n }\n const matchMediaList = getMatchMediaList()\n matchMediaList.forEach(([, m]) => {\n m.addEventListener('change', f)\n })\n return () => {\n matchMediaList.forEach(([, m]) => {\n m.removeEventListener('change', f)\n })\n }\n },\n [getMatchMediaList],\n )\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n"],"names":["useCallback","entries","useRef","useMemo","fromEntries","shallowEqual","useSyncExternalStore"],"mappings":";;;;;;AAaO,MAAM,eAAe,GAAG,CAA8B,OAAU,KAA0B;AAC/F,IAAA,MAAM,iBAAiB,GAAGA,iBAAW,CACnC,MAAMC,mBAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAU,CAAC,EACtF,CAAC,OAAO,CAAC,CACV;AACD,IAAA,MAAM,eAAe,GAAGC,YAAM,CAA8B,IAAI,CAAC;AAEjE,IAAA,MAAM,cAAc,GAAGC,aAAO,CAC5B,MACEC,uBAAW,CAACH,mBAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAU,CAAC,CAAyB,EAC7F,CAAC,OAAO,CAAC,CACV;AAED,IAAA,MAAM,iBAAiB,GAAGD,iBAAW,CACnC,MAAM,cAAc,EACpB,CAAC,cAAc,CAAC,CACoB;AAEtC,IAAA,MAAM,WAAW,GAAGA,iBAAW,CAAC,MAA2B;QACzD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACvD,YAAA,OAAO,cAAc;QACvB;QAEA,MAAM,GAAG,GAAGI,uBAAW,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAU,CAAC,CAAC;AACzF,QAAA,IAAI,eAAe,CAAC,OAAO,IAAIC,8BAAY,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACzE,OAAO,eAAe,CAAC,OAAO;QAChC;AACA,QAAA,eAAe,CAAC,OAAO,GAAG,GAAG;AAC7B,QAAA,OAAO,GAAG;AACZ,IAAA,CAAC,EAAE,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;AAEvC,IAAA,MAAM,SAAS,GAAGL,iBAAW,CAC3B,CAAC,CAAa,KAAI;QAChB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACvD,YAAA,OAAO,MAAK,EAAE,CAAC;QACjB;AACA,QAAA,MAAM,cAAc,GAAG,iBAAiB,EAAE;QAC1C,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAI;AAC/B,YAAA,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAK;YACV,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAI;AAC/B,gBAAA,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AACH,IAAA,CAAC,EACD,CAAC,iBAAiB,CAAC,CACpB;IAED,OAAOM,0BAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC;AACxE;;;;"}
@@ -1,26 +1,28 @@
1
- import { useMemo, useRef, useCallback, useSyncExternalStore } from 'react';
1
+ import { useCallback, useRef, useMemo, useSyncExternalStore } from 'react';
2
2
  import { entries, fromEntries } from '../../libs/object.js';
3
3
  import { shallowEqual } from '../../libs/shallowEqual.js';
4
4
 
5
5
  const useMediaQueries = (queries) => {
6
- const matchMediaList = useMemo(() => entries(queries).map(([key, query]) => [key, window.matchMedia(query)]), [queries]);
6
+ const getMatchMediaList = useCallback(() => entries(queries).map(([key, query]) => [key, window.matchMedia(query)]), [queries]);
7
7
  const lastSnapshotRef = useRef(null);
8
- const getServerSnapshot = useCallback(() => fromEntries(matchMediaList.map(([key]) => [key, false])), [matchMediaList]);
8
+ const serverSnapshot = useMemo(() => fromEntries(entries(queries).map(([key]) => [key, false])), [queries]);
9
+ const getServerSnapshot = useCallback(() => serverSnapshot, [serverSnapshot]);
9
10
  const getSnapshot = useCallback(() => {
10
11
  if (typeof window === 'undefined' || !window.matchMedia) {
11
- return getServerSnapshot();
12
+ return serverSnapshot;
12
13
  }
13
- const ret = fromEntries(matchMediaList.map(([key, m]) => [key, m.matches]));
14
+ const ret = fromEntries(getMatchMediaList().map(([key, m]) => [key, m.matches]));
14
15
  if (lastSnapshotRef.current && shallowEqual(lastSnapshotRef.current, ret)) {
15
16
  return lastSnapshotRef.current;
16
17
  }
17
18
  lastSnapshotRef.current = ret;
18
19
  return ret;
19
- }, [matchMediaList, getServerSnapshot]);
20
+ }, [getMatchMediaList, serverSnapshot]);
20
21
  const subscribe = useCallback((f) => {
21
22
  if (typeof window === 'undefined' || !window.matchMedia) {
22
23
  return () => { };
23
24
  }
25
+ const matchMediaList = getMatchMediaList();
24
26
  matchMediaList.forEach(([, m]) => {
25
27
  m.addEventListener('change', f);
26
28
  });
@@ -29,7 +31,7 @@ const useMediaQueries = (queries) => {
29
31
  m.removeEventListener('change', f);
30
32
  });
31
33
  };
32
- }, [matchMediaList]);
34
+ }, [getMatchMediaList]);
33
35
  return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
34
36
  };
35
37
 
@@ -1 +1 @@
1
- {"version":3,"file":"useMediaQueries.js","sources":["../../../src/hooks/useMediaQueries/useMediaQueries.ts"],"sourcesContent":["import { useCallback, useMemo, useRef, useSyncExternalStore } from 'react'\n\nimport { entries, fromEntries } from '../../libs/object'\nimport { shallowEqual } from '../../libs/shallowEqual'\n\ntype MediaQueryListMap = {\n [key: string]: string\n}\n\ntype MediaQueryMatches<T> = {\n [K in keyof T]: boolean\n}\n\nexport const useMediaQueries = <T extends MediaQueryListMap>(queries: T): MediaQueryMatches<T> => {\n const matchMediaList = useMemo(\n () => entries(queries).map(([key, query]) => [key, window.matchMedia(query)] as const),\n [queries],\n )\n const lastSnapshotRef = useRef<MediaQueryMatches<T> | null>(null)\n\n const getServerSnapshot = useCallback(\n (): MediaQueryMatches<T> => fromEntries(matchMediaList.map(([key]) => [key, false] as const)),\n [matchMediaList],\n ) satisfies () => MediaQueryMatches<T>\n\n const getSnapshot = useCallback((): MediaQueryMatches<T> => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return getServerSnapshot()\n }\n\n const ret = fromEntries(matchMediaList.map(([key, m]) => [key, m.matches] as const))\n if (lastSnapshotRef.current && shallowEqual(lastSnapshotRef.current, ret)) {\n return lastSnapshotRef.current\n }\n lastSnapshotRef.current = ret\n return ret\n }, [matchMediaList, getServerSnapshot])\n\n const subscribe = useCallback(\n (f: () => void) => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return () => {}\n }\n matchMediaList.forEach(([, m]) => {\n m.addEventListener('change', f)\n })\n return () => {\n matchMediaList.forEach(([, m]) => {\n m.removeEventListener('change', f)\n })\n }\n },\n [matchMediaList],\n )\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n"],"names":[],"mappings":";;;;AAaO,MAAM,eAAe,GAAG,CAA8B,OAAU,KAA0B;AAC/F,IAAA,MAAM,cAAc,GAAG,OAAO,CAC5B,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAU,CAAC,EACtF,CAAC,OAAO,CAAC,CACV;AACD,IAAA,MAAM,eAAe,GAAG,MAAM,CAA8B,IAAI,CAAC;AAEjE,IAAA,MAAM,iBAAiB,GAAG,WAAW,CACnC,MAA4B,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAU,CAAC,CAAC,EAC7F,CAAC,cAAc,CAAC,CACoB;AAEtC,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAA2B;QACzD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;YACvD,OAAO,iBAAiB,EAAE;QAC5B;QAEA,MAAM,GAAG,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAU,CAAC,CAAC;AACpF,QAAA,IAAI,eAAe,CAAC,OAAO,IAAI,YAAY,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACzE,OAAO,eAAe,CAAC,OAAO;QAChC;AACA,QAAA,eAAe,CAAC,OAAO,GAAG,GAAG;AAC7B,QAAA,OAAO,GAAG;AACZ,IAAA,CAAC,EAAE,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AAEvC,IAAA,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,CAAa,KAAI;QAChB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACvD,YAAA,OAAO,MAAK,EAAE,CAAC;QACjB;QACA,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAI;AAC/B,YAAA,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAK;YACV,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAI;AAC/B,gBAAA,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AACH,IAAA,CAAC,EACD,CAAC,cAAc,CAAC,CACjB;IAED,OAAO,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC;AACxE;;;;"}
1
+ {"version":3,"file":"useMediaQueries.js","sources":["../../../src/hooks/useMediaQueries/useMediaQueries.ts"],"sourcesContent":["import { useCallback, useMemo, useRef, useSyncExternalStore } from 'react'\n\nimport { entries, fromEntries } from '../../libs/object'\nimport { shallowEqual } from '../../libs/shallowEqual'\n\ntype MediaQueryListMap = {\n [key: string]: string\n}\n\ntype MediaQueryMatches<T> = {\n [K in keyof T]: boolean\n}\n\nexport const useMediaQueries = <T extends MediaQueryListMap>(queries: T): MediaQueryMatches<T> => {\n const getMatchMediaList = useCallback(\n () => entries(queries).map(([key, query]) => [key, window.matchMedia(query)] as const),\n [queries],\n )\n const lastSnapshotRef = useRef<MediaQueryMatches<T> | null>(null)\n\n const serverSnapshot = useMemo(\n () =>\n fromEntries(entries(queries).map(([key]) => [key, false] as const)) as MediaQueryMatches<T>,\n [queries],\n )\n\n const getServerSnapshot = useCallback(\n () => serverSnapshot,\n [serverSnapshot],\n ) satisfies () => MediaQueryMatches<T>\n\n const getSnapshot = useCallback((): MediaQueryMatches<T> => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return serverSnapshot\n }\n\n const ret = fromEntries(getMatchMediaList().map(([key, m]) => [key, m.matches] as const))\n if (lastSnapshotRef.current && shallowEqual(lastSnapshotRef.current, ret)) {\n return lastSnapshotRef.current\n }\n lastSnapshotRef.current = ret\n return ret\n }, [getMatchMediaList, serverSnapshot])\n\n const subscribe = useCallback(\n (f: () => void) => {\n if (typeof window === 'undefined' || !window.matchMedia) {\n return () => {}\n }\n const matchMediaList = getMatchMediaList()\n matchMediaList.forEach(([, m]) => {\n m.addEventListener('change', f)\n })\n return () => {\n matchMediaList.forEach(([, m]) => {\n m.removeEventListener('change', f)\n })\n }\n },\n [getMatchMediaList],\n )\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot)\n}\n"],"names":[],"mappings":";;;;AAaO,MAAM,eAAe,GAAG,CAA8B,OAAU,KAA0B;AAC/F,IAAA,MAAM,iBAAiB,GAAG,WAAW,CACnC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAU,CAAC,EACtF,CAAC,OAAO,CAAC,CACV;AACD,IAAA,MAAM,eAAe,GAAG,MAAM,CAA8B,IAAI,CAAC;AAEjE,IAAA,MAAM,cAAc,GAAG,OAAO,CAC5B,MACE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAU,CAAC,CAAyB,EAC7F,CAAC,OAAO,CAAC,CACV;AAED,IAAA,MAAM,iBAAiB,GAAG,WAAW,CACnC,MAAM,cAAc,EACpB,CAAC,cAAc,CAAC,CACoB;AAEtC,IAAA,MAAM,WAAW,GAAG,WAAW,CAAC,MAA2B;QACzD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACvD,YAAA,OAAO,cAAc;QACvB;QAEA,MAAM,GAAG,GAAG,WAAW,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAU,CAAC,CAAC;AACzF,QAAA,IAAI,eAAe,CAAC,OAAO,IAAI,YAAY,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACzE,OAAO,eAAe,CAAC,OAAO;QAChC;AACA,QAAA,eAAe,CAAC,OAAO,GAAG,GAAG;AAC7B,QAAA,OAAO,GAAG;AACZ,IAAA,CAAC,EAAE,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;AAEvC,IAAA,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,CAAa,KAAI;QAChB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AACvD,YAAA,OAAO,MAAK,EAAE,CAAC;QACjB;AACA,QAAA,MAAM,cAAc,GAAG,iBAAiB,EAAE;QAC1C,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAI;AAC/B,YAAA,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;AACjC,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAK;YACV,cAAc,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAI;AAC/B,gBAAA,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC;AACpC,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AACH,IAAA,CAAC,EACD,CAAC,iBAAiB,CAAC,CACpB;IAED,OAAO,oBAAoB,CAAC,SAAS,EAAE,WAAW,EAAE,iBAAiB,CAAC;AACxE;;;;"}
@@ -88,7 +88,7 @@ const WEEKDAY_FORMATS = {
88
88
  'id-id': { replacer: (base) => base.replace(/^([A-Za-z]{3}), (.+)$/, '$2 ($1)') },
89
89
  ko: { replacer: (base) => base.replace(/(.+?)([월화수목금토일])$/, '$1 ($2)') },
90
90
  pt: { replacer: (base) => base.replace(/^([A-Za-z]{3}\.), (.+)$/, '$2 ($1)') },
91
- vi: { replacer: (base) => base.replace(/^([A-Za-z]{2} \d+), (.+)$/, '$2 ($1)') },
91
+ vi: { replacer: (base) => base.replace(/^(\S+ \d+), (.+)$/, '$2 ($1)') },
92
92
  'zh-cn': { replacer: (base) => base.replace(/(.+?)\s*([周][一二三四五六日])$/, '$1($2)') },
93
93
  'zh-tw': { replacer: (base) => base.replace(/(.+?)\s*([週][一二三四五六日])$/, '$1($2)') },
94
94
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useIntl.cjs","sources":["../../src/intl/useIntl.ts"],"sourcesContent":["'use client'\n\nimport { useCallback } from 'react'\nimport {\n type PrimitiveType,\n type MessageDescriptor as ReactIntlMessageDescriptor,\n useIntl as useReactIntl,\n} from 'react-intl'\n\nimport { useAvailableLocales } from './IntlProvider'\nimport * as locales from './locales'\n\nimport type { FormatXMLElementFn, Options as IntlMessageFormatOptions } from 'intl-messageformat'\n\ntype Messages = Record<keyof typeof locales.ja, string>\n\ntype MessageDescriptor<T extends keyof Messages> = Omit<ReactIntlMessageDescriptor, 'id'> & {\n id: T\n defaultText: (typeof locales.ja)[T]\n}\n\ntype DatePart = 'year' | 'month' | 'day' | 'weekday'\n\nexport type FormatDateProps = {\n /**\n * フォーマット対象の日付\n */\n date: Date\n\n /**\n * 表示する日付のパーツ。指定しない場合は全て表示\n */\n parts?: readonly [DatePart, ...DatePart[]]\n\n /**\n * フォーマットオプション\n */\n options?: Intl.DateTimeFormatOptions & {\n /**\n * 日本語ロケールでスラッシュを無効化し、月を長形式で表示する\n * @example\n * // 通常: \"2025/01\"\n * // disableSlashInJa: true の場合: \"2025年1月\"\n */\n disableSlashInJa?: boolean\n\n /**\n * 最初の文字を大文字化する\n * @example\n * // 通常: \"seg.\" (pt)\n * // capitalizeFirstLetter: true の場合: \"Seg.\" (pt)\n */\n capitalizeFirstLetter?: boolean\n }\n}\n\n/**\n * useIntlフックの戻り値の型定義\n */\nexport type UseIntlReturn = {\n /** 利用可能なロケールのリスト */\n availableLocales: string[]\n /** メッセージのローカライズ関数 */\n localize: <T extends keyof Messages>(\n descriptor: MessageDescriptor<T>,\n values?: Record<string, PrimitiveType | FormatXMLElementFn<string, string>>,\n opts?: IntlMessageFormatOptions,\n ) => string\n\n /**\n * 日付をロケールに応じた形式でフォーマットする関数\n * @param props - フォーマットのオプション\n * @param props.date - フォーマット対象の日付\n * @param props.parts - 表示する日付のパーツ。デフォルトは ['year', 'month', 'day', 'weekday']\n * @param props.options - フォーマットオプション\n * @param props.options.disableSlashInJa - 日本語ロケールでスラッシュを無効化し、月を長形式で表示する\n * @param props.options.capitalizeFirstLetter - 最初の文字を大文字化する\n * @returns フォーマットされた日付文字列\n * @example\n * // 基本的な使用法(ロケールのデフォルト形式:曜日なし)\n * formatDate({ date: new Date() }) // \"2024/01/15\" (ja)\n *\n * // 日付を曜日ありで表示\n * formatDate({ date: new Date(), parts: ['year', 'month', 'day', 'weekday'] }) // \"2024/01/15(水)\" (ja)\n *\n * // 特定のフィールドのみ表示\n * formatDate({ date: new Date(), parts: ['year', 'month'] }) // \"2024/01\" (ja)\n * formatDate({ date: new Date(), parts: ['weekday'] }) // \"月\" (ja)\n *\n * // 日本語でスラッシュを無効化(月を長形式で表示)\n * formatDate({ date: new Date(), parts: ['year', 'month'], options: { disableSlashInJa: true } }) // \"2024年1月\" (ja)\n *\n * // 最初の文字を大文字化\n * formatDate({ date: new Date(), parts: ['weekday'], options: { capitalizeFirstLetter: true } }) // \"Seg.\" (pt)(指定しなければ \"seg.\")\n */\n formatDate(props: FormatDateProps): string\n\n /**\n * 現在のロケールに基づいて週の開始日を決定する関数\n * Intl.Locale.prototype.getWeekInfo()の動作を再現\n * getWeekInfo()を使わない理由は、Firefoxでは動作しないため\n *\n * @returns 週の開始日(0 = 日曜日, 1 = 月曜日, ..., 6 = 土曜日)\n */\n getWeekStartDay: () => number\n /** 現在のロケール */\n locale: keyof typeof locales\n}\n\nconst WEEK_START_DAYS = {\n SUNDAY: 0,\n MONDAY: 1,\n TUESDAY: 2,\n WEDNESDAY: 3,\n THURSDAY: 4,\n FRIDAY: 5,\n SATURDAY: 6,\n} as const\n\nconst DATE_FORMATS: Record<\n keyof typeof locales,\n Intl.DateTimeFormatOptions & { weekStartDay: number }\n> = {\n // localeがja, ja-easyの場合、フォーマットを YYYY/MM/DD 形式にする\n // 曜日が含まれている場合は括弧を追加する\n // 参考: https://smarthr.design/products/contents/idiomatic-usage/count/#h2-3\n ja: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'ja-easy': {\n year: 'numeric',\n month: 'long',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'en-us': {\n year: 'numeric',\n month: 'short',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'id-id': {\n year: 'numeric',\n month: 'short',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.MONDAY,\n },\n ko: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n pt: {\n year: 'numeric',\n month: 'short',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.MONDAY,\n },\n vi: {\n year: 'numeric',\n month: 'long',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.MONDAY,\n },\n 'zh-cn': {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'zh-tw': {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n} as const\n\n/**\n * 各ロケールの括弧設定マップ\n * ロケールに応じて適切な括弧スタイル(半角/全角)と配置を定義\n */\nconst WEEKDAY_FORMATS: Record<keyof typeof locales, { replacer: (base: string) => string }> = {\n ja: { replacer: (base) => base.replace(/(.+?)\\(([月火水木金土日])\\)$/, '$1($2)') },\n 'ja-easy': { replacer: (base) => base.replace(/(.+?)\\(([月火水木金土日])\\)$/, '$1($2)') },\n 'en-us': { replacer: (base) => base.replace(/^([A-Za-z]{3}), (.+)$/, '$2 ($1)') },\n 'id-id': { replacer: (base) => base.replace(/^([A-Za-z]{3}), (.+)$/, '$2 ($1)') },\n ko: { replacer: (base) => base.replace(/(.+?)([월화수목금토일])$/, '$1 ($2)') },\n pt: { replacer: (base) => base.replace(/^([A-Za-z]{3}\\.), (.+)$/, '$2 ($1)') },\n vi: { replacer: (base) => base.replace(/^([A-Za-z]{2} \\d+), (.+)$/, '$2 ($1)') },\n 'zh-cn': { replacer: (base) => base.replace(/(.+?)\\s*([周][一二三四五六日])$/, '$1($2)') },\n 'zh-tw': { replacer: (base) => base.replace(/(.+?)\\s*([週][一二三四五六日])$/, '$1($2)') },\n} as const\n\nconst isValidLocale = (locale: string): locale is keyof typeof locales => locale in locales\n\nconst applyCapitalization = (text: string, shouldCapitalize: boolean) =>\n shouldCapitalize ? text.charAt(0).toUpperCase() + text.slice(1) : text\n\n/**\n * 多言語化機能を提供するフック\n * react-intlをベースにした国際化機能を提供します\n *\n * @returns {UseIntlReturn} 国際化に関連する関数とプロパティを含むオブジェクト\n * @example\n * // 基本的な使用法(メッセージのローカライズ)\n * const Component = () => {\n * const { localize } = useIntl()\n * return <span>{localize({ id: 'smarthr-ui/common/language', defaultText: '日本語' })}</span>\n * }\n *\n * @example\n * // 日付のフォーマット\n * const Component = () => {\n * const { formatDate } = useIntl()\n * return <span>{formatDate({ date: new Date() })}</span> // \"2024/01/15\" (ja)\n * }\n *\n * @example\n * // 利用可能なロケールの確認\n * const Component = () => {\n * const { availableLocales, locale } = useIntl()\n * return <div>現在のロケール: {locale}</div>\n * }\n */\nexport const useIntl = (): UseIntlReturn => {\n const intl = useReactIntl()\n const locale = isValidLocale(intl.locale) ? intl.locale : 'ja'\n const availableLocales = useAvailableLocales()\n\n const localize = useCallback(\n <T extends keyof Messages>(\n descriptor: MessageDescriptor<T>,\n values?: Record<string, PrimitiveType | FormatXMLElementFn<string, string>>,\n opts?: IntlMessageFormatOptions,\n ): string =>\n intl.formatMessage({ ...descriptor, defaultMessage: descriptor.defaultText }, values, opts),\n [intl],\n )\n\n const formatDate = useCallback(\n ({ date, parts = ['year', 'month', 'day'], options }: FormatDateProps): string => {\n const {\n disableSlashInJa = false,\n capitalizeFirstLetter = false,\n year,\n month,\n day,\n weekday,\n ...rest\n } = options || {}\n\n // パーツの存在を事前に計算\n const hasPart = parts.reduce(\n (prev, part) => {\n prev[part] = true\n return prev\n },\n { year: false, month: false, day: false, weekday: false } as {\n year: boolean\n month: boolean\n day: boolean\n weekday: boolean\n },\n )\n\n // ロケールのデフォルト形式を取得\n const actualFormatOptions: Intl.DateTimeFormatOptions = {\n ...rest,\n year: year ?? (hasPart.year ? DATE_FORMATS[locale].year : undefined),\n month:\n month ??\n (hasPart.month\n ? disableSlashInJa && locale === 'ja'\n ? 'long'\n : DATE_FORMATS[locale].month\n : undefined),\n day: day ?? (hasPart.day ? DATE_FORMATS[locale].day : undefined),\n weekday: weekday ?? (hasPart.weekday ? DATE_FORMATS[locale].weekday : undefined),\n }\n\n const formattedDate = intl.formatDate(date, actualFormatOptions)\n\n // 曜日をロケールに応じてフォーマットする\n let formattedResult = formattedDate\n const config = WEEKDAY_FORMATS[locale]\n // 曜日が含まれており、かつ曜日のみの表示でない場合は括弧を追加\n // 例: \"2025/01/01(水)\" → 括弧あり, \"水\" → 括弧なし\n if (config && hasPart.weekday && (parts.length !== 1 || parts[0] !== 'weekday')) {\n formattedResult = config.replacer(formattedDate)\n }\n\n return applyCapitalization(formattedResult, capitalizeFirstLetter)\n },\n [intl, locale],\n )\n\n const getWeekStartDay = (): number => DATE_FORMATS[locale].weekStartDay\n\n return { availableLocales, localize, formatDate, locale, getWeekStartDay }\n}\n"],"names":[],"mappings":";;;;;;;;AA6GA;AACE;AACA;AAQF;;;;AAOE;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;;AAGH;;;AAGG;AACH;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGF;AAEA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACI;AACL;AACA;AACA;AAEA;;;;;AAyBQ;AACA;AACF;;AAUF;AACE;;AAEA;;AAGI;AACE;AACA;;;;;;;;AAUR;;;;AAIE;;AAGF;AACF;;;AAOJ;;"}
1
+ {"version":3,"file":"useIntl.cjs","sources":["../../src/intl/useIntl.ts"],"sourcesContent":["'use client'\n\nimport { useCallback } from 'react'\nimport {\n type PrimitiveType,\n type MessageDescriptor as ReactIntlMessageDescriptor,\n useIntl as useReactIntl,\n} from 'react-intl'\n\nimport { useAvailableLocales } from './IntlProvider'\nimport * as locales from './locales'\n\nimport type { FormatXMLElementFn, Options as IntlMessageFormatOptions } from 'intl-messageformat'\n\ntype Messages = Record<keyof typeof locales.ja, string>\n\ntype MessageDescriptor<T extends keyof Messages> = Omit<ReactIntlMessageDescriptor, 'id'> & {\n id: T\n defaultText: (typeof locales.ja)[T]\n}\n\ntype DatePart = 'year' | 'month' | 'day' | 'weekday'\n\nexport type FormatDateProps = {\n /**\n * フォーマット対象の日付\n */\n date: Date\n\n /**\n * 表示する日付のパーツ。指定しない場合は全て表示\n */\n parts?: readonly [DatePart, ...DatePart[]]\n\n /**\n * フォーマットオプション\n */\n options?: Intl.DateTimeFormatOptions & {\n /**\n * 日本語ロケールでスラッシュを無効化し、月を長形式で表示する\n * @example\n * // 通常: \"2025/01\"\n * // disableSlashInJa: true の場合: \"2025年1月\"\n */\n disableSlashInJa?: boolean\n\n /**\n * 最初の文字を大文字化する\n * @example\n * // 通常: \"seg.\" (pt)\n * // capitalizeFirstLetter: true の場合: \"Seg.\" (pt)\n */\n capitalizeFirstLetter?: boolean\n }\n}\n\n/**\n * useIntlフックの戻り値の型定義\n */\nexport type UseIntlReturn = {\n /** 利用可能なロケールのリスト */\n availableLocales: string[]\n /** メッセージのローカライズ関数 */\n localize: <T extends keyof Messages>(\n descriptor: MessageDescriptor<T>,\n values?: Record<string, PrimitiveType | FormatXMLElementFn<string, string>>,\n opts?: IntlMessageFormatOptions,\n ) => string\n\n /**\n * 日付をロケールに応じた形式でフォーマットする関数\n * @param props - フォーマットのオプション\n * @param props.date - フォーマット対象の日付\n * @param props.parts - 表示する日付のパーツ。デフォルトは ['year', 'month', 'day', 'weekday']\n * @param props.options - フォーマットオプション\n * @param props.options.disableSlashInJa - 日本語ロケールでスラッシュを無効化し、月を長形式で表示する\n * @param props.options.capitalizeFirstLetter - 最初の文字を大文字化する\n * @returns フォーマットされた日付文字列\n * @example\n * // 基本的な使用法(ロケールのデフォルト形式:曜日なし)\n * formatDate({ date: new Date() }) // \"2024/01/15\" (ja)\n *\n * // 日付を曜日ありで表示\n * formatDate({ date: new Date(), parts: ['year', 'month', 'day', 'weekday'] }) // \"2024/01/15(水)\" (ja)\n *\n * // 特定のフィールドのみ表示\n * formatDate({ date: new Date(), parts: ['year', 'month'] }) // \"2024/01\" (ja)\n * formatDate({ date: new Date(), parts: ['weekday'] }) // \"月\" (ja)\n *\n * // 日本語でスラッシュを無効化(月を長形式で表示)\n * formatDate({ date: new Date(), parts: ['year', 'month'], options: { disableSlashInJa: true } }) // \"2024年1月\" (ja)\n *\n * // 最初の文字を大文字化\n * formatDate({ date: new Date(), parts: ['weekday'], options: { capitalizeFirstLetter: true } }) // \"Seg.\" (pt)(指定しなければ \"seg.\")\n */\n formatDate(props: FormatDateProps): string\n\n /**\n * 現在のロケールに基づいて週の開始日を決定する関数\n * Intl.Locale.prototype.getWeekInfo()の動作を再現\n * getWeekInfo()を使わない理由は、Firefoxでは動作しないため\n *\n * @returns 週の開始日(0 = 日曜日, 1 = 月曜日, ..., 6 = 土曜日)\n */\n getWeekStartDay: () => number\n /** 現在のロケール */\n locale: keyof typeof locales\n}\n\nconst WEEK_START_DAYS = {\n SUNDAY: 0,\n MONDAY: 1,\n TUESDAY: 2,\n WEDNESDAY: 3,\n THURSDAY: 4,\n FRIDAY: 5,\n SATURDAY: 6,\n} as const\n\nconst DATE_FORMATS: Record<\n keyof typeof locales,\n Intl.DateTimeFormatOptions & { weekStartDay: number }\n> = {\n // localeがja, ja-easyの場合、フォーマットを YYYY/MM/DD 形式にする\n // 曜日が含まれている場合は括弧を追加する\n // 参考: https://smarthr.design/products/contents/idiomatic-usage/count/#h2-3\n ja: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'ja-easy': {\n year: 'numeric',\n month: 'long',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'en-us': {\n year: 'numeric',\n month: 'short',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'id-id': {\n year: 'numeric',\n month: 'short',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.MONDAY,\n },\n ko: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n pt: {\n year: 'numeric',\n month: 'short',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.MONDAY,\n },\n vi: {\n year: 'numeric',\n month: 'long',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.MONDAY,\n },\n 'zh-cn': {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'zh-tw': {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n} as const\n\n/**\n * 各ロケールの括弧設定マップ\n * ロケールに応じて適切な括弧スタイル(半角/全角)と配置を定義\n */\nconst WEEKDAY_FORMATS: Record<keyof typeof locales, { replacer: (base: string) => string }> = {\n ja: { replacer: (base) => base.replace(/(.+?)\\(([月火水木金土日])\\)$/, '$1($2)') },\n 'ja-easy': { replacer: (base) => base.replace(/(.+?)\\(([月火水木金土日])\\)$/, '$1($2)') },\n 'en-us': { replacer: (base) => base.replace(/^([A-Za-z]{3}), (.+)$/, '$2 ($1)') },\n 'id-id': { replacer: (base) => base.replace(/^([A-Za-z]{3}), (.+)$/, '$2 ($1)') },\n ko: { replacer: (base) => base.replace(/(.+?)([월화수목금토일])$/, '$1 ($2)') },\n pt: { replacer: (base) => base.replace(/^([A-Za-z]{3}\\.), (.+)$/, '$2 ($1)') },\n vi: { replacer: (base) => base.replace(/^(\\S+ \\d+), (.+)$/, '$2 ($1)') },\n 'zh-cn': { replacer: (base) => base.replace(/(.+?)\\s*([周][一二三四五六日])$/, '$1($2)') },\n 'zh-tw': { replacer: (base) => base.replace(/(.+?)\\s*([週][一二三四五六日])$/, '$1($2)') },\n} as const\n\nconst isValidLocale = (locale: string): locale is keyof typeof locales => locale in locales\n\nconst applyCapitalization = (text: string, shouldCapitalize: boolean) =>\n shouldCapitalize ? text.charAt(0).toUpperCase() + text.slice(1) : text\n\n/**\n * 多言語化機能を提供するフック\n * react-intlをベースにした国際化機能を提供します\n *\n * @returns {UseIntlReturn} 国際化に関連する関数とプロパティを含むオブジェクト\n * @example\n * // 基本的な使用法(メッセージのローカライズ)\n * const Component = () => {\n * const { localize } = useIntl()\n * return <span>{localize({ id: 'smarthr-ui/common/language', defaultText: '日本語' })}</span>\n * }\n *\n * @example\n * // 日付のフォーマット\n * const Component = () => {\n * const { formatDate } = useIntl()\n * return <span>{formatDate({ date: new Date() })}</span> // \"2024/01/15\" (ja)\n * }\n *\n * @example\n * // 利用可能なロケールの確認\n * const Component = () => {\n * const { availableLocales, locale } = useIntl()\n * return <div>現在のロケール: {locale}</div>\n * }\n */\nexport const useIntl = (): UseIntlReturn => {\n const intl = useReactIntl()\n const locale = isValidLocale(intl.locale) ? intl.locale : 'ja'\n const availableLocales = useAvailableLocales()\n\n const localize = useCallback(\n <T extends keyof Messages>(\n descriptor: MessageDescriptor<T>,\n values?: Record<string, PrimitiveType | FormatXMLElementFn<string, string>>,\n opts?: IntlMessageFormatOptions,\n ): string =>\n intl.formatMessage({ ...descriptor, defaultMessage: descriptor.defaultText }, values, opts),\n [intl],\n )\n\n const formatDate = useCallback(\n ({ date, parts = ['year', 'month', 'day'], options }: FormatDateProps): string => {\n const {\n disableSlashInJa = false,\n capitalizeFirstLetter = false,\n year,\n month,\n day,\n weekday,\n ...rest\n } = options || {}\n\n // パーツの存在を事前に計算\n const hasPart = parts.reduce(\n (prev, part) => {\n prev[part] = true\n return prev\n },\n { year: false, month: false, day: false, weekday: false } as {\n year: boolean\n month: boolean\n day: boolean\n weekday: boolean\n },\n )\n\n // ロケールのデフォルト形式を取得\n const actualFormatOptions: Intl.DateTimeFormatOptions = {\n ...rest,\n year: year ?? (hasPart.year ? DATE_FORMATS[locale].year : undefined),\n month:\n month ??\n (hasPart.month\n ? disableSlashInJa && locale === 'ja'\n ? 'long'\n : DATE_FORMATS[locale].month\n : undefined),\n day: day ?? (hasPart.day ? DATE_FORMATS[locale].day : undefined),\n weekday: weekday ?? (hasPart.weekday ? DATE_FORMATS[locale].weekday : undefined),\n }\n\n const formattedDate = intl.formatDate(date, actualFormatOptions)\n\n // 曜日をロケールに応じてフォーマットする\n let formattedResult = formattedDate\n const config = WEEKDAY_FORMATS[locale]\n // 曜日が含まれており、かつ曜日のみの表示でない場合は括弧を追加\n // 例: \"2025/01/01(水)\" → 括弧あり, \"水\" → 括弧なし\n if (config && hasPart.weekday && (parts.length !== 1 || parts[0] !== 'weekday')) {\n formattedResult = config.replacer(formattedDate)\n }\n\n return applyCapitalization(formattedResult, capitalizeFirstLetter)\n },\n [intl, locale],\n )\n\n const getWeekStartDay = (): number => DATE_FORMATS[locale].weekStartDay\n\n return { availableLocales, localize, formatDate, locale, getWeekStartDay }\n}\n"],"names":[],"mappings":";;;;;;;;AA6GA;AACE;AACA;AAQF;;;;AAOE;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;;AAGH;;;AAGG;AACH;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGF;AAEA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACI;AACL;AACA;AACA;AAEA;;;;;AAyBQ;AACA;AACF;;AAUF;AACE;;AAEA;;AAGI;AACE;AACA;;;;;;;;AAUR;;;;AAIE;;AAGF;AACF;;;AAOJ;;"}
@@ -86,7 +86,7 @@ const WEEKDAY_FORMATS = {
86
86
  'id-id': { replacer: (base) => base.replace(/^([A-Za-z]{3}), (.+)$/, '$2 ($1)') },
87
87
  ko: { replacer: (base) => base.replace(/(.+?)([월화수목금토일])$/, '$1 ($2)') },
88
88
  pt: { replacer: (base) => base.replace(/^([A-Za-z]{3}\.), (.+)$/, '$2 ($1)') },
89
- vi: { replacer: (base) => base.replace(/^([A-Za-z]{2} \d+), (.+)$/, '$2 ($1)') },
89
+ vi: { replacer: (base) => base.replace(/^(\S+ \d+), (.+)$/, '$2 ($1)') },
90
90
  'zh-cn': { replacer: (base) => base.replace(/(.+?)\s*([周][一二三四五六日])$/, '$1($2)') },
91
91
  'zh-tw': { replacer: (base) => base.replace(/(.+?)\s*([週][一二三四五六日])$/, '$1($2)') },
92
92
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useIntl.js","sources":["../../src/intl/useIntl.ts"],"sourcesContent":["'use client'\n\nimport { useCallback } from 'react'\nimport {\n type PrimitiveType,\n type MessageDescriptor as ReactIntlMessageDescriptor,\n useIntl as useReactIntl,\n} from 'react-intl'\n\nimport { useAvailableLocales } from './IntlProvider'\nimport * as locales from './locales'\n\nimport type { FormatXMLElementFn, Options as IntlMessageFormatOptions } from 'intl-messageformat'\n\ntype Messages = Record<keyof typeof locales.ja, string>\n\ntype MessageDescriptor<T extends keyof Messages> = Omit<ReactIntlMessageDescriptor, 'id'> & {\n id: T\n defaultText: (typeof locales.ja)[T]\n}\n\ntype DatePart = 'year' | 'month' | 'day' | 'weekday'\n\nexport type FormatDateProps = {\n /**\n * フォーマット対象の日付\n */\n date: Date\n\n /**\n * 表示する日付のパーツ。指定しない場合は全て表示\n */\n parts?: readonly [DatePart, ...DatePart[]]\n\n /**\n * フォーマットオプション\n */\n options?: Intl.DateTimeFormatOptions & {\n /**\n * 日本語ロケールでスラッシュを無効化し、月を長形式で表示する\n * @example\n * // 通常: \"2025/01\"\n * // disableSlashInJa: true の場合: \"2025年1月\"\n */\n disableSlashInJa?: boolean\n\n /**\n * 最初の文字を大文字化する\n * @example\n * // 通常: \"seg.\" (pt)\n * // capitalizeFirstLetter: true の場合: \"Seg.\" (pt)\n */\n capitalizeFirstLetter?: boolean\n }\n}\n\n/**\n * useIntlフックの戻り値の型定義\n */\nexport type UseIntlReturn = {\n /** 利用可能なロケールのリスト */\n availableLocales: string[]\n /** メッセージのローカライズ関数 */\n localize: <T extends keyof Messages>(\n descriptor: MessageDescriptor<T>,\n values?: Record<string, PrimitiveType | FormatXMLElementFn<string, string>>,\n opts?: IntlMessageFormatOptions,\n ) => string\n\n /**\n * 日付をロケールに応じた形式でフォーマットする関数\n * @param props - フォーマットのオプション\n * @param props.date - フォーマット対象の日付\n * @param props.parts - 表示する日付のパーツ。デフォルトは ['year', 'month', 'day', 'weekday']\n * @param props.options - フォーマットオプション\n * @param props.options.disableSlashInJa - 日本語ロケールでスラッシュを無効化し、月を長形式で表示する\n * @param props.options.capitalizeFirstLetter - 最初の文字を大文字化する\n * @returns フォーマットされた日付文字列\n * @example\n * // 基本的な使用法(ロケールのデフォルト形式:曜日なし)\n * formatDate({ date: new Date() }) // \"2024/01/15\" (ja)\n *\n * // 日付を曜日ありで表示\n * formatDate({ date: new Date(), parts: ['year', 'month', 'day', 'weekday'] }) // \"2024/01/15(水)\" (ja)\n *\n * // 特定のフィールドのみ表示\n * formatDate({ date: new Date(), parts: ['year', 'month'] }) // \"2024/01\" (ja)\n * formatDate({ date: new Date(), parts: ['weekday'] }) // \"月\" (ja)\n *\n * // 日本語でスラッシュを無効化(月を長形式で表示)\n * formatDate({ date: new Date(), parts: ['year', 'month'], options: { disableSlashInJa: true } }) // \"2024年1月\" (ja)\n *\n * // 最初の文字を大文字化\n * formatDate({ date: new Date(), parts: ['weekday'], options: { capitalizeFirstLetter: true } }) // \"Seg.\" (pt)(指定しなければ \"seg.\")\n */\n formatDate(props: FormatDateProps): string\n\n /**\n * 現在のロケールに基づいて週の開始日を決定する関数\n * Intl.Locale.prototype.getWeekInfo()の動作を再現\n * getWeekInfo()を使わない理由は、Firefoxでは動作しないため\n *\n * @returns 週の開始日(0 = 日曜日, 1 = 月曜日, ..., 6 = 土曜日)\n */\n getWeekStartDay: () => number\n /** 現在のロケール */\n locale: keyof typeof locales\n}\n\nconst WEEK_START_DAYS = {\n SUNDAY: 0,\n MONDAY: 1,\n TUESDAY: 2,\n WEDNESDAY: 3,\n THURSDAY: 4,\n FRIDAY: 5,\n SATURDAY: 6,\n} as const\n\nconst DATE_FORMATS: Record<\n keyof typeof locales,\n Intl.DateTimeFormatOptions & { weekStartDay: number }\n> = {\n // localeがja, ja-easyの場合、フォーマットを YYYY/MM/DD 形式にする\n // 曜日が含まれている場合は括弧を追加する\n // 参考: https://smarthr.design/products/contents/idiomatic-usage/count/#h2-3\n ja: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'ja-easy': {\n year: 'numeric',\n month: 'long',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'en-us': {\n year: 'numeric',\n month: 'short',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'id-id': {\n year: 'numeric',\n month: 'short',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.MONDAY,\n },\n ko: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n pt: {\n year: 'numeric',\n month: 'short',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.MONDAY,\n },\n vi: {\n year: 'numeric',\n month: 'long',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.MONDAY,\n },\n 'zh-cn': {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'zh-tw': {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n} as const\n\n/**\n * 各ロケールの括弧設定マップ\n * ロケールに応じて適切な括弧スタイル(半角/全角)と配置を定義\n */\nconst WEEKDAY_FORMATS: Record<keyof typeof locales, { replacer: (base: string) => string }> = {\n ja: { replacer: (base) => base.replace(/(.+?)\\(([月火水木金土日])\\)$/, '$1($2)') },\n 'ja-easy': { replacer: (base) => base.replace(/(.+?)\\(([月火水木金土日])\\)$/, '$1($2)') },\n 'en-us': { replacer: (base) => base.replace(/^([A-Za-z]{3}), (.+)$/, '$2 ($1)') },\n 'id-id': { replacer: (base) => base.replace(/^([A-Za-z]{3}), (.+)$/, '$2 ($1)') },\n ko: { replacer: (base) => base.replace(/(.+?)([월화수목금토일])$/, '$1 ($2)') },\n pt: { replacer: (base) => base.replace(/^([A-Za-z]{3}\\.), (.+)$/, '$2 ($1)') },\n vi: { replacer: (base) => base.replace(/^([A-Za-z]{2} \\d+), (.+)$/, '$2 ($1)') },\n 'zh-cn': { replacer: (base) => base.replace(/(.+?)\\s*([周][一二三四五六日])$/, '$1($2)') },\n 'zh-tw': { replacer: (base) => base.replace(/(.+?)\\s*([週][一二三四五六日])$/, '$1($2)') },\n} as const\n\nconst isValidLocale = (locale: string): locale is keyof typeof locales => locale in locales\n\nconst applyCapitalization = (text: string, shouldCapitalize: boolean) =>\n shouldCapitalize ? text.charAt(0).toUpperCase() + text.slice(1) : text\n\n/**\n * 多言語化機能を提供するフック\n * react-intlをベースにした国際化機能を提供します\n *\n * @returns {UseIntlReturn} 国際化に関連する関数とプロパティを含むオブジェクト\n * @example\n * // 基本的な使用法(メッセージのローカライズ)\n * const Component = () => {\n * const { localize } = useIntl()\n * return <span>{localize({ id: 'smarthr-ui/common/language', defaultText: '日本語' })}</span>\n * }\n *\n * @example\n * // 日付のフォーマット\n * const Component = () => {\n * const { formatDate } = useIntl()\n * return <span>{formatDate({ date: new Date() })}</span> // \"2024/01/15\" (ja)\n * }\n *\n * @example\n * // 利用可能なロケールの確認\n * const Component = () => {\n * const { availableLocales, locale } = useIntl()\n * return <div>現在のロケール: {locale}</div>\n * }\n */\nexport const useIntl = (): UseIntlReturn => {\n const intl = useReactIntl()\n const locale = isValidLocale(intl.locale) ? intl.locale : 'ja'\n const availableLocales = useAvailableLocales()\n\n const localize = useCallback(\n <T extends keyof Messages>(\n descriptor: MessageDescriptor<T>,\n values?: Record<string, PrimitiveType | FormatXMLElementFn<string, string>>,\n opts?: IntlMessageFormatOptions,\n ): string =>\n intl.formatMessage({ ...descriptor, defaultMessage: descriptor.defaultText }, values, opts),\n [intl],\n )\n\n const formatDate = useCallback(\n ({ date, parts = ['year', 'month', 'day'], options }: FormatDateProps): string => {\n const {\n disableSlashInJa = false,\n capitalizeFirstLetter = false,\n year,\n month,\n day,\n weekday,\n ...rest\n } = options || {}\n\n // パーツの存在を事前に計算\n const hasPart = parts.reduce(\n (prev, part) => {\n prev[part] = true\n return prev\n },\n { year: false, month: false, day: false, weekday: false } as {\n year: boolean\n month: boolean\n day: boolean\n weekday: boolean\n },\n )\n\n // ロケールのデフォルト形式を取得\n const actualFormatOptions: Intl.DateTimeFormatOptions = {\n ...rest,\n year: year ?? (hasPart.year ? DATE_FORMATS[locale].year : undefined),\n month:\n month ??\n (hasPart.month\n ? disableSlashInJa && locale === 'ja'\n ? 'long'\n : DATE_FORMATS[locale].month\n : undefined),\n day: day ?? (hasPart.day ? DATE_FORMATS[locale].day : undefined),\n weekday: weekday ?? (hasPart.weekday ? DATE_FORMATS[locale].weekday : undefined),\n }\n\n const formattedDate = intl.formatDate(date, actualFormatOptions)\n\n // 曜日をロケールに応じてフォーマットする\n let formattedResult = formattedDate\n const config = WEEKDAY_FORMATS[locale]\n // 曜日が含まれており、かつ曜日のみの表示でない場合は括弧を追加\n // 例: \"2025/01/01(水)\" → 括弧あり, \"水\" → 括弧なし\n if (config && hasPart.weekday && (parts.length !== 1 || parts[0] !== 'weekday')) {\n formattedResult = config.replacer(formattedDate)\n }\n\n return applyCapitalization(formattedResult, capitalizeFirstLetter)\n },\n [intl, locale],\n )\n\n const getWeekStartDay = (): number => DATE_FORMATS[locale].weekStartDay\n\n return { availableLocales, localize, formatDate, locale, getWeekStartDay }\n}\n"],"names":[],"mappings":";;;;;;AA6GA;AACE;AACA;AAQF;;;;AAOE;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;;AAGH;;;AAGG;AACH;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGF;AAEA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACI;AACL;AACA;AACA;AAEA;;;;;AAyBQ;AACA;AACF;;AAUF;AACE;;AAEA;;AAGI;AACE;AACA;;;;;;;;AAUR;;;;AAIE;;AAGF;AACF;;;AAOJ;;"}
1
+ {"version":3,"file":"useIntl.js","sources":["../../src/intl/useIntl.ts"],"sourcesContent":["'use client'\n\nimport { useCallback } from 'react'\nimport {\n type PrimitiveType,\n type MessageDescriptor as ReactIntlMessageDescriptor,\n useIntl as useReactIntl,\n} from 'react-intl'\n\nimport { useAvailableLocales } from './IntlProvider'\nimport * as locales from './locales'\n\nimport type { FormatXMLElementFn, Options as IntlMessageFormatOptions } from 'intl-messageformat'\n\ntype Messages = Record<keyof typeof locales.ja, string>\n\ntype MessageDescriptor<T extends keyof Messages> = Omit<ReactIntlMessageDescriptor, 'id'> & {\n id: T\n defaultText: (typeof locales.ja)[T]\n}\n\ntype DatePart = 'year' | 'month' | 'day' | 'weekday'\n\nexport type FormatDateProps = {\n /**\n * フォーマット対象の日付\n */\n date: Date\n\n /**\n * 表示する日付のパーツ。指定しない場合は全て表示\n */\n parts?: readonly [DatePart, ...DatePart[]]\n\n /**\n * フォーマットオプション\n */\n options?: Intl.DateTimeFormatOptions & {\n /**\n * 日本語ロケールでスラッシュを無効化し、月を長形式で表示する\n * @example\n * // 通常: \"2025/01\"\n * // disableSlashInJa: true の場合: \"2025年1月\"\n */\n disableSlashInJa?: boolean\n\n /**\n * 最初の文字を大文字化する\n * @example\n * // 通常: \"seg.\" (pt)\n * // capitalizeFirstLetter: true の場合: \"Seg.\" (pt)\n */\n capitalizeFirstLetter?: boolean\n }\n}\n\n/**\n * useIntlフックの戻り値の型定義\n */\nexport type UseIntlReturn = {\n /** 利用可能なロケールのリスト */\n availableLocales: string[]\n /** メッセージのローカライズ関数 */\n localize: <T extends keyof Messages>(\n descriptor: MessageDescriptor<T>,\n values?: Record<string, PrimitiveType | FormatXMLElementFn<string, string>>,\n opts?: IntlMessageFormatOptions,\n ) => string\n\n /**\n * 日付をロケールに応じた形式でフォーマットする関数\n * @param props - フォーマットのオプション\n * @param props.date - フォーマット対象の日付\n * @param props.parts - 表示する日付のパーツ。デフォルトは ['year', 'month', 'day', 'weekday']\n * @param props.options - フォーマットオプション\n * @param props.options.disableSlashInJa - 日本語ロケールでスラッシュを無効化し、月を長形式で表示する\n * @param props.options.capitalizeFirstLetter - 最初の文字を大文字化する\n * @returns フォーマットされた日付文字列\n * @example\n * // 基本的な使用法(ロケールのデフォルト形式:曜日なし)\n * formatDate({ date: new Date() }) // \"2024/01/15\" (ja)\n *\n * // 日付を曜日ありで表示\n * formatDate({ date: new Date(), parts: ['year', 'month', 'day', 'weekday'] }) // \"2024/01/15(水)\" (ja)\n *\n * // 特定のフィールドのみ表示\n * formatDate({ date: new Date(), parts: ['year', 'month'] }) // \"2024/01\" (ja)\n * formatDate({ date: new Date(), parts: ['weekday'] }) // \"月\" (ja)\n *\n * // 日本語でスラッシュを無効化(月を長形式で表示)\n * formatDate({ date: new Date(), parts: ['year', 'month'], options: { disableSlashInJa: true } }) // \"2024年1月\" (ja)\n *\n * // 最初の文字を大文字化\n * formatDate({ date: new Date(), parts: ['weekday'], options: { capitalizeFirstLetter: true } }) // \"Seg.\" (pt)(指定しなければ \"seg.\")\n */\n formatDate(props: FormatDateProps): string\n\n /**\n * 現在のロケールに基づいて週の開始日を決定する関数\n * Intl.Locale.prototype.getWeekInfo()の動作を再現\n * getWeekInfo()を使わない理由は、Firefoxでは動作しないため\n *\n * @returns 週の開始日(0 = 日曜日, 1 = 月曜日, ..., 6 = 土曜日)\n */\n getWeekStartDay: () => number\n /** 現在のロケール */\n locale: keyof typeof locales\n}\n\nconst WEEK_START_DAYS = {\n SUNDAY: 0,\n MONDAY: 1,\n TUESDAY: 2,\n WEDNESDAY: 3,\n THURSDAY: 4,\n FRIDAY: 5,\n SATURDAY: 6,\n} as const\n\nconst DATE_FORMATS: Record<\n keyof typeof locales,\n Intl.DateTimeFormatOptions & { weekStartDay: number }\n> = {\n // localeがja, ja-easyの場合、フォーマットを YYYY/MM/DD 形式にする\n // 曜日が含まれている場合は括弧を追加する\n // 参考: https://smarthr.design/products/contents/idiomatic-usage/count/#h2-3\n ja: {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'ja-easy': {\n year: 'numeric',\n month: 'long',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'en-us': {\n year: 'numeric',\n month: 'short',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'id-id': {\n year: 'numeric',\n month: 'short',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.MONDAY,\n },\n ko: {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n pt: {\n year: 'numeric',\n month: 'short',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.MONDAY,\n },\n vi: {\n year: 'numeric',\n month: 'long',\n day: '2-digit',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.MONDAY,\n },\n 'zh-cn': {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n 'zh-tw': {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n weekday: 'short',\n weekStartDay: WEEK_START_DAYS.SUNDAY,\n },\n} as const\n\n/**\n * 各ロケールの括弧設定マップ\n * ロケールに応じて適切な括弧スタイル(半角/全角)と配置を定義\n */\nconst WEEKDAY_FORMATS: Record<keyof typeof locales, { replacer: (base: string) => string }> = {\n ja: { replacer: (base) => base.replace(/(.+?)\\(([月火水木金土日])\\)$/, '$1($2)') },\n 'ja-easy': { replacer: (base) => base.replace(/(.+?)\\(([月火水木金土日])\\)$/, '$1($2)') },\n 'en-us': { replacer: (base) => base.replace(/^([A-Za-z]{3}), (.+)$/, '$2 ($1)') },\n 'id-id': { replacer: (base) => base.replace(/^([A-Za-z]{3}), (.+)$/, '$2 ($1)') },\n ko: { replacer: (base) => base.replace(/(.+?)([월화수목금토일])$/, '$1 ($2)') },\n pt: { replacer: (base) => base.replace(/^([A-Za-z]{3}\\.), (.+)$/, '$2 ($1)') },\n vi: { replacer: (base) => base.replace(/^(\\S+ \\d+), (.+)$/, '$2 ($1)') },\n 'zh-cn': { replacer: (base) => base.replace(/(.+?)\\s*([周][一二三四五六日])$/, '$1($2)') },\n 'zh-tw': { replacer: (base) => base.replace(/(.+?)\\s*([週][一二三四五六日])$/, '$1($2)') },\n} as const\n\nconst isValidLocale = (locale: string): locale is keyof typeof locales => locale in locales\n\nconst applyCapitalization = (text: string, shouldCapitalize: boolean) =>\n shouldCapitalize ? text.charAt(0).toUpperCase() + text.slice(1) : text\n\n/**\n * 多言語化機能を提供するフック\n * react-intlをベースにした国際化機能を提供します\n *\n * @returns {UseIntlReturn} 国際化に関連する関数とプロパティを含むオブジェクト\n * @example\n * // 基本的な使用法(メッセージのローカライズ)\n * const Component = () => {\n * const { localize } = useIntl()\n * return <span>{localize({ id: 'smarthr-ui/common/language', defaultText: '日本語' })}</span>\n * }\n *\n * @example\n * // 日付のフォーマット\n * const Component = () => {\n * const { formatDate } = useIntl()\n * return <span>{formatDate({ date: new Date() })}</span> // \"2024/01/15\" (ja)\n * }\n *\n * @example\n * // 利用可能なロケールの確認\n * const Component = () => {\n * const { availableLocales, locale } = useIntl()\n * return <div>現在のロケール: {locale}</div>\n * }\n */\nexport const useIntl = (): UseIntlReturn => {\n const intl = useReactIntl()\n const locale = isValidLocale(intl.locale) ? intl.locale : 'ja'\n const availableLocales = useAvailableLocales()\n\n const localize = useCallback(\n <T extends keyof Messages>(\n descriptor: MessageDescriptor<T>,\n values?: Record<string, PrimitiveType | FormatXMLElementFn<string, string>>,\n opts?: IntlMessageFormatOptions,\n ): string =>\n intl.formatMessage({ ...descriptor, defaultMessage: descriptor.defaultText }, values, opts),\n [intl],\n )\n\n const formatDate = useCallback(\n ({ date, parts = ['year', 'month', 'day'], options }: FormatDateProps): string => {\n const {\n disableSlashInJa = false,\n capitalizeFirstLetter = false,\n year,\n month,\n day,\n weekday,\n ...rest\n } = options || {}\n\n // パーツの存在を事前に計算\n const hasPart = parts.reduce(\n (prev, part) => {\n prev[part] = true\n return prev\n },\n { year: false, month: false, day: false, weekday: false } as {\n year: boolean\n month: boolean\n day: boolean\n weekday: boolean\n },\n )\n\n // ロケールのデフォルト形式を取得\n const actualFormatOptions: Intl.DateTimeFormatOptions = {\n ...rest,\n year: year ?? (hasPart.year ? DATE_FORMATS[locale].year : undefined),\n month:\n month ??\n (hasPart.month\n ? disableSlashInJa && locale === 'ja'\n ? 'long'\n : DATE_FORMATS[locale].month\n : undefined),\n day: day ?? (hasPart.day ? DATE_FORMATS[locale].day : undefined),\n weekday: weekday ?? (hasPart.weekday ? DATE_FORMATS[locale].weekday : undefined),\n }\n\n const formattedDate = intl.formatDate(date, actualFormatOptions)\n\n // 曜日をロケールに応じてフォーマットする\n let formattedResult = formattedDate\n const config = WEEKDAY_FORMATS[locale]\n // 曜日が含まれており、かつ曜日のみの表示でない場合は括弧を追加\n // 例: \"2025/01/01(水)\" → 括弧あり, \"水\" → 括弧なし\n if (config && hasPart.weekday && (parts.length !== 1 || parts[0] !== 'weekday')) {\n formattedResult = config.replacer(formattedDate)\n }\n\n return applyCapitalization(formattedResult, capitalizeFirstLetter)\n },\n [intl, locale],\n )\n\n const getWeekStartDay = (): number => DATE_FORMATS[locale].weekStartDay\n\n return { availableLocales, localize, formatDate, locale, getWeekStartDay }\n}\n"],"names":[],"mappings":";;;;;;AA6GA;AACE;AACA;AAQF;;;;AAOE;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;AACD;AACE;AACA;AACA;AACA;;AAED;;AAGH;;;AAGG;AACH;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGF;AAEA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;AACI;AACL;AACA;AACA;AAEA;;;;;AAyBQ;AACA;AACF;;AAUF;AACE;;AAEA;;AAGI;AACE;AACA;;;;;;;;AAUR;;;;AAIE;;AAGF;AACF;;;AAOJ;;"}
@@ -1,4 +1,4 @@
1
- import { rgba, darken as curriedDarken$1, transparentize as curriedTransparentize$1 } from './../vendor/.pnpm/polished@4.3.1/vendor/polished/dist/polished.esm.js';
1
+ import { rgba, transparentize as curriedTransparentize$1, darken as curriedDarken$1 } from './../vendor/.pnpm/polished@4.3.1/vendor/polished/dist/polished.esm.js';
2
2
  import { merge } from '../libs/lodash.js';
3
3
 
4
4
  const BLACK = '#030302'; // hwb(56, 17, 1)
@@ -9,7 +9,7 @@ var hasRequiredDayjs_min;
9
9
  function requireDayjs_min () {
10
10
  if (hasRequiredDayjs_min) return dayjs_min$1.__module.exports;
11
11
  hasRequiredDayjs_min = 1;
12
- (function (module, exports) {
12
+ (function (module, exports$1) {
13
13
  !function(t,e){module.exports=e();}(dayjs_min,(function(){var t=1e3,e=6e4,n=36e5,r="millisecond",i="second",s="minute",u="hour",a="day",o="week",c="month",f="quarter",h="year",d="date",l="Invalid Date",$=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,y=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],n=t%100;return "["+t+(e[(n-20)%10]||e[n]||e[0])+"]"}},m=function(t,e,n){var r=String(t);return !r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return (e<=0?"+":"-")+m(r,2,"0")+":"+m(i,2,"0")},m:function t(e,n){if(e.date()<n.date())return -t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return +(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return {M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},g="en",D={};D[g]=M;var p="$isDayjsObject",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if("string"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split("-");if(!i&&u.length>1)return t(u[0])}else {var a=e.name;D[a]=e,i=a;}return !r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,true),this.parse(t),this.$x=this.$x||t.x||{},this[p]=true;}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init();},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds();},m.$utils=function(){return b},m.isValid=function(){return !(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate("s"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v="set"+(this.$u?"UTC":"");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+"Hours",0);case u:return $(v+"Minutes",1);case s:return $(v+"Seconds",2);case i:return $(v+"Milliseconds",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,false)},m.$set=function(t,e){var n,o=b.p(t),f="set"+(this.$u?"UTC":""),l=(n={},n[a]=f+"Date",n[d]=f+"Date",n[c]=f+"Month",n[h]=f+"FullYear",n[u]=f+"Hours",n[s]=f+"Minutes",n[i]=f+"Seconds",n[r]=f+"Milliseconds",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d;}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||"YYYY-MM-DDTHH:mm:ssZ",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,"0")},$=f||function(t,e,n){var r=t<12?"AM":"PM";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case "YY":return String(e.$y).slice(-2);case "YYYY":return b.s(e.$y,4,"0");case "M":return a+1;case "MM":return b.s(a+1,2,"0");case "MMM":return h(n.monthsShort,a,c,3);case "MMMM":return h(c,a);case "D":return e.$D;case "DD":return b.s(e.$D,2,"0");case "d":return String(e.$W);case "dd":return h(n.weekdaysMin,e.$W,o,2);case "ddd":return h(n.weekdaysShort,e.$W,o,3);case "dddd":return o[e.$W];case "H":return String(s);case "HH":return b.s(s,2,"0");case "h":return d(1);case "hh":return d(2);case "a":return $(s,u,true);case "A":return $(s,u,false);case "m":return String(u);case "mm":return b.s(u,2,"0");case "s":return String(e.$s);case "ss":return b.s(e.$s,2,"0");case "SSS":return b.s(e.$ms,3,"0");case "Z":return i}return null}(t)||i.replace(":","")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g;}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,true);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[["$ms",r],["$s",i],["$m",s],["$H",u],["$W",a],["$M",c],["$y",h],["$D",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])};})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=true),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));
14
14
  } (dayjs_min$1.__module));
15
15
  return dayjs_min$1.__module.exports;