@alfadocs/ui-kit-debug 1.54.1 → 1.54.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{address-fields-1pD-8hML.js → address-fields-BaClzQLM.js} +5 -5
- package/dist/_chunks/{address-fields-1pD-8hML.js.map → address-fields-BaClzQLM.js.map} +1 -1
- package/dist/_chunks/{anamnesis-summary-rows-BMjSBqhS.js → anamnesis-summary-rows-Brru7JrH.js} +3 -3
- package/dist/_chunks/{anamnesis-summary-rows-BMjSBqhS.js.map → anamnesis-summary-rows-Brru7JrH.js.map} +1 -1
- package/dist/_chunks/{balance-badge-cell-BDX1Krdv.js → balance-badge-cell-C5hmahoB.js} +2 -2
- package/dist/_chunks/{balance-badge-cell-BDX1Krdv.js.map → balance-badge-cell-C5hmahoB.js.map} +1 -1
- package/dist/_chunks/{bishop-score-CGAVpIWL.js → bishop-score-BzvVol-u.js} +2 -2
- package/dist/_chunks/{bishop-score-CGAVpIWL.js.map → bishop-score-BzvVol-u.js.map} +1 -1
- package/dist/_chunks/{bmi-calculator-g_wjo4nq.js → bmi-calculator-CDmQk0b5.js} +2 -2
- package/dist/_chunks/{bmi-calculator-g_wjo4nq.js.map → bmi-calculator-CDmQk0b5.js.map} +1 -1
- package/dist/_chunks/{booking-BN7TXe27.js → booking-BGY3LUi8.js} +5 -5
- package/dist/_chunks/{booking-BN7TXe27.js.map → booking-BGY3LUi8.js.map} +1 -1
- package/dist/_chunks/{calendar-workspace-BbZIx2PT.js → calendar-workspace-BJPhMb2c.js} +8 -8
- package/dist/_chunks/{calendar-workspace-BbZIx2PT.js.map → calendar-workspace-BJPhMb2c.js.map} +1 -1
- package/dist/_chunks/{city-input-DyxVWSRQ.js → city-input-BL5WsGJ3.js} +2 -2
- package/dist/_chunks/{city-input-DyxVWSRQ.js.map → city-input-BL5WsGJ3.js.map} +1 -1
- package/dist/_chunks/{cycle-calculator-CwDEdmda.js → cycle-calculator-LjsQd9Gl.js} +2 -2
- package/dist/_chunks/{cycle-calculator-CwDEdmda.js.map → cycle-calculator-LjsQd9Gl.js.map} +1 -1
- package/dist/_chunks/{data-table-DeUoJzNn.js → data-table-BErtJzaT.js} +2 -2
- package/dist/_chunks/{data-table-DeUoJzNn.js.map → data-table-BErtJzaT.js.map} +1 -1
- package/dist/_chunks/{data-table-tabs-BfEmXvUk.js → data-table-tabs-D5nFZKxg.js} +2 -2
- package/dist/_chunks/{data-table-tabs-BfEmXvUk.js.map → data-table-tabs-D5nFZKxg.js.map} +1 -1
- package/dist/_chunks/{due-date-calculator-_0Dz_d7n.js → due-date-calculator-mDvGKmRV.js} +2 -2
- package/dist/_chunks/{due-date-calculator-_0Dz_d7n.js.map → due-date-calculator-mDvGKmRV.js.map} +1 -1
- package/dist/_chunks/{email-input-Cmeo4zdT.js → email-input-DQixfopu.js} +2 -2
- package/dist/_chunks/{email-input-Cmeo4zdT.js.map → email-input-DQixfopu.js.map} +1 -1
- package/dist/_chunks/error-page-C15GfNEj.js +312 -0
- package/dist/_chunks/error-page-C15GfNEj.js.map +1 -0
- package/dist/_chunks/{error-page-illustration-QGJAvuFB.js → error-page-illustration-bFti0VEc.js} +73 -56
- package/dist/_chunks/error-page-illustration-bFti0VEc.js.map +1 -0
- package/dist/_chunks/{face-scheme-pZgT26gB.js → face-scheme-Doodi6A6.js} +2 -2
- package/dist/_chunks/{face-scheme-pZgT26gB.js.map → face-scheme-Doodi6A6.js.map} +1 -1
- package/dist/_chunks/{fetal-weight-CbE61Uyk.js → fetal-weight-DBgEaMoJ.js} +2 -2
- package/dist/_chunks/{fetal-weight-CbE61Uyk.js.map → fetal-weight-DBgEaMoJ.js.map} +1 -1
- package/dist/_chunks/{file-manager-DdsAd4TQ.js → file-manager-BDNSnr7f.js} +3 -3
- package/dist/_chunks/{file-manager-DdsAd4TQ.js.map → file-manager-BDNSnr7f.js.map} +1 -1
- package/dist/_chunks/{forgot-password-form-DVVOBEGj.js → forgot-password-form-Duu3pZDU.js} +3 -3
- package/dist/_chunks/{forgot-password-form-DVVOBEGj.js.map → forgot-password-form-Duu3pZDU.js.map} +1 -1
- package/dist/_chunks/{form-field-D9WfDpYB.js → form-field-Db0liyI8.js} +72 -63
- package/dist/_chunks/form-field-Db0liyI8.js.map +1 -0
- package/dist/_chunks/form-field-context-DtiROUJV.js.map +1 -1
- package/dist/_chunks/{gestational-age-calculator-BMkoLJGR.js → gestational-age-calculator-BVBz_5dm.js} +2 -2
- package/dist/_chunks/{gestational-age-calculator-BMkoLJGR.js.map → gestational-age-calculator-BVBz_5dm.js.map} +1 -1
- package/dist/_chunks/{hcg-doubling-BtW2pBJX.js → hcg-doubling-BECrAUu3.js} +2 -2
- package/dist/_chunks/{hcg-doubling-BtW2pBJX.js.map → hcg-doubling-BECrAUu3.js.map} +1 -1
- package/dist/_chunks/{help-me-write-templates-Cy-iO5AU.js → help-me-write-templates-B4Y8dBv1.js} +3 -3
- package/dist/_chunks/{help-me-write-templates-Cy-iO5AU.js.map → help-me-write-templates-B4Y8dBv1.js.map} +1 -1
- package/dist/_chunks/{icon-picker-CSViTQL9.js → icon-picker-JZzs1ol_.js} +2 -2
- package/dist/_chunks/{icon-picker-CSViTQL9.js.map → icon-picker-JZzs1ol_.js.map} +1 -1
- package/dist/_chunks/{kit-extensions-Kca1tkfP.js → kit-extensions-GQHKTLWI.js} +6 -6
- package/dist/_chunks/{kit-extensions-Kca1tkfP.js.map → kit-extensions-GQHKTLWI.js.map} +1 -1
- package/dist/_chunks/{login-dev-card-C7wo-Hv1.js → login-dev-card-DletSsX3.js} +5 -5
- package/dist/_chunks/{login-dev-card-C7wo-Hv1.js.map → login-dev-card-DletSsX3.js.map} +1 -1
- package/dist/_chunks/{notes-panel-BPb-2ZnJ.js → notes-panel-DWJY3WV8.js} +2 -2
- package/dist/_chunks/{notes-panel-BPb-2ZnJ.js.map → notes-panel-DWJY3WV8.js.map} +1 -1
- package/dist/_chunks/{password-input-B7pQTk7l.js → password-input-6Yl6x1IO.js} +2 -2
- package/dist/_chunks/{password-input-B7pQTk7l.js.map → password-input-6Yl6x1IO.js.map} +1 -1
- package/dist/_chunks/{patient-details-BP9r_lNS.js → patient-details-D7QlsGK1.js} +2 -2
- package/dist/_chunks/{patient-details-BP9r_lNS.js.map → patient-details-D7QlsGK1.js.map} +1 -1
- package/dist/_chunks/{patient-field-row-BK9JjbzA.js → patient-field-row-Dr-ndtG8.js} +5 -5
- package/dist/_chunks/{patient-field-row-BK9JjbzA.js.map → patient-field-row-Dr-ndtG8.js.map} +1 -1
- package/dist/_chunks/{patient-summary-card-DGbRLzF1.js → patient-summary-card-A3WhxFwp.js} +2 -2
- package/dist/_chunks/{patient-summary-card-DGbRLzF1.js.map → patient-summary-card-A3WhxFwp.js.map} +1 -1
- package/dist/_chunks/{postal-code-input-BmbqjkfD.js → postal-code-input-lCk8me6K.js} +2 -2
- package/dist/_chunks/{postal-code-input-BmbqjkfD.js.map → postal-code-input-lCk8me6K.js.map} +1 -1
- package/dist/_chunks/{pregnancy-dating-DV3o2PPl.js → pregnancy-dating-BEmsMys4.js} +2 -2
- package/dist/_chunks/{pregnancy-dating-DV3o2PPl.js.map → pregnancy-dating-BEmsMys4.js.map} +1 -1
- package/dist/_chunks/{pregnancy-weight-gain-BLjWgtS9.js → pregnancy-weight-gain-DMVPvM3a.js} +2 -2
- package/dist/_chunks/{pregnancy-weight-gain-BLjWgtS9.js.map → pregnancy-weight-gain-DMVPvM3a.js.map} +1 -1
- package/dist/_chunks/{radiograph-panel.agent-C4j6eoQn.js → radiograph-panel.agent-rS3Tegx6.js} +2 -2
- package/dist/_chunks/{radiograph-panel.agent-C4j6eoQn.js.map → radiograph-panel.agent-rS3Tegx6.js.map} +1 -1
- package/dist/_chunks/{registration-form-CBDeXzlk.js → registration-form-Lz9iKrKo.js} +246 -235
- package/dist/_chunks/registration-form-Lz9iKrKo.js.map +1 -0
- package/dist/_chunks/{rich-text-editor-CCCSEPlG.js → rich-text-editor-DmnWavgl.js} +2 -2
- package/dist/_chunks/{rich-text-editor-CCCSEPlG.js.map → rich-text-editor-DmnWavgl.js.map} +1 -1
- package/dist/_chunks/{search-bar-D695TCDH.js → search-bar-ORcfuK9A.js} +2 -2
- package/dist/_chunks/{search-bar-D695TCDH.js.map → search-bar-ORcfuK9A.js.map} +1 -1
- package/dist/_chunks/{search-input-Tl-RkS5x.js → search-input-6SoR2Rf4.js} +2 -2
- package/dist/_chunks/{search-input-Tl-RkS5x.js.map → search-input-6SoR2Rf4.js.map} +1 -1
- package/dist/_chunks/{task-editor-Dl27rI3J.js → task-editor-i-juLk76.js} +3 -3
- package/dist/_chunks/{task-editor-Dl27rI3J.js.map → task-editor-i-juLk76.js.map} +1 -1
- package/dist/_chunks/{text-input-lZ2-t-p2.js → text-input-rzLEKhRU.js} +145 -97
- package/dist/_chunks/text-input-rzLEKhRU.js.map +1 -0
- package/dist/_chunks/{transcript-panel-CLgtyVbR.js → transcript-panel-jOCW4Ycl.js} +2 -2
- package/dist/_chunks/{transcript-panel-CLgtyVbR.js.map → transcript-panel-jOCW4Ycl.js.map} +1 -1
- package/dist/_chunks/{unit-converter-CXNr5P4J.js → unit-converter-Bvhj9r3m.js} +2 -2
- package/dist/_chunks/{unit-converter-CXNr5P4J.js.map → unit-converter-Bvhj9r3m.js.map} +1 -1
- package/dist/_chunks/{use-appointment-details-read-BEbLseXW.js → use-appointment-details-read-B6dBBgDa.js} +3 -3
- package/dist/_chunks/{use-appointment-details-read-BEbLseXW.js.map → use-appointment-details-read-B6dBBgDa.js.map} +1 -1
- package/dist/_chunks/use-field-match-pdbEnKvO.js.map +1 -1
- package/dist/_chunks/{widget-picker-BCbwD5Z1.js → widget-picker-Ck8HTsil.js} +2 -2
- package/dist/_chunks/{widget-picker-BCbwD5Z1.js.map → widget-picker-Ck8HTsil.js.map} +1 -1
- package/dist/agent-catalog.json +5 -1
- package/dist/components/address-fields/index.js +1 -1
- package/dist/components/appointment-details-panel/index.js +1 -1
- package/dist/components/bishop-score/index.js +1 -1
- package/dist/components/bmi-calculator/index.js +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/city-input/index.js +1 -1
- package/dist/components/cycle-calculator/index.js +1 -1
- package/dist/components/data-table/index.js +1 -1
- package/dist/components/data-table-tabs/index.js +1 -1
- package/dist/components/due-date-calculator/index.js +1 -1
- package/dist/components/email-input/index.js +1 -1
- package/dist/components/face-scheme/index.js +1 -1
- package/dist/components/fetal-weight/index.js +1 -1
- package/dist/components/file-manager/index.js +1 -1
- package/dist/components/form-field/form-field-context.d.ts +5 -0
- package/dist/components/form-field/form-field-context.d.ts.map +1 -1
- package/dist/components/form-field/form-field.d.ts.map +1 -1
- package/dist/components/form-field/index.js +1 -1
- package/dist/components/gestational-age-calculator/index.js +1 -1
- package/dist/components/hcg-doubling/index.js +1 -1
- package/dist/components/icon-picker/index.js +1 -1
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/password-input/index.js +1 -1
- package/dist/components/patient-details/index.js +1 -1
- package/dist/components/patient-summary-card/index.js +1 -1
- package/dist/components/patient-table/index.js +1 -1
- package/dist/components/postal-code-input/index.js +1 -1
- package/dist/components/pregnancy-dating/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/index.js +1 -1
- package/dist/components/radiograph-panel/index.js +1 -1
- package/dist/components/rich-text-editor/index.js +2 -2
- package/dist/components/search-bar/index.js +1 -1
- package/dist/components/search-input/index.js +1 -1
- package/dist/components/task-editor/index.js +1 -1
- package/dist/components/text-input/index.js +1 -1
- package/dist/components/text-input/text-input.d.ts +13 -0
- package/dist/components/text-input/text-input.d.ts.map +1 -1
- package/dist/components/transcript-panel/index.js +1 -1
- package/dist/components/unit-converter/index.js +1 -1
- package/dist/components/widget-picker/index.js +1 -1
- package/dist/hooks/use-field-match.d.ts +3 -2
- package/dist/hooks/use-field-match.d.ts.map +1 -1
- package/dist/i18n/locales/ar.d.ts +4 -0
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +4 -0
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +4 -0
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +4 -0
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +4 -0
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +4 -0
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +4 -0
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +4 -0
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +4 -0
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +4 -0
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +4 -0
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +4 -0
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +4 -0
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +4 -0
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +4 -0
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +4 -0
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +4 -0
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +4 -0
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +4 -0
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +4 -0
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +4 -0
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +4 -0
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +4 -0
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +4 -0
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +4 -0
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +4 -0
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +4 -0
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +4 -0
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +4 -0
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +4 -0
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +4 -0
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +4 -0
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +4 -0
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +4 -0
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +4 -0
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +4 -0
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +167 -165
- package/dist/index.js.map +1 -1
- package/dist/locales/ar.json +4 -0
- package/dist/locales/de.json +4 -0
- package/dist/locales/el.json +4 -0
- package/dist/locales/en.json +4 -0
- package/dist/locales/es.json +4 -0
- package/dist/locales/fr.json +4 -0
- package/dist/locales/hi.json +4 -0
- package/dist/locales/it.json +4 -0
- package/dist/locales/ja.json +4 -0
- package/dist/locales/nl.json +4 -0
- package/dist/locales/pl.json +4 -0
- package/dist/locales/pt.json +4 -0
- package/dist/locales/ro.json +4 -0
- package/dist/locales/ru.json +4 -0
- package/dist/locales/sq.json +4 -0
- package/dist/locales/sv.json +4 -0
- package/dist/locales/tr.json +4 -0
- package/dist/locales/zh.json +4 -0
- package/dist/patterns/anamnesis/index.js +1 -1
- package/dist/patterns/calendar/index.js +1 -1
- package/dist/patterns/error-page/error-page-illustration.d.ts +3 -1
- package/dist/patterns/error-page/error-page-illustration.d.ts.map +1 -1
- package/dist/patterns/error-page/error-page.d.ts +34 -2
- package/dist/patterns/error-page/error-page.d.ts.map +1 -1
- package/dist/patterns/error-page/index.d.ts +2 -1
- package/dist/patterns/error-page/index.d.ts.map +1 -1
- package/dist/patterns/error-page/index.js +7 -5
- package/dist/patterns/error-page/index.js.map +1 -1
- package/dist/patterns/forgot-password-form/index.js +1 -1
- package/dist/patterns/help-me-write-templates/index.js +1 -1
- package/dist/patterns/login-form/index.js +1 -1
- package/dist/patterns/registration-form/index.d.ts +1 -1
- package/dist/patterns/registration-form/index.d.ts.map +1 -1
- package/dist/patterns/registration-form/index.js +1 -1
- package/dist/patterns/registration-form/registration-form.d.ts +16 -0
- package/dist/patterns/registration-form/registration-form.d.ts.map +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +1 -1
- package/dist/_chunks/error-page-CKFJlekz.js +0 -275
- package/dist/_chunks/error-page-CKFJlekz.js.map +0 -1
- package/dist/_chunks/error-page-illustration-QGJAvuFB.js.map +0 -1
- package/dist/_chunks/form-field-D9WfDpYB.js.map +0 -1
- package/dist/_chunks/registration-form-CBDeXzlk.js.map +0 -1
- package/dist/_chunks/text-input-lZ2-t-p2.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-field-match-pdbEnKvO.js","sources":["../../src/hooks/use-field-match.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n/** Which pair of fields is compared: it picks the comparison and the message. */\nexport type FieldMatchKind = 'email' | 'password';\n\nexport interface UseFieldMatchOptions {\n /** The value of the first field. */\n value: string;\n /** The value of the field that repeats it. */\n confirmValue: string;\n /**\n * `'email'` compares trimmed and without regard to case. `'password'`\n * compares exactly. Each has its own translated message.\n */\n kind: FieldMatchKind;\n /**\n * True once the user has tried to submit the form. The message then\n * shows even if the confirm field was never left.\n */\n submitted?: boolean;\n /**\n * Replaces the default preparation of both values before they are\n * compared, e.g. to strip dots from an address.\n */\n normalise?: (value: string) => string;\n}\n\nexport interface UseFieldMatchReturn {\n /**\n * True when the two values are equal after normalising. Two empty\n * fields match: check that they are filled in separately.\n */\n matches: boolean;\n /**\n * The translated message, ready for `FormField`'s `error`. Set only\n * when both fields have text, they differ, and the user has left the\n * confirm field once or tried to submit. Cleared as soon as they match.\n * Emptying both fields starts again: the message waits for the confirm\n * field to be left once more.\n */\n error: string | undefined;\n /** Spread onto the confirm field's input. */\n confirmProps: { onBlur: () => void };\n}\n\nconst DEFAULT_NORMALISE: Record<FieldMatchKind, (value: string) => string> = {\n email: (value) => value.trim().toLowerCase(),\n password: (value) => value,\n};\n\n/**\n * \"These two fields must match\", for email with confirm email and\n * password with confirm password. It compares the values and says when\n * to show the message; `FormField` shows and announces it.\n *\n * It
|
|
1
|
+
{"version":3,"file":"use-field-match-pdbEnKvO.js","sources":["../../src/hooks/use-field-match.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\n\n/** Which pair of fields is compared: it picks the comparison and the message. */\nexport type FieldMatchKind = 'email' | 'password';\n\nexport interface UseFieldMatchOptions {\n /** The value of the first field. */\n value: string;\n /** The value of the field that repeats it. */\n confirmValue: string;\n /**\n * `'email'` compares trimmed and without regard to case. `'password'`\n * compares exactly. Each has its own translated message.\n */\n kind: FieldMatchKind;\n /**\n * True once the user has tried to submit the form. The message then\n * shows even if the confirm field was never left.\n */\n submitted?: boolean;\n /**\n * Replaces the default preparation of both values before they are\n * compared, e.g. to strip dots from an address.\n */\n normalise?: (value: string) => string;\n}\n\nexport interface UseFieldMatchReturn {\n /**\n * True when the two values are equal after normalising. Two empty\n * fields match: check that they are filled in separately.\n */\n matches: boolean;\n /**\n * The translated message, ready for `FormField`'s `error`. Set only\n * when both fields have text, they differ, and the user has left the\n * confirm field once or tried to submit. Cleared as soon as they match.\n * Emptying both fields starts again: the message waits for the confirm\n * field to be left once more.\n */\n error: string | undefined;\n /** Spread onto the confirm field's input. */\n confirmProps: { onBlur: () => void };\n}\n\nconst DEFAULT_NORMALISE: Record<FieldMatchKind, (value: string) => string> = {\n email: (value) => value.trim().toLowerCase(),\n password: (value) => value,\n};\n\n/**\n * \"These two fields must match\", for email with confirm email and\n * password with confirm password. It compares the values and says when\n * to show the message; `FormField` shows and announces it.\n *\n * It does not block paste, copy or drop itself. A host that wants the\n * confirm field typed sets `blockPaste` on that input (any field built\n * on `TextInput` takes it); password managers still fill both fields.\n *\n * @example\n * const match = useFieldMatch({\n * value: email,\n * confirmValue: emailConfirm,\n * kind: 'email',\n * submitted,\n * });\n *\n * // `disableBuiltInValidation`: the match is this field's only check.\n * // With EmailInput's own message on too, two messages share one id.\n * <FormField label=\"Confirm email\" required error={match.error}>\n * <EmailInput\n * disableBuiltInValidation\n * value={emailConfirm}\n * onChange={(event) => setEmailConfirm(event.target.value)}\n * {...match.confirmProps}\n * />\n * </FormField>\n */\nexport function useFieldMatch({\n value,\n confirmValue,\n kind,\n submitted = false,\n normalise,\n}: UseFieldMatchOptions): UseFieldMatchReturn {\n const { t } = useTranslation('ui');\n const [blurred, setBlurred] = useState(false);\n const onBlur = useCallback(() => setBlurred(true), []);\n\n const prepare = normalise ?? DEFAULT_NORMALISE[kind];\n const first = prepare(value);\n const second = prepare(confirmValue);\n const matches = first === second;\n const show = first !== '' && second !== '' && !matches;\n\n // Both emptied, as after a server refuses a password: a fresh start,\n // so the message does not jump out at the first key typed.\n const bothEmpty = first === '' && second === '';\n useEffect(() => {\n if (bothEmpty) setBlurred(false);\n }, [bothEmpty]);\n\n // Two plain calls, not a key built from `kind`: the i18n checks read\n // keys from the source.\n const message =\n kind === 'email' ? t('fieldMatch.email') : t('fieldMatch.password');\n\n return {\n matches,\n error: show && (blurred || submitted) ? message : undefined,\n confirmProps: { onBlur },\n };\n}\n"],"names":["DEFAULT_NORMALISE","value","useFieldMatch","confirmValue","kind","submitted","normalise","t","useTranslation","blurred","setBlurred","useState","onBlur","useCallback","prepare","first","second","matches","show","bothEmpty","useEffect","message"],"mappings":";;AA8CA,MAAMA,IAAuE;AAAA,EAC3E,OAAO,CAACC,MAAUA,EAAM,KAAA,EAAO,YAAA;AAAA,EAC/B,UAAU,CAACA,MAAUA;AACvB;AA8BO,SAASC,EAAc;AAAA,EAC5B,OAAAD;AAAA,EACA,cAAAE;AAAA,EACA,MAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,WAAAC;AACF,GAA8C;AAC5C,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,IAAI,GAC3B,CAACC,GAASC,CAAU,IAAIC,EAAS,EAAK,GACtCC,IAASC,EAAY,MAAMH,EAAW,EAAI,GAAG,CAAA,CAAE,GAE/CI,IAAUR,KAAaN,EAAkBI,CAAI,GAC7CW,IAAQD,EAAQb,CAAK,GACrBe,IAASF,EAAQX,CAAY,GAC7Bc,IAAUF,MAAUC,GACpBE,IAAOH,MAAU,MAAMC,MAAW,MAAM,CAACC,GAIzCE,IAAYJ,MAAU,MAAMC,MAAW;AAC7C,EAAAI,EAAU,MAAM;AACd,IAAID,OAAsB,EAAK;AAAA,EACjC,GAAG,CAACA,CAAS,CAAC;AAId,QAAME,IACed,EAAnBH,MAAS,UAAY,qBAAwB,qBAAN;AAEzC,SAAO;AAAA,IACL,SAAAa;AAAA,IACA,OAAOC,MAAST,KAAWJ,KAAagB,IAAU;AAAA,IAClD,cAAc,EAAE,QAAAT,EAAA;AAAA,EAAO;AAE3B;"}
|
|
@@ -3,7 +3,7 @@ import { forwardRef as P, useState as N, useEffect as S, useMemo as f, useCallba
|
|
|
3
3
|
import { c as _ } from "./index-D2ZczOXr.js";
|
|
4
4
|
import { useTranslation as j } from "react-i18next";
|
|
5
5
|
import { D as l } from "./dialog-D52AI4nF.js";
|
|
6
|
-
import { T as z } from "./text-input-
|
|
6
|
+
import { T as z } from "./text-input-rzLEKhRU.js";
|
|
7
7
|
import { B as C } from "./badge-hnBt8o7n.js";
|
|
8
8
|
import { u as I } from "./registry-DvAUVLHh.js";
|
|
9
9
|
import { S as L } from "./search-QbWPlY5f.js";
|
|
@@ -190,4 +190,4 @@ export {
|
|
|
190
190
|
B as W,
|
|
191
191
|
R as w
|
|
192
192
|
};
|
|
193
|
-
//# sourceMappingURL=widget-picker-
|
|
193
|
+
//# sourceMappingURL=widget-picker-Ck8HTsil.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-picker-BCbwD5Z1.js","sources":["../../src/components/widget-picker/widget-picker.agent.ts","../../src/components/widget-picker/widget-picker.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { WidgetPickerHandle } from './widget-picker';\n\nexport const widgetPickerAgent: AgentAdapter<WidgetPickerHandle> = {\n id: 'widget-picker',\n capabilities: ['pick'],\n state: {\n open: {\n type: 'boolean',\n descriptionKey: 'ui.agent.widgetPicker.state.open',\n description: 'Whether the picker dialog is currently open.',\n read: (handle) => handle.getPickerState().open,\n },\n items: {\n type: '{ id: string, disabled: boolean }[]',\n descriptionKey: 'ui.agent.widgetPicker.state.items',\n description:\n 'Widget-type ids on offer and whether each is pickable. Ids only — titles are host-app strings.',\n read: (handle) => handle.getPickerState().items,\n },\n },\n actions: {\n pick_widget: {\n // Picking adds a widget to the host dashboard — a write, reversible\n // by removing the widget again.\n safety: 'write',\n argsType: 'id',\n argsSchema: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'Widget-type id (see items state).',\n },\n },\n required: ['id'],\n },\n returns: 'boolean (accepted)',\n returnsSchema: {\n type: 'boolean',\n description:\n 'True when the pick was applied; false when the picker is closed, the id is unknown, or the item is disabled.',\n },\n idempotent: false,\n descriptionKey: 'ui.agent.widgetPicker.actions.pickWidget',\n description:\n 'Pick a widget type from the open catalogue. The picker closes and the host adds the widget. Refused while the dialog is closed and for disabled items.',\n invoke: (handle, args: { id: string }) => handle.pick(args.id),\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'widget-picker' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-widget-type-id',\n description: 'Each option tile carries its widget-type id.',\n },\n },\n};\n","/* ------------------------------------------------------------------ */\n/* WidgetPicker — \"add a widget\" modal for configurable dashboards. */\n/* */\n/* A Dialog-composed catalogue picker: the consumer supplies the */\n/* available widget types (title/description/icon/category, all */\n/* pre-translated app strings), the kit renders a searchable, grouped */\n/* grid of option tiles and reports the pick. Designed as the add flow */\n/* for `DashboardGrid` (`onRequestAdd` opens it) but generic to any */\n/* pick-one-catalogue surface. Disabled items stay visible with an */\n/* optional badge (e.g. \"Requires reconnect\") so users can discover */\n/* locked capabilities. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Search } from 'lucide-react';\nimport { Dialog } from '../dialog';\nimport { TextInput } from '../text-input';\nimport { Badge } from '../badge';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { widgetPickerAgent } from './widget-picker.agent';\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface WidgetPickerItem {\n /** Stable widget-type id reported via `onPick`. */\n id: string;\n /** Visible name (consumer-translated). */\n title: string;\n /** One-line explanation (consumer-translated). */\n description?: string;\n /** Small illustrative icon. */\n icon?: ReactNode;\n /** Group heading (consumer-translated). Ungrouped items render first. */\n category?: string;\n /** Visible but not pickable. */\n disabled?: boolean;\n /** Short annotation rendered as a badge (e.g. \"Requires reconnect\"). */\n badge?: string;\n}\n\nexport interface WidgetPickerProps {\n /** Controlled visibility. */\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** The catalogue. */\n items: WidgetPickerItem[];\n /**\n * Called with the picked item id; the picker then closes itself via\n * `onOpenChange(false)`.\n */\n onPick: (id: string) => void;\n /** Dialog title. Defaults to the kit's translated \"Add a widget\". */\n title?: string;\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n}\n\nexport interface WidgetPickerHandle {\n /**\n * Pick an item programmatically. False when the picker is closed, the id\n * is unknown, or the item is disabled.\n */\n pick: (id: string) => boolean;\n getPickerState: () => {\n open: boolean;\n items: Array<{ id: string; disabled: boolean }>;\n };\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst tileVariants = cva(\n [\n 'ds:flex ds:w-full ds:min-h-[var(--min-target-size)] ds:items-start ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border ds:bg-[var(--card)]',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:py-[var(--spacing-md)]',\n 'ds:text-start ds:transition-colors',\n 'ds:hover:bg-muted/10',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:opacity-50 ds:disabled:cursor-not-allowed ds:disabled:hover:bg-transparent',\n ].join(' '),\n { variants: {}, defaultVariants: {} },\n);\n\n/* ------------------------------------------------------------------ */\n/* WidgetPicker */\n/* ------------------------------------------------------------------ */\n\nexport const WidgetPicker = forwardRef<WidgetPickerHandle, WidgetPickerProps>(\n ({ open, onOpenChange, items, onPick, title, id }, ref) => {\n const { t } = useTranslation('ui');\n const [query, setQuery] = useState('');\n\n // Clear the search when the picker closes, so the next open starts fresh\n // without a post-open reflow flash.\n useEffect(() => {\n if (!open) setQuery('');\n }, [open]);\n\n const filtered = useMemo(() => {\n const needle = query.trim().toLowerCase();\n if (!needle) return items;\n return items.filter(\n (item) =>\n item.title.toLowerCase().includes(needle) ||\n (item.description ?? '').toLowerCase().includes(needle),\n );\n }, [items, query]);\n\n /* Group by category, preserving first-seen order; ungrouped first. */\n const groups = useMemo(() => {\n const order: Array<{\n category: string | null;\n entries: WidgetPickerItem[];\n }> = [];\n for (const item of filtered) {\n // Treat an empty-string category the same as no category.\n const key = item.category || null;\n let group = order.find((g) => g.category === key);\n if (!group) {\n group = { category: key, entries: [] };\n if (key === null) order.unshift(group);\n else order.push(group);\n }\n group.entries.push(item);\n }\n return order;\n }, [filtered]);\n\n const handlePick = useCallback(\n (itemId: string) => {\n onPick(itemId);\n onOpenChange(false);\n },\n [onPick, onOpenChange],\n );\n\n const agentHandle = useMemo<WidgetPickerHandle>(\n () => ({\n pick(itemId) {\n if (!open) return false;\n const item = items.find((entry) => entry.id === itemId);\n if (!item || item.disabled) return false;\n handlePick(itemId);\n return true;\n },\n getPickerState() {\n return {\n open,\n items: items.map((item) => ({\n id: item.id,\n disabled: Boolean(item.disabled),\n })),\n };\n },\n }),\n [open, items, handlePick],\n );\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n useAgentRegistration(widgetPickerAgent, agentHandle, id);\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Content size=\"lg\">\n <div data-component=\"widget-picker\" data-component-id={id}>\n <Dialog.Title>{title ?? t('widgetPicker.title')}</Dialog.Title>\n <Dialog.Description className=\"ds:sr-only\">\n {t('widgetPicker.description')}\n </Dialog.Description>\n <div className=\"ds:mt-[var(--spacing-sm)]\">\n <TextInput\n aria-label={t('widgetPicker.searchLabel')}\n placeholder={t('widgetPicker.searchPlaceholder')}\n startAdornment={<Search aria-hidden=\"true\" />}\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n />\n </div>\n <div\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex -- scrollable catalogue needs a keyboard tab stop so an all-disabled, overflowing list stays scrollable (axe scrollable-region-focusable)\n tabIndex={0}\n className=\"ds:mt-[var(--spacing-md)] ds:flex ds:max-h-[60vh] ds:flex-col ds:gap-[var(--spacing-md)] ds:overflow-y-auto ds:pe-[var(--spacing-xs)] ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]\"\n >\n {groups.length === 0 ? (\n <p\n role=\"status\"\n className=\"ds:py-[var(--spacing-lg)] ds:text-center ds:text-sm ds:text-muted-foreground\"\n >\n {items.length === 0\n ? t('widgetPicker.none')\n : t('widgetPicker.empty')}\n </p>\n ) : (\n groups.map((group) => (\n <section\n key={group.category ?? '__ungrouped__'}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\"\n >\n {group.category ? (\n <h3 className=\"ds:text-xs ds:font-semibold ds:uppercase ds:tracking-wide ds:text-muted-foreground\">\n {group.category}\n </h3>\n ) : null}\n <div className=\"ds:grid ds:gap-[var(--spacing-sm)] ds:sm:grid-cols-2\">\n {group.entries.map((item) => (\n <button\n key={item.id}\n type=\"button\"\n disabled={item.disabled}\n onClick={() => handlePick(item.id)}\n className={tileVariants()}\n data-widget-type-id={item.id}\n >\n {item.icon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:mt-[var(--spacing-2xs)] ds:inline-flex ds:size-5 ds:shrink-0 ds:items-center ds:justify-center ds:text-muted-foreground ds:[&_svg]:size-5\"\n >\n {item.icon}\n </span>\n ) : null}\n <span className=\"ds:flex ds:min-w-0 ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n <span className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <span className=\"ds:truncate ds:text-sm ds:font-medium\">\n {item.title}\n </span>\n {item.badge ? (\n <Badge variant=\"info\" size=\"sm\">\n {item.badge}\n </Badge>\n ) : null}\n </span>\n {item.description ? (\n <span className=\"ds:text-xs ds:text-muted-foreground\">\n {item.description}\n </span>\n ) : null}\n </span>\n </button>\n ))}\n </div>\n </section>\n ))\n )}\n </div>\n </div>\n </Dialog.Content>\n </Dialog.Root>\n );\n },\n);\n\nWidgetPicker.displayName = 'WidgetPicker';\n"],"names":["widgetPickerAgent","handle","args","tileVariants","cva","WidgetPicker","forwardRef","open","onOpenChange","items","onPick","title","id","ref","t","useTranslation","query","setQuery","useState","useEffect","filtered","useMemo","needle","item","groups","order","key","group","g","handlePick","useCallback","itemId","agentHandle","entry","useImperativeHandle","useAgentRegistration","Dialog","jsx","jsxs","TextInput","Search","event","Badge"],"mappings":";;;;;;;;;AAGO,MAAMA,IAAsD;AAAA,EACjE,IAAI;AAAA,EACJ,cAAc,CAAC,MAAM;AAAA,EACrB,OAAO;AAAA,IACL,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,MAAM,CAACC,MAAWA,EAAO,iBAAiB;AAAA,IAAA;AAAA,IAE5C,OAAO;AAAA,MACL,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,aACE;AAAA,MACF,MAAM,CAACA,MAAWA,EAAO,iBAAiB;AAAA,IAAA;AAAA,EAC5C;AAAA,EAEF,SAAS;AAAA,IACP,aAAa;AAAA;AAAA;AAAA,MAGX,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,YAAY;AAAA,QACV,MAAM;AAAA,QACN,YAAY;AAAA,UACV,IAAI;AAAA,YACF,MAAM;AAAA,YACN,aAAa;AAAA,UAAA;AAAA,QACf;AAAA,QAEF,UAAU,CAAC,IAAI;AAAA,MAAA;AAAA,MAEjB,SAAS;AAAA,MACT,eAAe;AAAA,QACb,MAAM;AAAA,QACN,aACE;AAAA,MAAA;AAAA,MAEJ,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,aACE;AAAA,MACF,QAAQ,CAACA,GAAQC,MAAyBD,EAAO,KAAKC,EAAK,EAAE;AAAA,IAAA;AAAA,EAC/D;AAAA,EAEF,UAAU;AAAA,IACR,MAAM,EAAE,MAAM,kBAAkB,OAAO,gBAAA;AAAA,IACvC,YAAY;AAAA,MACV,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,aAAa;AAAA,IAAA;AAAA,IAEf,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GCuBMC,IAAeC;AAAA,EACnB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV,EAAE,UAAU,IAAI,iBAAiB,CAAA,EAAC;AACpC,GAMaC,IAAeC;AAAA,EAC1B,CAAC,EAAE,MAAAC,GAAM,cAAAC,GAAc,OAAAC,GAAO,QAAAC,GAAQ,OAAAC,GAAO,IAAAC,EAAA,GAAMC,MAAQ;AACzD,UAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,IAAI,GAC3B,CAACC,GAAOC,CAAQ,IAAIC,EAAS,EAAE;AAIrC,IAAAC,EAAU,MAAM;AACd,MAAKZ,KAAMU,EAAS,EAAE;AAAA,IACxB,GAAG,CAACV,CAAI,CAAC;AAET,UAAMa,IAAWC,EAAQ,MAAM;AAC7B,YAAMC,IAASN,EAAM,KAAA,EAAO,YAAA;AAC5B,aAAKM,IACEb,EAAM;AAAA,QACX,CAACc,MACCA,EAAK,MAAM,cAAc,SAASD,CAAM,MACvCC,EAAK,eAAe,IAAI,YAAA,EAAc,SAASD,CAAM;AAAA,MAAA,IAJtCb;AAAA,IAMtB,GAAG,CAACA,GAAOO,CAAK,CAAC,GAGXQ,IAASH,EAAQ,MAAM;AAC3B,YAAMI,IAGD,CAAA;AACL,iBAAWF,KAAQH,GAAU;AAE3B,cAAMM,IAAMH,EAAK,YAAY;AAC7B,YAAII,IAAQF,EAAM,KAAK,CAACG,MAAMA,EAAE,aAAaF,CAAG;AAChD,QAAKC,MACHA,IAAQ,EAAE,UAAUD,GAAK,SAAS,CAAA,EAAC,GAC/BA,MAAQ,OAAMD,EAAM,QAAQE,CAAK,IAChCF,EAAM,KAAKE,CAAK,IAEvBA,EAAM,QAAQ,KAAKJ,CAAI;AAAA,MACzB;AACA,aAAOE;AAAA,IACT,GAAG,CAACL,CAAQ,CAAC,GAEPS,IAAaC;AAAA,MACjB,CAACC,MAAmB;AAClB,QAAArB,EAAOqB,CAAM,GACbvB,EAAa,EAAK;AAAA,MACpB;AAAA,MACA,CAACE,GAAQF,CAAY;AAAA,IAAA,GAGjBwB,IAAcX;AAAA,MAClB,OAAO;AAAA,QACL,KAAKU,GAAQ;AACX,cAAI,CAACxB,EAAM,QAAO;AAClB,gBAAMgB,IAAOd,EAAM,KAAK,CAACwB,MAAUA,EAAM,OAAOF,CAAM;AACtD,iBAAI,CAACR,KAAQA,EAAK,WAAiB,MACnCM,EAAWE,CAAM,GACV;AAAA,QACT;AAAA,QACA,iBAAiB;AACf,iBAAO;AAAA,YACL,MAAAxB;AAAA,YACA,OAAOE,EAAM,IAAI,CAACc,OAAU;AAAA,cAC1B,IAAIA,EAAK;AAAA,cACT,UAAU,EAAQA,EAAK;AAAA,YAAQ,EAC/B;AAAA,UAAA;AAAA,QAEN;AAAA,MAAA;AAAA,MAEF,CAAChB,GAAME,GAAOoB,CAAU;AAAA,IAAA;AAE1B,WAAAK,EAAoBrB,GAAK,MAAMmB,GAAa,CAACA,CAAW,CAAC,GACzDG,EAAqBnC,GAAmBgC,GAAapB,CAAE,qBAGpDwB,EAAO,MAAP,EAAY,MAAA7B,GAAY,cAAAC,GACvB,UAAA,gBAAA6B,EAACD,EAAO,SAAP,EAAe,MAAK,MACnB,UAAA,gBAAAE,EAAC,SAAI,kBAAe,iBAAgB,qBAAmB1B,GACrD,UAAA;AAAA,MAAA,gBAAAyB,EAACD,EAAO,OAAP,EAAc,UAAAzB,KAASG,EAAE,oBAAoB,GAAE;AAAA,MAChD,gBAAAuB,EAACD,EAAO,aAAP,EAAmB,WAAU,cAC3B,UAAAtB,EAAE,0BAA0B,GAC/B;AAAA,MACA,gBAAAuB,EAAC,OAAA,EAAI,WAAU,6BACb,UAAA,gBAAAA;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,cAAYzB,EAAE,0BAA0B;AAAA,UACxC,aAAaA,EAAE,gCAAgC;AAAA,UAC/C,gBAAgB,gBAAAuB,EAACG,GAAA,EAAO,eAAY,OAAA,CAAO;AAAA,UAC3C,OAAOxB;AAAA,UACP,UAAU,CAACyB,MAAUxB,EAASwB,EAAM,OAAO,KAAK;AAAA,QAAA;AAAA,MAAA,GAEpD;AAAA,MACA,gBAAAJ;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,UAAU;AAAA,UACV,WAAU;AAAA,UAET,UAAAb,EAAO,WAAW,IACjB,gBAAAa;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAU;AAAA,cAET,YAAM,WAAW,IACdvB,EAAE,mBAAmB,IACrBA,EAAE,oBAAoB;AAAA,YAAA;AAAA,UAAA,IAG5BU,EAAO,IAAI,CAACG,MACV,gBAAAW;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAU;AAAA,cAET,UAAA;AAAA,gBAAAX,EAAM,WACL,gBAAAU,EAAC,MAAA,EAAG,WAAU,sFACX,UAAAV,EAAM,UACT,IACE;AAAA,gBACJ,gBAAAU,EAAC,SAAI,WAAU,wDACZ,YAAM,QAAQ,IAAI,CAACd,MAClB,gBAAAe;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBAEC,MAAK;AAAA,oBACL,UAAUf,EAAK;AAAA,oBACf,SAAS,MAAMM,EAAWN,EAAK,EAAE;AAAA,oBACjC,WAAWpB,EAAA;AAAA,oBACX,uBAAqBoB,EAAK;AAAA,oBAEzB,UAAA;AAAA,sBAAAA,EAAK,OACJ,gBAAAc;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,eAAY;AAAA,0BACZ,WAAU;AAAA,0BAET,UAAAd,EAAK;AAAA,wBAAA;AAAA,sBAAA,IAEN;AAAA,sBACJ,gBAAAe,EAAC,QAAA,EAAK,WAAU,8DACd,UAAA;AAAA,wBAAA,gBAAAA,EAAC,QAAA,EAAK,WAAU,sDACd,UAAA;AAAA,0BAAA,gBAAAD,EAAC,QAAA,EAAK,WAAU,yCACb,UAAAd,EAAK,OACR;AAAA,0BACCA,EAAK,QACJ,gBAAAc,EAACK,GAAA,EAAM,SAAQ,QAAO,MAAK,MACxB,UAAAnB,EAAK,MAAA,CACR,IACE;AAAA,wBAAA,GACN;AAAA,wBACCA,EAAK,cACJ,gBAAAc,EAAC,QAAA,EAAK,WAAU,uCACb,UAAAd,EAAK,aACR,IACE;AAAA,sBAAA,EAAA,CACN;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBA/BKA,EAAK;AAAA,gBAAA,CAiCb,EAAA,CACH;AAAA,cAAA;AAAA,YAAA;AAAA,YA7CKI,EAAM,YAAY;AAAA,UAAA,CA+C1B;AAAA,QAAA;AAAA,MAAA;AAAA,IAEL,EAAA,CACF,GACF,GACF;AAAA,EAEJ;AACF;AAEAtB,EAAa,cAAc;"}
|
|
1
|
+
{"version":3,"file":"widget-picker-Ck8HTsil.js","sources":["../../src/components/widget-picker/widget-picker.agent.ts","../../src/components/widget-picker/widget-picker.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { WidgetPickerHandle } from './widget-picker';\n\nexport const widgetPickerAgent: AgentAdapter<WidgetPickerHandle> = {\n id: 'widget-picker',\n capabilities: ['pick'],\n state: {\n open: {\n type: 'boolean',\n descriptionKey: 'ui.agent.widgetPicker.state.open',\n description: 'Whether the picker dialog is currently open.',\n read: (handle) => handle.getPickerState().open,\n },\n items: {\n type: '{ id: string, disabled: boolean }[]',\n descriptionKey: 'ui.agent.widgetPicker.state.items',\n description:\n 'Widget-type ids on offer and whether each is pickable. Ids only — titles are host-app strings.',\n read: (handle) => handle.getPickerState().items,\n },\n },\n actions: {\n pick_widget: {\n // Picking adds a widget to the host dashboard — a write, reversible\n // by removing the widget again.\n safety: 'write',\n argsType: 'id',\n argsSchema: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'Widget-type id (see items state).',\n },\n },\n required: ['id'],\n },\n returns: 'boolean (accepted)',\n returnsSchema: {\n type: 'boolean',\n description:\n 'True when the pick was applied; false when the picker is closed, the id is unknown, or the item is disabled.',\n },\n idempotent: false,\n descriptionKey: 'ui.agent.widgetPicker.actions.pickWidget',\n description:\n 'Pick a widget type from the open catalogue. The picker closes and the host adds the widget. Refused while the dialog is closed and for disabled items.',\n invoke: (handle, args: { id: string }) => handle.pick(args.id),\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'widget-picker' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-widget-type-id',\n description: 'Each option tile carries its widget-type id.',\n },\n },\n};\n","/* ------------------------------------------------------------------ */\n/* WidgetPicker — \"add a widget\" modal for configurable dashboards. */\n/* */\n/* A Dialog-composed catalogue picker: the consumer supplies the */\n/* available widget types (title/description/icon/category, all */\n/* pre-translated app strings), the kit renders a searchable, grouped */\n/* grid of option tiles and reports the pick. Designed as the add flow */\n/* for `DashboardGrid` (`onRequestAdd` opens it) but generic to any */\n/* pick-one-catalogue surface. Disabled items stay visible with an */\n/* optional badge (e.g. \"Requires reconnect\") so users can discover */\n/* locked capabilities. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Search } from 'lucide-react';\nimport { Dialog } from '../dialog';\nimport { TextInput } from '../text-input';\nimport { Badge } from '../badge';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { widgetPickerAgent } from './widget-picker.agent';\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface WidgetPickerItem {\n /** Stable widget-type id reported via `onPick`. */\n id: string;\n /** Visible name (consumer-translated). */\n title: string;\n /** One-line explanation (consumer-translated). */\n description?: string;\n /** Small illustrative icon. */\n icon?: ReactNode;\n /** Group heading (consumer-translated). Ungrouped items render first. */\n category?: string;\n /** Visible but not pickable. */\n disabled?: boolean;\n /** Short annotation rendered as a badge (e.g. \"Requires reconnect\"). */\n badge?: string;\n}\n\nexport interface WidgetPickerProps {\n /** Controlled visibility. */\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** The catalogue. */\n items: WidgetPickerItem[];\n /**\n * Called with the picked item id; the picker then closes itself via\n * `onOpenChange(false)`.\n */\n onPick: (id: string) => void;\n /** Dialog title. Defaults to the kit's translated \"Add a widget\". */\n title?: string;\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n}\n\nexport interface WidgetPickerHandle {\n /**\n * Pick an item programmatically. False when the picker is closed, the id\n * is unknown, or the item is disabled.\n */\n pick: (id: string) => boolean;\n getPickerState: () => {\n open: boolean;\n items: Array<{ id: string; disabled: boolean }>;\n };\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst tileVariants = cva(\n [\n 'ds:flex ds:w-full ds:min-h-[var(--min-target-size)] ds:items-start ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border ds:bg-[var(--card)]',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:py-[var(--spacing-md)]',\n 'ds:text-start ds:transition-colors',\n 'ds:hover:bg-muted/10',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:opacity-50 ds:disabled:cursor-not-allowed ds:disabled:hover:bg-transparent',\n ].join(' '),\n { variants: {}, defaultVariants: {} },\n);\n\n/* ------------------------------------------------------------------ */\n/* WidgetPicker */\n/* ------------------------------------------------------------------ */\n\nexport const WidgetPicker = forwardRef<WidgetPickerHandle, WidgetPickerProps>(\n ({ open, onOpenChange, items, onPick, title, id }, ref) => {\n const { t } = useTranslation('ui');\n const [query, setQuery] = useState('');\n\n // Clear the search when the picker closes, so the next open starts fresh\n // without a post-open reflow flash.\n useEffect(() => {\n if (!open) setQuery('');\n }, [open]);\n\n const filtered = useMemo(() => {\n const needle = query.trim().toLowerCase();\n if (!needle) return items;\n return items.filter(\n (item) =>\n item.title.toLowerCase().includes(needle) ||\n (item.description ?? '').toLowerCase().includes(needle),\n );\n }, [items, query]);\n\n /* Group by category, preserving first-seen order; ungrouped first. */\n const groups = useMemo(() => {\n const order: Array<{\n category: string | null;\n entries: WidgetPickerItem[];\n }> = [];\n for (const item of filtered) {\n // Treat an empty-string category the same as no category.\n const key = item.category || null;\n let group = order.find((g) => g.category === key);\n if (!group) {\n group = { category: key, entries: [] };\n if (key === null) order.unshift(group);\n else order.push(group);\n }\n group.entries.push(item);\n }\n return order;\n }, [filtered]);\n\n const handlePick = useCallback(\n (itemId: string) => {\n onPick(itemId);\n onOpenChange(false);\n },\n [onPick, onOpenChange],\n );\n\n const agentHandle = useMemo<WidgetPickerHandle>(\n () => ({\n pick(itemId) {\n if (!open) return false;\n const item = items.find((entry) => entry.id === itemId);\n if (!item || item.disabled) return false;\n handlePick(itemId);\n return true;\n },\n getPickerState() {\n return {\n open,\n items: items.map((item) => ({\n id: item.id,\n disabled: Boolean(item.disabled),\n })),\n };\n },\n }),\n [open, items, handlePick],\n );\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n useAgentRegistration(widgetPickerAgent, agentHandle, id);\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Content size=\"lg\">\n <div data-component=\"widget-picker\" data-component-id={id}>\n <Dialog.Title>{title ?? t('widgetPicker.title')}</Dialog.Title>\n <Dialog.Description className=\"ds:sr-only\">\n {t('widgetPicker.description')}\n </Dialog.Description>\n <div className=\"ds:mt-[var(--spacing-sm)]\">\n <TextInput\n aria-label={t('widgetPicker.searchLabel')}\n placeholder={t('widgetPicker.searchPlaceholder')}\n startAdornment={<Search aria-hidden=\"true\" />}\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n />\n </div>\n <div\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex -- scrollable catalogue needs a keyboard tab stop so an all-disabled, overflowing list stays scrollable (axe scrollable-region-focusable)\n tabIndex={0}\n className=\"ds:mt-[var(--spacing-md)] ds:flex ds:max-h-[60vh] ds:flex-col ds:gap-[var(--spacing-md)] ds:overflow-y-auto ds:pe-[var(--spacing-xs)] ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]\"\n >\n {groups.length === 0 ? (\n <p\n role=\"status\"\n className=\"ds:py-[var(--spacing-lg)] ds:text-center ds:text-sm ds:text-muted-foreground\"\n >\n {items.length === 0\n ? t('widgetPicker.none')\n : t('widgetPicker.empty')}\n </p>\n ) : (\n groups.map((group) => (\n <section\n key={group.category ?? '__ungrouped__'}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\"\n >\n {group.category ? (\n <h3 className=\"ds:text-xs ds:font-semibold ds:uppercase ds:tracking-wide ds:text-muted-foreground\">\n {group.category}\n </h3>\n ) : null}\n <div className=\"ds:grid ds:gap-[var(--spacing-sm)] ds:sm:grid-cols-2\">\n {group.entries.map((item) => (\n <button\n key={item.id}\n type=\"button\"\n disabled={item.disabled}\n onClick={() => handlePick(item.id)}\n className={tileVariants()}\n data-widget-type-id={item.id}\n >\n {item.icon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:mt-[var(--spacing-2xs)] ds:inline-flex ds:size-5 ds:shrink-0 ds:items-center ds:justify-center ds:text-muted-foreground ds:[&_svg]:size-5\"\n >\n {item.icon}\n </span>\n ) : null}\n <span className=\"ds:flex ds:min-w-0 ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n <span className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <span className=\"ds:truncate ds:text-sm ds:font-medium\">\n {item.title}\n </span>\n {item.badge ? (\n <Badge variant=\"info\" size=\"sm\">\n {item.badge}\n </Badge>\n ) : null}\n </span>\n {item.description ? (\n <span className=\"ds:text-xs ds:text-muted-foreground\">\n {item.description}\n </span>\n ) : null}\n </span>\n </button>\n ))}\n </div>\n </section>\n ))\n )}\n </div>\n </div>\n </Dialog.Content>\n </Dialog.Root>\n );\n },\n);\n\nWidgetPicker.displayName = 'WidgetPicker';\n"],"names":["widgetPickerAgent","handle","args","tileVariants","cva","WidgetPicker","forwardRef","open","onOpenChange","items","onPick","title","id","ref","t","useTranslation","query","setQuery","useState","useEffect","filtered","useMemo","needle","item","groups","order","key","group","g","handlePick","useCallback","itemId","agentHandle","entry","useImperativeHandle","useAgentRegistration","Dialog","jsx","jsxs","TextInput","Search","event","Badge"],"mappings":"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"}
|
package/dist/agent-catalog.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"packageVersion": "1.54.
|
|
3
|
+
"packageVersion": "1.54.3",
|
|
4
4
|
"components": [
|
|
5
5
|
{
|
|
6
6
|
"kind": "component",
|
|
@@ -19019,6 +19019,10 @@
|
|
|
19019
19019
|
{
|
|
19020
19020
|
"component": "button",
|
|
19021
19021
|
"as": "support"
|
|
19022
|
+
},
|
|
19023
|
+
{
|
|
19024
|
+
"component": "button",
|
|
19025
|
+
"as": "custom"
|
|
19022
19026
|
}
|
|
19023
19027
|
],
|
|
19024
19028
|
"workflows": [
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as e, a as n, p, u as s } from "../../_chunks/use-appointment-details-read-
|
|
1
|
+
import { A as e, a as n, p, u as s } from "../../_chunks/use-appointment-details-read-B6dBBgDa.js";
|
|
2
2
|
export {
|
|
3
3
|
e as AppointmentDetailsPanel,
|
|
4
4
|
n as appointmentDetailsPanelAgent,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as m } from "../../_chunks/bmi-calculator-
|
|
1
|
+
import { B as m } from "../../_chunks/bmi-calculator-CDmQk0b5.js";
|
|
2
2
|
import { b as e, a as t, c as r, d as T, e as c, f as i, i as b, k as n, l as f } from "../../_chunks/bmi-BxD-tFzU.js";
|
|
3
3
|
export {
|
|
4
4
|
m as BmiCalculator,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as r, E as l, T as t, a as s, b as d, c as o, d as n, e as i, f as R, i as C, g as T } from "../../_chunks/data-table-
|
|
1
|
+
import { D as r, E as l, T as t, a as s, b as d, c as o, d as n, e as i, f as R, i as C, g as T } from "../../_chunks/data-table-BErtJzaT.js";
|
|
2
2
|
import { B as g, C as D, a as b, E as x, b as c, R as p, T as u, c as m, r as E, u as f } from "../../_chunks/editable-currency-cell-renderer-CfFp_1hI.js";
|
|
3
3
|
import { D as h, a as A, b as w, I as y, L as I, N as L, c as N, S as P, d as W, e as B, T as U, f as _, g as k, U as v } from "../../_chunks/link-cell-renderer-D-xv2HMS.js";
|
|
4
4
|
import { A as X, a as j } from "../../_chunks/actions-cell-renderer-CjzSqMgn.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as e } from "../../_chunks/due-date-calculator-
|
|
1
|
+
import { D as e } from "../../_chunks/due-date-calculator-mDvGKmRV.js";
|
|
2
2
|
import { C as r, a as o, D, G as _, M as T, T as M, c as E, b as l, g as C, p as A, r as N, d as i, t as n } from "../../_chunks/antenatal-schedule-timeline-BZzgjfyd.js";
|
|
3
3
|
export {
|
|
4
4
|
r as CRL_DATING_MAX_MM,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as e, F as o, a as n, b as A, c as i, d as f, e as t, I, f as N, g as T, h as F, i as _, j as E, k as c, l as h, m as r, n as p, o as O, p as S, q as m, r as l, s as d, t as C, u as D } from "../../_chunks/face-scheme-
|
|
1
|
+
import { A as e, F as o, a as n, b as A, c as i, d as f, e as t, I, f as N, g as T, h as F, i as _, j as E, k as c, l as h, m as r, n as p, o as O, p as S, q as m, r as l, s as d, t as C, u as D } from "../../_chunks/face-scheme-Doodi6A6.js";
|
|
2
2
|
export {
|
|
3
3
|
e as ANNOTATION_TOOL_KIND,
|
|
4
4
|
o as FACE_ANNOTATION_TOOLS,
|
|
@@ -15,6 +15,11 @@ export interface FormFieldContextShape {
|
|
|
15
15
|
* `useFormFieldControlId`.
|
|
16
16
|
*/
|
|
17
17
|
registerControlId?: (controlId: string) => () => void;
|
|
18
|
+
/**
|
|
19
|
+
* A control shows a short note under the field, e.g. that a paste was
|
|
20
|
+
* refused; `undefined` removes it. The control announces it itself.
|
|
21
|
+
*/
|
|
22
|
+
setNotice?: (notice: string | undefined) => void;
|
|
18
23
|
}
|
|
19
24
|
export declare const FormFieldContext: import("react").Context<FormFieldContextShape | null>;
|
|
20
25
|
export declare function useFormField(): FormFieldContextShape;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-field-context.d.ts","sourceRoot":"","sources":["../../../src/components/form-field/form-field-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzE,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"form-field-context.d.ts","sourceRoot":"","sources":["../../../src/components/form-field/form-field-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzE,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,IAAI,CAAC;IACtD;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CAClD;AAED,eAAO,MAAM,gBAAgB,uDAE5B,CAAC;AAEF,wBAAgB,YAAY,IAAI,qBAAqB,CAiBpD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,qBAAqB,EAC1B,EAAE,CAAC,EAAE,MAAM,GACV,MAAM,CAKR;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,qBAAqB,EAC1B,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GACjC,IAAI,CAMN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-field.d.ts","sourceRoot":"","sources":["../../../src/components/form-field/form-field.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AACf,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAQlE,QAAA,MAAM,aAAa;;;8EAgBjB,CAAC;AAcH,KAAK,iBAAiB,GAClB;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,GACxC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7C,UAAU,kBACR,SACE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,EAChD,IAAI,CAAC,YAAY,CAAC,OAAO,aAAa,CAAC,EAAE,UAAU,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AAEpE,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"form-field.d.ts","sourceRoot":"","sources":["../../../src/components/form-field/form-field.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AACf,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAQlE,QAAA,MAAM,aAAa;;;8EAgBjB,CAAC;AAcH,KAAK,iBAAiB,GAClB;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,GACxC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7C,UAAU,kBACR,SACE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,EAChD,IAAI,CAAC,YAAY,CAAC,OAAO,aAAa,CAAC,EAAE,UAAU,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;AAEpE,eAAO,MAAM,SAAS,2GAyMrB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as s, C as l, N as n, P as t, a as C, T as i, b as o, g as T, u as p } from "../../_chunks/balance-badge-cell-
|
|
1
|
+
import { B as s, C as l, N as n, P as t, a as C, T as i, b as o, g as T, u as p } from "../../_chunks/balance-badge-cell-C5hmahoB.js";
|
|
2
2
|
export {
|
|
3
3
|
s as BalanceBadgeCell,
|
|
4
4
|
l as CarePlanStatusCell,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P as n, R as s, T as i, a as g, p as r, r as t } from "../../_chunks/pregnancy-weight-gain-
|
|
1
|
+
import { P as n, R as s, T as i, a as g, p as r, r as t } from "../../_chunks/pregnancy-weight-gain-DMVPvM3a.js";
|
|
2
2
|
export {
|
|
3
3
|
n as PregnancyWeightGain,
|
|
4
4
|
s as RATE_BANDS,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as i, r as o, w as a } from "../../_chunks/rich-text-editor-
|
|
2
|
-
import { k as s } from "../../_chunks/kit-extensions-
|
|
1
|
+
import { R as i, r as o, w as a } from "../../_chunks/rich-text-editor-DmnWavgl.js";
|
|
2
|
+
import { k as s } from "../../_chunks/kit-extensions-GQHKTLWI.js";
|
|
3
3
|
export {
|
|
4
4
|
i as RichTextEditor,
|
|
5
5
|
s as kitEditorExtensions,
|
|
@@ -26,6 +26,19 @@ export interface TextInputProps extends Omit<InputHTMLAttributes<HTMLInputElemen
|
|
|
26
26
|
onChange?: (event: ChangeEvent<HTMLInputElement>) => void;
|
|
27
27
|
onCompositionStart?: (event: CompositionEvent<HTMLInputElement>) => void;
|
|
28
28
|
onCompositionEnd?: (event: CompositionEvent<HTMLInputElement>) => void;
|
|
29
|
+
/**
|
|
30
|
+
* Refuses paste and drop, so the user types the value, e.g. in a
|
|
31
|
+
* confirm field. Default false. Autofill from the browser or a password
|
|
32
|
+
* manager still works: it fills without pasting. A refusal is announced,
|
|
33
|
+
* and shown under the field inside a `FormField`.
|
|
34
|
+
*/
|
|
35
|
+
blockPaste?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Refuses copy, cut and dragging text out. Default false. Browsers
|
|
38
|
+
* already refuse to copy from a password field while it is hidden. A
|
|
39
|
+
* refusal is announced, and shown under the field inside a `FormField`.
|
|
40
|
+
*/
|
|
41
|
+
blockCopy?: boolean;
|
|
29
42
|
}
|
|
30
43
|
export declare const TextInput: import("react").ForwardRefExoticComponent<TextInputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
31
44
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text-input.d.ts","sourceRoot":"","sources":["../../../src/components/text-input/text-input.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"text-input.d.ts","sourceRoot":"","sources":["../../../src/components/text-input/text-input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,WAAW,EAEhB,KAAK,gBAAgB,EAGrB,KAAK,mBAAmB,EAExB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAelE;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAaD,QAAA,MAAM,aAAa;;;;;8EA0ClB,CAAC;AAKF,MAAM,WAAW,cACf,SACE,IAAI,CACF,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,GAAG,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CAChE,EACD,IAAI,CAAC,YAAY,CAAC,OAAO,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3D,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC1D,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACzE,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACvE;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,SAAS,6GAkUrB,CAAC"}
|
|
@@ -45,8 +45,9 @@ export interface UseFieldMatchReturn {
|
|
|
45
45
|
* password with confirm password. It compares the values and says when
|
|
46
46
|
* to show the message; `FormField` shows and announces it.
|
|
47
47
|
*
|
|
48
|
-
* It
|
|
49
|
-
*
|
|
48
|
+
* It does not block paste, copy or drop itself. A host that wants the
|
|
49
|
+
* confirm field typed sets `blockPaste` on that input (any field built
|
|
50
|
+
* on `TextInput` takes it); password managers still fill both fields.
|
|
50
51
|
*
|
|
51
52
|
* @example
|
|
52
53
|
* const match = useFieldMatch({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-field-match.d.ts","sourceRoot":"","sources":["../../src/hooks/use-field-match.ts"],"names":[],"mappings":"AAGA,iFAAiF;AACjF,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,IAAI,EAAE,cAAc,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,6CAA6C;IAC7C,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;CACtC;AAOD
|
|
1
|
+
{"version":3,"file":"use-field-match.d.ts","sourceRoot":"","sources":["../../src/hooks/use-field-match.ts"],"names":[],"mappings":"AAGA,iFAAiF;AACjF,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,IAAI,EAAE,cAAc,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;OAMG;IACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,6CAA6C;IAC7C,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;CACtC;AAOD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,YAAY,EACZ,IAAI,EACJ,SAAiB,EACjB,SAAS,GACV,EAAE,oBAAoB,GAAG,mBAAmB,CA4B5C"}
|
|
@@ -571,6 +571,10 @@ export declare const arUi: {
|
|
|
571
571
|
readonly permissionMatrix: {
|
|
572
572
|
readonly locked: "مقفل";
|
|
573
573
|
};
|
|
574
|
+
readonly clipboard: {
|
|
575
|
+
readonly pasteBlocked: "اللصق معطّل لهذا الحقل. يُرجى كتابته يدويًا.";
|
|
576
|
+
readonly copyBlocked: "النسخ معطّل لهذا الحقل.";
|
|
577
|
+
};
|
|
574
578
|
readonly iban: {
|
|
575
579
|
readonly placeholder: "IT60X0542811101000000123456";
|
|
576
580
|
readonly formatHint: "حتى 34 حرفاً — رمز البلد وأرقام التحقق ورقم الحساب";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ar.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/ar.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,IAAI
|
|
1
|
+
{"version":3,"file":"ar.d.ts","sourceRoot":"","sources":["../../../src/i18n/locales/ar.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA47KP,CAAC"}
|
package/dist/i18n/locales/ar.js
CHANGED
|
@@ -558,6 +558,10 @@ const e = {
|
|
|
558
558
|
permissionMatrix: {
|
|
559
559
|
locked: "مقفل"
|
|
560
560
|
},
|
|
561
|
+
clipboard: {
|
|
562
|
+
pasteBlocked: "اللصق معطّل لهذا الحقل. يُرجى كتابته يدويًا.",
|
|
563
|
+
copyBlocked: "النسخ معطّل لهذا الحقل."
|
|
564
|
+
},
|
|
561
565
|
iban: {
|
|
562
566
|
placeholder: "IT60X0542811101000000123456",
|
|
563
567
|
formatHint: "حتى 34 حرفاً — رمز البلد وأرقام التحقق ورقم الحساب",
|